tests: Replace Stream.objects.get() with get_stream().

This should have a slight perf benefit from using caching, and also in
some cases cleans up the code a bit.

Fixes #3284.
This commit is contained in:
Raghav Jajodia
2017-01-13 20:20:17 +05:30
committed by Tim Abbott
parent 46ffafab7d
commit c8451097be
3 changed files with 29 additions and 28 deletions

View File

@@ -63,7 +63,7 @@ class TopicHistoryTest(ZulipTestCase):
self.login(email)
user_profile = get_user_profile_by_email(email)
stream = Stream.objects.get(name=stream_name)
stream = get_stream(stream_name, user_profile.realm)
recipient = get_recipient(Recipient.STREAM, stream.id)
def create_test_message(topic, read, starred=False):

View File

@@ -61,7 +61,7 @@ def get_recipient_id_for_stream_name(realm, stream_name):
def mute_stream(realm, user_profile, stream_name):
# type: (Realm, Text, Text) -> None
stream = Stream.objects.get(realm=realm, name=stream_name)
stream = get_stream(stream_name, realm)
recipient = Recipient.objects.get(type_id=stream.id, type=Recipient.STREAM)
subscription = Subscription.objects.get(recipient=recipient, user_profile=user_profile)
subscription.in_home_view = False

View File

@@ -120,7 +120,7 @@ class StreamAdminTest(ZulipTestCase):
'stream_name': ujson.dumps('private_stream'),
'is_private': ujson.dumps(False)
}
stream_id = Stream.objects.get(realm=user_profile.realm, name='private_stream').id
stream_id = get_stream('private_stream', user_profile.realm).id
result = self.client_patch("/json/streams/%d" % (stream_id,), params)
self.assert_json_error(result, 'You are not invited to this stream.')
@@ -135,7 +135,7 @@ class StreamAdminTest(ZulipTestCase):
self.assert_json_success(result)
realm = user_profile.realm
stream = Stream.objects.get(name='private_stream', realm=realm)
stream = get_stream('private_stream', realm)
self.assertFalse(stream.invite_only)
def test_make_stream_private(self):
@@ -151,10 +151,10 @@ class StreamAdminTest(ZulipTestCase):
'stream_name': ujson.dumps('public_stream'),
'is_private': ujson.dumps(True)
}
stream_id = Stream.objects.get(realm=user_profile.realm, name='public_stream').id
stream_id = get_stream('public_stream', realm).id
result = self.client_patch("/json/streams/%d" % (stream_id,), params)
self.assert_json_success(result)
stream = Stream.objects.get(name='public_stream', realm=realm)
stream = get_stream('public_stream', realm)
self.assertTrue(stream.invite_only)
def test_deactivate_stream_backend(self):
@@ -190,10 +190,11 @@ class StreamAdminTest(ZulipTestCase):
def test_deactivate_stream_backend_requires_realm_admin(self):
# type: () -> None
email = 'hamlet@zulip.com'
user_profile = get_user_profile_by_email(email)
self.login(email)
self.subscribe_to_stream(email, 'new_stream')
stream_id = Stream.objects.get(name='new_stream').id
stream_id = get_stream('new_stream', user_profile.realm).id
result = self.client_delete('/json/streams/%d' % (stream_id,))
self.assert_json_error(result, 'Must be a realm administrator')
@@ -211,7 +212,7 @@ class StreamAdminTest(ZulipTestCase):
events = [] # type: List[Dict[str, Any]]
with tornado_redirected_to_list(events):
stream_id = Stream.objects.get(name='private_stream').id
stream_id = get_stream('private_stream', user_profile.realm).id
result = self.client_patch('/json/streams/%d' % (stream_id,),
{'description': ujson.dumps('Test description')})
self.assert_json_success(result)
@@ -226,7 +227,7 @@ class StreamAdminTest(ZulipTestCase):
events = []
with tornado_redirected_to_list(events):
stream_id = Stream.objects.get(name='private_stream').id
stream_id = get_stream('private_stream', user_profile.realm).id
result = self.client_patch('/json/streams/%d' % (stream_id,),
{'new_name': ujson.dumps('whatever')})
self.assert_json_success(result)
@@ -247,7 +248,7 @@ class StreamAdminTest(ZulipTestCase):
events = [] # type: List[Dict[str, Any]]
with tornado_redirected_to_list(events):
stream_id = Stream.objects.get(name='stream_name1').id
stream_id = get_stream('stream_name1', user_profile.realm).id
result = self.client_patch('/json/streams/%d' % (stream_id,),
{'new_name': ujson.dumps('stream_name2')})
self.assert_json_success(result)
@@ -319,10 +320,11 @@ class StreamAdminTest(ZulipTestCase):
def test_rename_stream_requires_realm_admin(self):
# type: () -> None
email = 'hamlet@zulip.com'
user_profile = get_user_profile_by_email(email)
self.login(email)
self.make_stream('stream_name1')
stream_id = Stream.objects.get(name='stream_name1').id
stream_id = get_stream('stream_name1', user_profile.realm).id
result = self.client_patch('/json/streams/%d' % (stream_id,),
{'new_name': ujson.dumps('stream_name2')})
self.assert_json_error(result, 'Must be a realm administrator')
@@ -338,7 +340,7 @@ class StreamAdminTest(ZulipTestCase):
events = [] # type: List[Dict[str, Any]]
with tornado_redirected_to_list(events):
stream_id = Stream.objects.get(realm=realm, name='stream_name1').id
stream_id = get_stream('stream_name1', realm).id
result = self.client_patch('/json/streams/%d' % (stream_id,),
{'description': ujson.dumps('Test description')})
self.assert_json_success(result)
@@ -353,10 +355,7 @@ class StreamAdminTest(ZulipTestCase):
))
notified_user_ids = set(events[0]['users'])
stream = Stream.objects.get(
name='stream_name1',
realm=realm,
)
stream = get_stream('stream_name1', realm)
self.assertEqual(notified_user_ids, set(active_user_ids(realm)))
self.assertIn(user_profile.id,
notified_user_ids)
@@ -374,7 +373,7 @@ class StreamAdminTest(ZulipTestCase):
self.subscribe_to_stream(email, 'stream_name1')
do_change_is_admin(user_profile, False)
stream_id = Stream.objects.get(realm=user_profile.realm, name='stream_name1').id
stream_id = get_stream('stream_name1', user_profile.realm).id
result = self.client_patch('/json/streams/%d' % (stream_id,),
{'description': ujson.dumps('Test description')})
self.assert_json_error(result, 'Must be a realm administrator')
@@ -430,7 +429,7 @@ class StreamAdminTest(ZulipTestCase):
# A deleted stream's name is changed, is deactivated, is invite-only,
# and has no subscribers.
deactivated_stream_name = "!DEACTIVATED:" + active_name
deactivated_stream = Stream.objects.get(name=deactivated_stream_name)
deactivated_stream = get_stream(deactivated_stream_name, realm)
self.assertTrue(deactivated_stream.deactivated)
self.assertTrue(deactivated_stream.invite_only)
self.assertEqual(deactivated_stream.name, deactivated_stream_name)
@@ -1155,7 +1154,7 @@ class SubscriptionAPITest(ZulipTestCase):
self.assertIsInstance(stream['invite_only'], bool)
# check that the stream name corresponds to an actual stream
try:
Stream.objects.get(name__iexact=stream['name'], realm=self.realm)
get_stream(stream['name'], self.realm)
except Stream.DoesNotExist:
self.fail("stream does not exist")
list_streams = [stream['name'] for stream in json["subscriptions"]]
@@ -1223,7 +1222,7 @@ class SubscriptionAPITest(ZulipTestCase):
other_params = {
'announce': 'true',
}
notifications_stream = Stream.objects.get(name=self.streams[0], realm=self.realm)
notifications_stream = get_stream(self.streams[0], self.realm)
self.realm.notifications_stream = notifications_stream
self.realm.save()
@@ -1273,7 +1272,7 @@ class SubscriptionAPITest(ZulipTestCase):
current_stream = self.get_streams(invitee)[0]
invite_streams = self.make_random_stream_names([current_stream])[:1]
notifications_stream = Stream.objects.get(name=current_stream, realm=self.realm)
notifications_stream = get_stream(current_stream, self.realm)
self.realm.notifications_stream = notifications_stream
self.realm.save()
@@ -1347,7 +1346,7 @@ class SubscriptionAPITest(ZulipTestCase):
invitee_full_name = 'Iago'
current_stream = self.get_streams(invitee)[0]
notifications_stream = Stream.objects.get(name=current_stream, realm=self.realm)
notifications_stream = get_stream(current_stream, self.realm)
self.realm.notifications_stream = notifications_stream
self.realm.save()
@@ -1445,7 +1444,7 @@ class SubscriptionAPITest(ZulipTestCase):
'**invite-only** ' if invite_only else '',
streams[0]))
if not Stream.objects.get(name=streams[0]).invite_only:
if not get_stream(streams[0], other_profile.realm).invite_only:
expected_msg += ("\nYou can see historical content on a "
"non-invite-only stream by narrowing to it.")
self.assertEqual(msg.content, expected_msg)
@@ -1892,7 +1891,7 @@ class SubscriptionAPITest(ZulipTestCase):
def get_subscription(self, user_profile, stream_name):
# type: (UserProfile, Text) -> Subscription
stream = Stream.objects.get(realm=self.realm, name=stream_name)
stream = get_stream(stream_name, self.realm)
return Subscription.objects.get(
user_profile=user_profile,
recipient__type=Recipient.STREAM,
@@ -2080,6 +2079,7 @@ class InviteOnlyStreamTest(ZulipTestCase):
# Inviting another user to an invite-only stream is allowed
email = 'hamlet@zulip.com'
user_profile = get_user_profile_by_email(email)
self.login(email)
result = self.common_subscribe_to_streams(
email, [stream_name],
@@ -2090,7 +2090,7 @@ class InviteOnlyStreamTest(ZulipTestCase):
self.assertEqual(json["already_subscribed"], {})
# Make sure both users are subscribed to this stream
stream_id = Stream.objects.get(name=stream_name).id
stream_id = get_stream(stream_name, user_profile.realm).id
result = self.client_get("/api/v1/streams/%d/members" % (stream_id,),
**self.api_auth(email))
self.assert_json_success(result)
@@ -2132,7 +2132,7 @@ class GetSubscribersTest(ZulipTestCase):
def make_successful_subscriber_request(self, stream_name):
# type: (Text) -> None
stream_id = Stream.objects.get(name=stream_name).id
stream_id = get_stream(stream_name, self.user_profile.realm).id
result = self.make_subscriber_request(stream_id)
self.assert_json_success(result)
self.check_well_formed_result(ujson.loads(result.content),
@@ -2283,7 +2283,7 @@ class GetSubscribersTest(ZulipTestCase):
also returns the list of subscribers for a stream.
"""
stream_name = gather_subscriptions(self.user_profile)[0][0]['name']
stream_id = Stream.objects.get(realm=self.user_profile.realm, name=stream_name).id
stream_id = get_stream(stream_name, self.user_profile.realm).id
expected_subscribers = gather_subscriptions(self.user_profile)[0][0]['subscribers']
result = self.client_get("/json/streams/%d/members" % (stream_id,))
self.assert_json_success(result)
@@ -2306,9 +2306,10 @@ class GetSubscribersTest(ZulipTestCase):
self.common_subscribe_to_streams(self.email, [stream_name],
invite_only=True)
other_email = "othello@zulip.com"
user_profile = get_user_profile_by_email(other_email)
# Try to fetch the subscriber list as a non-member.
stream_id = Stream.objects.get(name=stream_name).id
stream_id = get_stream(stream_name, user_profile.realm).id
result = self.make_subscriber_request(stream_id, email=other_email)
self.assert_json_error(result,
"Unable to retrieve subscribers for invite-only stream")