Skip to content

Commit

Permalink
[Taiga #2844] Deal with empty payment_option situation
Browse files Browse the repository at this point in the history
  • Loading branch information
alextreme committed Feb 12, 2025
1 parent 0591ea1 commit 0eb88e5
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
11 changes: 8 additions & 3 deletions djadyen/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,16 @@ def redirect_ideal_2(self, request):
def get(self, request, *args, **kwargs):
self.object = self.get_object()

# Ideal 2.0 flow, ideal sorts out the bank itself.
if self.object.payment_option.adyen_name == "ideal" and not self.object.issuer:
return self.redirect_ideal_2(request)
if self.object.get_price_in_cents() == 0:
return HttpResponseRedirect(self.object.get_return_url())

# Ideal 2.0 flow, ideal sorts out the bank itself.
if (
self.object.payment_option
and self.object.payment_option.adyen_name == "ideal"
and not self.object.issuer
):
return self.redirect_ideal_2(request)
return super(AdyenPaymentView, self).get(request, *args, **kwargs)


Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# see http://setuptools.readthedocs.io/en/latest/setuptools.html#configuring-setup-using-setup-cfg-files
[metadata]
name = djadyen
version = 3.1.0
version = 3.1.1
description = Django adyen payment integration
long_description = file: README.rst
url = https://github.com/maykinmedia/djadyen
Expand Down
15 changes: 15 additions & 0 deletions tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,21 @@ def test_ideal2_error_redirect_user_to_confirm_page(self, m: requests_mock.Mocke
self.assertEqual(response.status_code, 302)
self.assertEqual(response.location, "https://example.com" + confirm_page)

@requests_mock.Mocker()
def test_empty_payment_option(self, m: requests_mock.Mocker):
m.register_uri(
requests_mock.ANY,
requests_mock.ANY,
status_code=204,
)
ideal2 = PaymentOptionsFactory.create(adyen_name="ideal")
order = OrderFactory.create(payment_option=None, issuer=None)
url = reverse("payment", kwargs={"reference": order.reference})
confirm_page = reverse("confirm", kwargs={"reference": order.reference})

response = self.app.get(url)
self.assertEqual(response.status_code, 200)

@requests_mock.Mocker()
def test_ideal1_work_flow(self, m: requests_mock.Mocker):
m.register_uri(
Expand Down

0 comments on commit 0eb88e5

Please sign in to comment.