def test_total_price_to_pay_with_more_credit_than_order_price(self): user = VokoUserFactory() BalanceFactory(user=user, type="CR", amount=100) order = OrderFactory(user=user) OrderProductFactory(order=order, amount=1, product__base_price=10) self.assertEqual( order.total_price_to_pay_with_balances_taken_into_account(), 0)
def test_total_price_to_pay_with_no_balance(self): order = OrderFactory() OrderProductFactory(order=order) OrderProductFactory(order=order) self.assertEqual( order.total_price_to_pay_with_balances_taken_into_account(), order.total_price)
def test_total_price_to_pay_with_large_debit(self): user = VokoUserFactory() BalanceFactory(user=user, type="DR", amount=100) order = OrderFactory(user=user) odp1 = OrderProductFactory(order=order, amount=1, product__base_price=10) self.assertEqual(order.total_price_to_pay_with_balances_taken_into_account(), order.total_price + Decimal("100"))
def test_total_price_to_pay_with_more_credit_than_order_price(self): user = VokoUserFactory() BalanceFactory(user=user, type="CR", amount=100) order = OrderFactory(user=user) odp1 = OrderProductFactory(order=order, amount=1, product__base_price=10) self.assertEqual(order.total_price_to_pay_with_balances_taken_into_account(), 0)
def test_total_price_to_pay_with_large_debit(self): user = VokoUserFactory() BalanceFactory(user=user, type="DR", amount=100) order = OrderFactory(user=user) OrderProductFactory(order=order, amount=1, product__base_price=10) self.assertEqual( order.total_price_to_pay_with_balances_taken_into_account(), order.total_price + Decimal("100"))
def test_total_price_to_pay_with_credit(self): user = VokoUserFactory() BalanceFactory(user=user, type="CR", amount=0.10) order = OrderFactory(user=user) odp1 = OrderProductFactory(order=order) odp2 = OrderProductFactory(order=order) self.assertEqual(order.total_price_to_pay_with_balances_taken_into_account(), order.total_price - Decimal("0.10"))
def test_total_price_to_pay_with_credit(self): user = VokoUserFactory() BalanceFactory(user=user, type="CR", amount=0.10) order = OrderFactory(user=user) OrderProductFactory(order=order) OrderProductFactory(order=order) self.assertEqual( order.total_price_to_pay_with_balances_taken_into_account(), order.total_price - Decimal("0.10"))
class TestCreateTransaction(FinanceTestCase): def setUp(self): super(TestCreateTransaction, self).setUp() self.url = reverse("finance.createtransaction") self.order = OrderFactory(user=self.user, finalized=True, paid=False) s = self.client.session s["order_to_pay"] = self.order.id s.save() def test_that_transaction_is_created(self): self.client.post(self.url, {"bank": "EXAMPLE_BANK"}) self.mollie_client.return_value.payments.create.assert_called_once_with( { "description": "VOKO Utrecht %d" % self.order.id, "webhookUrl": settings.BASE_URL + reverse("finance.callback"), "amount": float(self.order.total_price_to_pay_with_balances_taken_into_account()), "redirectUrl": settings.BASE_URL + "/finance/pay/transaction/confirm/?order=%d" % self.order.id, "metadata": {"order_id": self.order.id}, "method": "ideal", "issuer": "EXAMPLE_BANK", } ) def test_that_payment_object_is_created(self): assert Payment.objects.count() == 0 self.client.post(self.url, {"bank": "EXAMPLE_BANK"}) payment = Payment.objects.get() self.assertEqual(payment.amount, self.order.total_price_to_pay_with_balances_taken_into_account()) self.assertEqual(payment.order, self.order) self.assertEqual(payment.mollie_id, "transaction_id") self.assertEqual(payment.balance, None) def test_that_user_is_redirected_to_bank_url(self): ret = self.client.post(self.url, {"bank": "EXAMPLE_BANK"}) self.assertEqual(ret.status_code, 302) self.assertEqual(ret.url, "http://bank.url") def test_error_when_user_doesnt_own_order(self): s = self.client.session s["order_to_pay"] = OrderFactory().id s.save() with self.assertRaises(AssertionError): self.client.post(self.url, {"bank": "EXAMPLE_BANK"}) def test_error_when_order_not_finalized(self): self.order.finalized = False self.order.save() with self.assertRaises(AssertionError): self.client.post(self.url, {"bank": "EXAMPLE_BANK"}) def test_redirect_on_invalid_form(self): ret = self.client.post(self.url, {"bank": "foo"}) self.assertRedirects(ret, reverse("finance.choosebank")) def test_redirect_when_order_round_is_closed(self): month_ago = datetime.now(tz=UTC) - timedelta(days=30) order_round = OrderRoundFactory(closed_for_orders=month_ago) assert order_round.is_open is False self.order.order_round = order_round self.order.save() ret = self.client.post(self.url, {"bank": "EXAMPLE_BANK"}) self.assertRedirects(ret, reverse("finish_order", args=(self.order.id,)), fetch_redirect_response=False)
class TestCreateTransaction(FinanceTestCase): def setUp(self): super(TestCreateTransaction, self).setUp() self.url = reverse('finance.createtransaction') self.order = OrderFactory(user=self.user, finalized=True, paid=False) def test_that_transaction_is_created(self): self.client.post(self.url, {'bank': 'EXAMPLE_BANK'}) self.mollie_client.return_value.payments.create.assert_called_once_with( # noqa {'description': 'VOKO Utrecht %d' % self.order.id, 'webhookUrl': settings.BASE_URL + reverse('finance.callback'), 'amount': float(self.order.total_price_to_pay_with_balances_taken_into_account()), # noqa 'redirectUrl': (settings.BASE_URL + '/finance/pay/transaction/confirm/?order=%d' % self.order.id), 'metadata': {'order_id': self.order.id}, 'method': 'ideal', 'issuer': 'EXAMPLE_BANK'} ) def test_that_payment_object_is_created(self): assert Payment.objects.count() == 0 self.client.post(self.url, {'bank': "EXAMPLE_BANK"}) payment = Payment.objects.get() self.assertEqual( payment.amount, self.order.total_price_to_pay_with_balances_taken_into_account() ) self.assertEqual(payment.order, self.order) self.assertEqual(payment.mollie_id, "transaction_id") self.assertEqual(payment.balance, None) def test_that_user_is_redirected_to_bank_url(self): ret = self.client.post(self.url, {'bank': "EXAMPLE_BANK"}) self.assertEqual(ret.status_code, 302) self.assertEqual(ret.url, "http://bank.url") def test_redirect_when_order_not_finalized(self): # No order matches, so not found self.order.finalized = False self.order.save() ret = self.client.post(self.url, {'bank': "EXAMPLE_BANK"}) self.assertRedirects(ret, reverse('view_products')) def test_redirect_on_invalid_form(self): ret = self.client.post(self.url, {'bank': 'foo'}) self.assertRedirects(ret, reverse('finance.choosebank')) def test_redirect_when_order_round_is_closed(self): # No order matches, so not found month_ago = datetime.now(tz=UTC) - timedelta(days=30) order_round = OrderRoundFactory(closed_for_orders=month_ago) assert order_round.is_open is False self.order.order_round = order_round self.order.save() ret = self.client.post(self.url, {'bank': "EXAMPLE_BANK"}) self.assertRedirects(ret, reverse('view_products'))