def setUp(self): super(CreateGroupCmdTest, self).setUp() self.sms_fields = ['#create', 'group_name', 'group_code', '*****@*****.**'] self.from_number = '0123456789' self.cmd = CreateGroupCmd(self.sms_fields[0])
class CreateGroupCmdTest(NoMMTestCase): def setUp(self): super(CreateGroupCmdTest, self).setUp() self.sms_fields = ['#create', 'group_name', 'group_code', '*****@*****.**'] self.from_number = '0123456789' self.cmd = CreateGroupCmd(self.sms_fields[0]) def test_valid_create_group_cmd(self): response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue(response.find('Success') != -1, 'Success response not returned') groups = Group.objects.all() self.assertTrue(len(groups) == 1, 'Incorrect number of groups after single #create cmd') g = groups[0] self.assertEqual(g.name, self.sms_fields[1], 'Group has incorrect name') self.assertEqual(g.code, self.sms_fields[2], 'Group has incorrect code') # test that we've successfully created a valid email object associated # with the group email = self.sms_fields[3] email_objs = g.emails.all() self.assertTrue(len(email_objs) == 1, 'Group has incorrect number of emails') self.assertTrue(email_objs[0].email == email, 'Group has incorrect email') # test that the user associated with the email is also associated with # that valid email object user = CustomUser.objects.get(email=email) email_set = user.email_set.all() self.assertTrue(len(email_set) == 1, 'User has incorrect number of emails') self.assertTrue(email_set[0].id == email_objs[0].id, "User's email is incorrect") # this test is probably redundant, but nonetheless: 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 == g.name, "User's group is incorrect") def test_group_name_not_allowed(self): self.sms_fields[1] = 'word1 word2' response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue((response.find('name') != -1) and (response.find('may only contain') != -1), 'Group-name-not-allowed response not returned') groups = Group.objects.all() self.assertTrue(len(groups) == 0, "There exists a group with a name that's not allowed") def test_group_code_not_allowed(self): self.sms_fields[2] = 'word1 word2' response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue((response.find('code') != -1) and (response.find('may only contain') != -1), 'Group-code-not-allowed response not returned') groups = Group.objects.all() self.assertTrue(len(groups) == 0, "There exists a group with a code that's not allowed") def test_group_name_too_long(self): self.sms_fields[1] = ''.join(['*' for i in range(Group.MAX_LEN + 1)]) response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue((response.find('name') != -1) and (response.find('too long') != -1), 'Group-name-too-long response not returned') groups = Group.objects.all() self.assertTrue(len(groups) == 0, "There exists a group with a name that's too long") def test_group_code_too_long(self): self.sms_fields[2] = ''.join(['*' for i in range(Group.MAX_LEN + 1)]) response = str(self.cmd.execute(self.sms_fields, self.from_number)) self.assertTrue((response.find('code') != -1) and (response.find('too long') != -1), 'Group-code-too-long response not returned') groups = Group.objects.all() self.assertTrue(len(groups) == 0, "There exists a group with a code that's too long") def test_group_already_exists(self): self.test_valid_create_group_cmd() # create a valid user in db self.sms_fields[3] = 'a' + self.sms_fields[3] # new user needs a distinct email response = str(self.cmd.execute(self.sms_fields, self.from_number[::-1])) self.assertTrue((response.find('group') != -1) and (response.find('already exists') != -1), 'Group-already-exists response not returned') groups = Group.objects.all() self.assertTrue(len(groups) == 1, 'There exists two groups with the same name')