Add create_streams_if_needed().

This commit is contained in:
Steve Howell
2016-09-15 07:22:09 -07:00
committed by Tim Abbott
parent e8119b175d
commit 8776cc0e35
2 changed files with 42 additions and 1 deletions

View File

@@ -805,6 +805,21 @@ def create_stream_if_needed(realm, stream_name, invite_only=False):
send_event(event, active_user_ids(realm))
return stream, created
def create_streams_if_needed(realm, stream_names, invite_only):
# type: (Realm, List[text_type], bool) -> Tuple[List[Stream], List[Stream]]
added_streams = [] # type: List[Stream]
existing_streams = [] # type: List[Stream]
for stream_name in stream_names:
stream, created = create_stream_if_needed(realm,
stream_name,
invite_only=invite_only)
if created:
added_streams.append(stream)
else:
existing_streams.append(stream)
return added_streams, existing_streams
def recipient_for_emails(emails, not_forged_mirror_message,
user_profile, sender):
# type: (Iterable[text_type], bool, UserProfile, UserProfile) -> Recipient

View File

@@ -35,7 +35,8 @@ from zerver.lib.actions import (
do_create_realm, do_remove_default_stream, do_set_realm_create_stream_by_admins_only,
gather_subscriptions_helper,
gather_subscriptions, get_default_streams_for_realm, get_realm, get_stream,
get_user_profile_by_email, set_default_streams, get_subscription
get_user_profile_by_email, set_default_streams, get_subscription,
create_streams_if_needed
)
from zerver.views.streams import (
@@ -50,6 +51,31 @@ import six
from six import text_type
from six.moves import range, urllib
class TestCreateStreams(ZulipTestCase):
def test_creating_streams(self):
# type: () -> None
stream_names = [u'new1', u'new2', u'new3']
realm = get_realm('zulip.com')
new_streams, existing_streams = create_streams_if_needed(
realm,
stream_names,
invite_only=True)
self.assertEqual(len(new_streams), 3)
self.assertEqual(len(existing_streams), 0)
actual_stream_names = {stream.name for stream in new_streams}
self.assertEqual(actual_stream_names, set(stream_names))
new_streams, existing_streams = create_streams_if_needed(
realm,
stream_names,
invite_only=True)
self.assertEqual(len(new_streams), 0)
self.assertEqual(len(existing_streams), 3)
actual_stream_names = {stream.name for stream in existing_streams}
self.assertEqual(actual_stream_names, set(stream_names))
class StreamAdminTest(ZulipTestCase):
def test_make_stream_public(self):