def setUp(self): super(JoinGroupCmdTest, self).setUp() self.sms_fields = ['#create', 'group_name', 'group_code', '*****@*****.**'] self.from_number = '0123456789' self.group_creator = create_test_user('*****@*****.**', phone_number='8888888888') self.group = create_test_group(self.group_creator.email, self.sms_fields[1], self.sms_fields[2]) self.cmd = JoinGroupCmd(self.sms_fields[0])
class JoinGroupCmdTest(NoMMTestCase): def setUp(self): super(JoinGroupCmdTest, self).setUp() self.sms_fields = ['#create', 'group_name', 'group_code', '*****@*****.**'] self.from_number = '0123456789' self.group_creator = create_test_user('*****@*****.**', phone_number='8888888888') self.group = create_test_group(self.group_creator.email, self.sms_fields[1], self.sms_fields[2]) self.cmd = JoinGroupCmd(self.sms_fields[0]) def test_valid_join_group_cmd(self): response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue(response.find('Success') != -1, 'Success response not returned') user = CustomUser.objects.get(email=self.sms_fields[3]) email_objs = self.group.emails.all() # test that the group has 2 emails: the creator's and the new joiner's self.assertTrue(len(email_objs) == 2, 'Group has incorrect number of emails') self.assertTrue((email_objs[0].email == user.email) or (email_objs[1].email == user.email), \ "Group doesn't have newly joined member's email") self.assertTrue((email_objs[0].email == self.group_creator.email) or (email_objs[1].email == self.group_creator.email), \ "Group doesn't have original creator's email") # test that the user has the proper number of memberships memberships = user.get_memberships() self.assertTrue(len(memberships) == 1, 'User has incorrect number of memberships') self.assertTrue(memberships[0].name == self.group.name, "User's group is incorrect") def test_group_does_not_exist(self): self.sms_fields[1] = 'doesnt_exist' response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue((response.find('group') != -1) and (response.find('does not exist') != -1), 'Group-does-not-exist response not returned') user = CustomUser.objects.get(email=self.sms_fields[3]) email_objs = self.group.emails.all() # ensure the group has 1 email: the creator's self.assertTrue(len(email_objs) == 1, 'Group has incorrect number of emails') self.assertTrue(email_objs[0].email == self.group_creator.email, "Group doesn't have original creator's email") # ensure the user isn't in the group self.assertTrue(len(user.get_memberships()) == 0, 'User has incorrect number of memberships') def test_group_code_incorrect(self): self.sms_fields[2] = 'incorrect_code' response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue((response.find('code') != -1) and (response.find('not correct') != -1), 'Incorrect-code response not returned') user = CustomUser.objects.get(email=self.sms_fields[3]) email_objs = self.group.emails.all() # ensure the group has 1 email: the creator's self.assertTrue(len(email_objs) == 1, 'Group has incorrect number of emails') self.assertTrue(email_objs[0].email == self.group_creator.email, "Group doesn't have original creator's email") # ensure the user isn't in the group self.assertTrue(len(user.get_memberships()) == 0, 'User has incorrect number of memberships') def test_already_a_member(self): self.cmd.execute(self.sms_fields, self.from_number) response = str(self.cmd.execute(self.sms_fields, self.from_number)) # we no longer complain if a user tries to join a group he's already joined self.assertTrue(response.find('Success') != -1, 'Returned failure when user joined group where he was already a member.') user = CustomUser.objects.get(email=self.sms_fields[3]) email_objs = self.group.emails.all() # test that the group has exactly 2 emails: the creator's and the new joiner's self.assertTrue(len(email_objs) == 2, 'Group has incorrect number of emails') self.assertTrue((email_objs[0].email == user.email) or (email_objs[1].email == user.email), \ "Group doesn't have newly joined member's email") self.assertTrue((email_objs[0].email == self.group_creator.email) or (email_objs[1].email == self.group_creator.email), \ "Group doesn't have original creator's email") # test that the user has the proper number of memberships memberships = user.get_memberships() self.assertTrue(len(memberships) == 1, 'User has incorrect number of memberships') self.assertTrue(memberships[0].name == self.group.name, "User's group is incorrect")