def test_active_user_can_see_pin(self): user = UserFactory() user.is_active = True user.save() self.client.login(username=user.email, password='******', follow=True) response = self.client.get(self.update_url) self.assertNotEqual(response.context_data['pin'], None)
def test_deactivated_user_has_None_pin(self): user = UserFactory() user.is_active = True user.save() self.assertNotEqual(user.pin, None) user.is_active = False user.save() self.assertEqual(user.pin, None)
class BudgetPaymentTest(TransactionTestCase): def setUp(self): self.user = UserFactory(is_active=True) self.budget_url = factories.PaymentFactory.get_budget_payment_url() self.list_url = factories.ReservationFactory.get_reservation_list_url() def test_anonymous_user_cannot_access_budget_payment_page(self): response = self.client.get(self.budget_url) self.assertRedirects(response, UserFactory.get_login_url(next='/reservation/payment/budget/')) def test_user_cannot_access_budget_page_without_staged_payment(self): self.client.login(username=self.user.email, password='******') response = self.client.get(self.budget_url) self.assertEqual(response.status_code, client.FORBIDDEN) def test_user_can_access_budget_page_with_staged_payment(self): self.client.login(username=self.user.email, password='******') reservation = factories.ReservationFactory(user=self.user) payment = factories.PaymentFactory(user=self.user, type=models.Payment.STAGED) payment.reservation_set.add(reservation) response = self.client.get(self.budget_url) self.assertEqual(response.status_code, client.OK) def test_user_cannot_pay_with_budget_with_invalid_password(self): self.client.login(username=self.user.email, password='******') reservation = factories.ReservationFactory(user=self.user) payment = factories.PaymentFactory(user=self.user, type=models.Payment.STAGED) payment.reservation_set.add(reservation) response = self.client.post(self.budget_url, {'password': '******'}) self.assertEqual(response.status_code, client.OK) staged_payment = models.Payment.objects.filter(user=self.user, type=models.Payment.BUDGET) self.assertFalse(staged_payment.exists()) def test_user_cannot_pay_with_budget_with_not_enough_money(self): self.client.login(username=self.user.email, password='******') factories.ReservationFactory.create_batch(3, user=self.user) response = self.client.get(self.list_url) self.assertEqual(response.status_code, client.OK) response = self.client.post(self.budget_url, {'password': '******'}) self.assertRedirects(response, '/reservation/list/') def test_user_can_pay_with_budget_with_enough_money(self): self.client.login(username=self.user.email, password='******') reservations = factories.ReservationFactory.create_batch(3, user=self.user) amount = sum(reservation.price for reservation in reservations) self.user.budget = amount self.user.save() response = self.client.get(self.list_url) self.assertEqual(response.status_code, client.OK) response = self.client.post(self.budget_url, {'password': '******'}) self.assertRedirects(response, '/') self.assertEqual(user_models.User.objects.get(id=self.user.id).budget, 0) staged_payment = models.Payment.objects.filter(user=self.user, type=models.Payment.BUDGET) self.assertTrue(staged_payment.exists())
def test_active_user_has_pin(self): user = UserFactory() user.is_active = True user.save() self.assertNotEqual(user.pin, None)
class BudgetPaymentTest(TransactionTestCase): def setUp(self): self.user = UserFactory(is_active=True) self.budget_url = factories.PaymentFactory.get_budget_payment_url() self.list_url = factories.ReservationFactory.get_reservation_list_url() def test_anonymous_user_cannot_access_budget_payment_page(self): response = self.client.get(self.budget_url) self.assertRedirects( response, UserFactory.get_login_url(next='/reservation/payment/budget/')) def test_user_cannot_access_budget_page_without_staged_payment(self): self.client.login(username=self.user.email, password='******') response = self.client.get(self.budget_url) self.assertEqual(response.status_code, client.FORBIDDEN) def test_user_can_access_budget_page_with_staged_payment(self): self.client.login(username=self.user.email, password='******') reservation = factories.ReservationFactory(user=self.user) payment = factories.PaymentFactory(user=self.user, type=models.Payment.STAGED) payment.reservation_set.add(reservation) response = self.client.get(self.budget_url) self.assertEqual(response.status_code, client.OK) def test_user_cannot_pay_with_budget_with_invalid_password(self): self.client.login(username=self.user.email, password='******') reservation = factories.ReservationFactory(user=self.user) payment = factories.PaymentFactory(user=self.user, type=models.Payment.STAGED) payment.reservation_set.add(reservation) response = self.client.post(self.budget_url, {'password': '******'}) self.assertEqual(response.status_code, client.OK) staged_payment = models.Payment.objects.filter( user=self.user, type=models.Payment.BUDGET) self.assertFalse(staged_payment.exists()) def test_user_cannot_pay_with_budget_with_not_enough_money(self): self.client.login(username=self.user.email, password='******') factories.ReservationFactory.create_batch(3, user=self.user) response = self.client.get(self.list_url) self.assertEqual(response.status_code, client.OK) response = self.client.post(self.budget_url, {'password': '******'}) self.assertRedirects(response, '/reservation/list/') def test_user_can_pay_with_budget_with_enough_money(self): self.client.login(username=self.user.email, password='******') reservations = factories.ReservationFactory.create_batch( 3, user=self.user) amount = sum(reservation.price for reservation in reservations) self.user.budget = amount self.user.save() response = self.client.get(self.list_url) self.assertEqual(response.status_code, client.OK) response = self.client.post(self.budget_url, {'password': '******'}) self.assertRedirects(response, '/') self.assertEqual( user_models.User.objects.get(id=self.user.id).budget, 0) staged_payment = models.Payment.objects.filter( user=self.user, type=models.Payment.BUDGET) self.assertTrue(staged_payment.exists())