def test_form_only_renders_who_paid_and_who_for_options_for_group(self): owner = User.objects.create_user( username='******', email='*****@*****.**') member = User.objects.create_user( username='******', email='*****@*****.**') not_member = User.objects.create_user( username='******', email='*****@*****.**') group = Group.objects.create(name='Members only') group.user_set.add(owner, member) form = NewPaymentForm(group_id=group.id) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertNotIn('*****@*****.**', form.as_p())
def test_form_only_renders_who_paid_and_who_for_options_for_group(self): owner = User.objects.create_user(username='******', email='*****@*****.**') member = User.objects.create_user(username='******', email='*****@*****.**') not_member = User.objects.create_user(username='******', email='*****@*****.**') group = Group.objects.create(name='Members only') group.user_set.add(owner, member) form = NewPaymentForm(group_id=group.id) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertNotIn('*****@*****.**', form.as_p())
class NewPaymentFormIntegratedTest(DjangoTestCase): def setUp(self): group = Group.objects.create(name='Test') self.form = NewPaymentForm(group_id=group.id) def test_form_renders_icon_input(self): self.assertIn('id="input_icon"', self.form.as_p()) def test_form_renders_date_input(self): today = '{dt:%d} {dt:%B} {dt:%Y}'.format(dt = date.today()) self.assertIn('value="{}"'.format(today), self.form.as_p()) self.assertIn('id="input_date"', self.form.as_p()) def test_form_renders_amount_input(self): self.assertIn('placeholder="0.00"', self.form.as_p()) self.assertIn('id="input_amount"', self.form.as_p()) def test_form_renders_description_input(self): self.assertIn('placeholder="E.g. electricity bill"', self.form.as_p()) self.assertIn('id="input_description"', self.form.as_p()) def test_form_renders_who_paid_input(self): self.assertIn('id="input_who_paid"', self.form.as_p()) def test_form_renders_who_for_input(self): self.assertIn('id="input_who_for"', self.form.as_p()) def test_does_not_offer_none_as_who_paid_choice(self): self.assertNotIn('---------', self.form.as_p()) def test_form_save_adds_payment_to_group(self): users = [User.objects.create_user( username='******'.format(str(i)), email='user{}@email.com'.format(str(i)) ) for i in range(3)] group = Group.objects.create(name='Test Group') group.user_set.add(*users) form = NewPaymentForm(group_id=group.id, data={ 'icon': 'person_pin', 'date': datetime.strptime('02 February 2011', '%d %B %Y'), 'amount': '99.99', 'description': 'bill', 'who_paid': 1, 'who_for': [1, 2], }) form.save() payment = Payment.objects.first() self.assertEqual(payment.group, group) def test_form_only_renders_who_paid_and_who_for_options_for_group(self): owner = User.objects.create_user( username='******', email='*****@*****.**') member = User.objects.create_user( username='******', email='*****@*****.**') not_member = User.objects.create_user( username='******', email='*****@*****.**') group = Group.objects.create(name='Members only') group.user_set.add(owner, member) form = NewPaymentForm(group_id=group.id) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertNotIn('*****@*****.**', form.as_p()) def test_form_save_does_not_add_new_payment_when_given_instance(self): users = [User.objects.create_user( username='******'.format(str(i))) for i in range(3)] group = Group.objects.create(name='Test Group') group.user_set.add(*users) payment = Payment.objects.create( date=datetime.strptime('02 February 2011', '%d %B %Y'), amount='99.99', description='bill', who_paid=users[0], ) payment.who_for.add(*users) form = NewPaymentForm(group_id=group.id, instance=payment, data={ 'icon': 'person_pin', 'date': datetime.strptime('11 March 2014', '%d %B %Y'), 'amount': '22.50', 'description': 'New Info', 'who_paid': 3, 'who_for': [2, 3], }) self.assertTrue(form.is_valid()) form.save() self.assertEqual(Payment.objects.count(), 1) def test_form_save_changes_attributes_for_existing_payment(self): users = [User.objects.create_user( username='******'.format(str(i))) for i in range(3)] group = Group.objects.create(name='Test Group') group.user_set.add(*users) payment = Payment.objects.create( date=datetime.strptime('02 February 2011', '%d %B %Y'), amount='99.99', description='bill', who_paid=users[0], ) payment.who_for.add(*users) form = NewPaymentForm(group_id=group.id, instance=payment, data={ 'icon': 'person_pin', 'date': datetime.strptime('11 March 2014', '%d %B %Y'), 'amount': '22.50', 'description': 'New Info', 'who_paid': 3, 'who_for': [2, 3], }) self.assertTrue(form.is_valid()) form.save() self.assertEqual(payment.date, datetime.strptime('11 March 2014', '%d %B %Y').date()) self.assertEqual(payment.amount, 22.50) self.assertEqual(payment.description, 'New Info') self.assertEqual(payment.who_paid, users[2]) self.assertListEqual(list(payment.who_for.all()), [users[1], users[2]])
class NewPaymentFormIntegratedTest(DjangoTestCase): def setUp(self): group = Group.objects.create(name='Test') self.form = NewPaymentForm(group_id=group.id) def test_form_renders_icon_input(self): self.assertIn('id="input_icon"', self.form.as_p()) def test_form_renders_date_input(self): today = '{dt:%d} {dt:%B} {dt:%Y}'.format(dt=date.today()) self.assertIn('value="{}"'.format(today), self.form.as_p()) self.assertIn('id="input_date"', self.form.as_p()) def test_form_renders_amount_input(self): self.assertIn('placeholder="0.00"', self.form.as_p()) self.assertIn('id="input_amount"', self.form.as_p()) def test_form_renders_description_input(self): self.assertIn('placeholder="E.g. electricity bill"', self.form.as_p()) self.assertIn('id="input_description"', self.form.as_p()) def test_form_renders_who_paid_input(self): self.assertIn('id="input_who_paid"', self.form.as_p()) def test_form_renders_who_for_input(self): self.assertIn('id="input_who_for"', self.form.as_p()) def test_does_not_offer_none_as_who_paid_choice(self): self.assertNotIn('---------', self.form.as_p()) def test_form_save_adds_payment_to_group(self): users = [ User.objects.create_user( username='******'.format(str(i)), email='user{}@email.com'.format(str(i))) for i in range(3) ] group = Group.objects.create(name='Test Group') group.user_set.add(*users) form = NewPaymentForm(group_id=group.id, data={ 'icon': 'person_pin', 'date': datetime.strptime('02 February 2011', '%d %B %Y'), 'amount': '99.99', 'description': 'bill', 'who_paid': 1, 'who_for': [1, 2], }) form.save() payment = Payment.objects.first() self.assertEqual(payment.group, group) def test_form_only_renders_who_paid_and_who_for_options_for_group(self): owner = User.objects.create_user(username='******', email='*****@*****.**') member = User.objects.create_user(username='******', email='*****@*****.**') not_member = User.objects.create_user(username='******', email='*****@*****.**') group = Group.objects.create(name='Members only') group.user_set.add(owner, member) form = NewPaymentForm(group_id=group.id) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertIn('*****@*****.**', form.as_p()) self.assertEqual(form.as_p().count('*****@*****.**'), 2) self.assertNotIn('*****@*****.**', form.as_p()) def test_form_save_does_not_add_new_payment_when_given_instance(self): users = [ User.objects.create_user( username='******'.format(str(i))) for i in range(3) ] group = Group.objects.create(name='Test Group') group.user_set.add(*users) payment = Payment.objects.create( date=datetime.strptime('02 February 2011', '%d %B %Y'), amount='99.99', description='bill', who_paid=users[0], ) payment.who_for.add(*users) form = NewPaymentForm(group_id=group.id, instance=payment, data={ 'icon': 'person_pin', 'date': datetime.strptime('11 March 2014', '%d %B %Y'), 'amount': '22.50', 'description': 'New Info', 'who_paid': 3, 'who_for': [2, 3], }) self.assertTrue(form.is_valid()) form.save() self.assertEqual(Payment.objects.count(), 1) def test_form_save_changes_attributes_for_existing_payment(self): users = [ User.objects.create_user( username='******'.format(str(i))) for i in range(3) ] group = Group.objects.create(name='Test Group') group.user_set.add(*users) payment = Payment.objects.create( date=datetime.strptime('02 February 2011', '%d %B %Y'), amount='99.99', description='bill', who_paid=users[0], ) payment.who_for.add(*users) form = NewPaymentForm(group_id=group.id, instance=payment, data={ 'icon': 'person_pin', 'date': datetime.strptime('11 March 2014', '%d %B %Y'), 'amount': '22.50', 'description': 'New Info', 'who_paid': 3, 'who_for': [2, 3], }) self.assertTrue(form.is_valid()) form.save() self.assertEqual(payment.date, datetime.strptime('11 March 2014', '%d %B %Y').date()) self.assertEqual(payment.amount, 22.50) self.assertEqual(payment.description, 'New Info') self.assertEqual(payment.who_paid, users[2]) self.assertListEqual(list(payment.who_for.all()), [users[1], users[2]])