def create_group_with_email_members(self, number=5): emails = ['test_{}@email.com'.format(str(i)) for i in range(number)] data = {'name': 'Emails group'} for i in range(len(emails)): data['emails_{}'.format(str(i))] = emails[i] form = GroupForm(owner=self.create_owner(), data=data) return {'group': form.save(), 'emails': emails}
def test_form_validation_for_valid_data_email_no_members(self): form = GroupForm(owner=self.create_owner(), data={ 'name': 'Household expenses', 'contacts': [], 'emails_0': '*****@*****.**', }) self.assertTrue(form.is_valid())
def test_form_validation_for_bad_email(self): form = GroupForm(owner=self.create_owner(), data={ 'name': 'Household expenses', 'emails_0': 'not_an_email', }) self.assertFalse(form.is_valid())
def test_form_validation_for_blank_group_name(self): form = GroupForm(owner=self.create_owner(), data={ 'name': '', 'contacts': self.create_member_ids() }) self.assertFalse(form.is_valid())
def test_form_save_does_not_recreate_existing_users_by_email(self): existing_users = self.create_users() form = GroupForm(owner=self.create_owner(), data={ 'name': 'Duplicate existing members', 'emails_0': '*****@*****.**', }) form.save() self.assertListEqual(list(User.objects.exclude(username='******')), existing_users)
def test_form_renders_email_input(self): form = GroupForm(owner=self.create_owner()) self.assertIn('placeholder="Email address"', form.as_p()) for i in range(5): self.assertIn( 'id="input_emails_{}'.format(str(i)), form.as_p() )
def test_form_save_does_not_recreate_existing_users_by_email(self): existing_users = self.create_users() form = GroupForm(owner=self.create_owner(), data={ 'name': 'Duplicate existing members', 'emails_0': '*****@*****.**', }) form.save() self.assertListEqual( list(User.objects.exclude(username='******')), existing_users)
def test_form_renders_only_fellow_group_members_as_member_input(self): contacts = self.create_users() owner = User.objects.create_user(username='******') members = list(contacts) members.append(owner) other_group = Group.objects.create(name="Other") other_group.user_set.add(*members) not_contact = User.objects.create_user(username='******') form = GroupForm(owner=owner) for contact in contacts: self.assertIn(contact.username, form.as_p()) self.assertNotIn(not_contact.username, form.as_p())
def test_form_validation_for_no_members_and_no_email(self): form = GroupForm(owner=self.create_owner(), data={ 'name': 'Household expenses', 'contacts': [], 'emails_0': '', 'emails_1': '', 'emails_2': '', 'emails_3': '', 'emails_4': '', }) self.assertFalse(form.is_valid()) self.assertRaises(ValidationError, form.clean)
def test_form_save_adds_owner_as_member(self): owner = self.create_owner() members = self.create_users() gang = list(members) gang.append(owner) other_group = Group.objects.create(name="Other") other_group.user_set.add(*gang) member_ids = [member.id for member in members] form = GroupForm(owner=owner, data={ 'name': 'Household expenses', 'contacts': member_ids, }) group = form.save() self.assertIn(owner, group.user_set.all())
def test_form_save_adds_members_to_group(self): owner = self.create_owner() members = self.create_users() gang = list(members) gang.append(owner) other_group = Group.objects.create(name="Other") other_group.user_set.add(*gang) member_ids = [member.id for member in members] form = GroupForm(owner=owner, data={ 'name': 'Household expenses', 'contacts': member_ids, }) group = form.save() self.assertEqual(list(group.user_set.exclude(username='******')), members)
def test_form_validation_for_no_members_and_no_email(self): form = GroupForm(owner=self.create_owner(), data={ 'name': 'Household expenses', 'contacts': [], 'emails_0': '', 'emails_1': '', 'emails_2': '', 'emails_3': '', 'emails_4': '', }) self.assertFalse(form.is_valid()) self.assertRaises( ValidationError, form.clean )
def test_form_save_adds_members_to_group(self): owner = self.create_owner() members = self.create_users() gang = list(members) gang.append(owner) other_group = Group.objects.create(name="Other") other_group.user_set.add(*gang) member_ids = [member.id for member in members] form = GroupForm(owner=owner, data={ 'name': 'Household expenses', 'contacts': member_ids, }) group = form.save() self.assertEqual( list(group.user_set.exclude(username='******')), members)
def test_form_validation_for_valid_data_members_and_email(self): owner = self.create_owner() members = self.create_users(3) gang = list(members) gang.append(owner) other_group = Group.objects.create(name="Other") other_group.user_set.add(*gang) form = GroupForm(owner=owner, data={ 'name': 'Household expenses', 'contacts': [member.id for member in members], 'emails_0': '*****@*****.**', 'emails_1': '*****@*****.**', 'emails_2': '*****@*****.**', 'emails_3': '*****@*****.**', 'emails_4': '*****@*****.**', }) self.assertTrue(form.is_valid())
def new_group(request): group_form = None quits_group_form = None user = request.user if request.method == 'POST': members = [id_ for id_ in request.POST.getlist('contacts')] group_data = { 'name': request.POST['name'], 'contacts': members, } emails = [] for i in range(5): key = 'emails_{}'.format(str(i)) try: group_data[key] = request.POST[key] emails.append(request.POST[key]) except: pass group_form = GroupForm(owner=user, data=group_data) if group_form.is_valid() and request.POST.get('currency'): group = group_form.save() quits_group_data = { 'currency': request.POST['currency'], 'group': group.id, } quits_group_form = QuitsGroupForm( owner=user, data=quits_group_data) if quits_group_form.is_valid(): quits_group_form.save() emails = [user.email for user in group.user_set.exclude(is_active=True)] send_invitations(request=request, user=user, emails=emails) return redirect('view_group', group.id) if not group_form: group_form = GroupForm(owner=user) if not quits_group_form: quits_group_form = QuitsGroupForm(owner=request.user) context = { 'group_form': group_form, 'quits_group_form': quits_group_form, } return render(request, 'quits/new_group.html', context)
def test_form_renders_contacts_input(self): form = GroupForm(owner=self.create_owner()) self.assertIn('id="input_contacts"', form.as_p())
def test_form_renders_group_name_input(self): form = GroupForm(owner=self.create_owner()) self.assertIn('placeholder="Group name"', form.as_p()) self.assertIn('id="input_group_name"', form.as_p())
def test_form_renders_email_input(self): form = GroupForm(owner=self.create_owner()) self.assertIn('placeholder="Email address"', form.as_p()) for i in range(5): self.assertIn('id="input_emails_{}'.format(str(i)), form.as_p())