Skip to content

Commit 6a86c42

Browse files
committed
Fixed the tests
1 parent bdbb0bb commit 6a86c42

File tree

3 files changed

+80
-7
lines changed

3 files changed

+80
-7
lines changed

djadyen/management/commands/adyen_maintenance.py

+4
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,7 @@ def handle(self, *args, **options):
4949
):
5050
obj.status = Status.Error
5151
obj.save()
52+
53+
# Close 5 day old notifications
54+
for notification in AdyenNotification.objects.filter(is_processed=False, created_at__lte=five_days_ago):
55+
notification.mark_processed()

tests/app/models.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from django.db import models
2+
23
from djadyen.models import AdyenOrder
34

45

@@ -9,7 +10,8 @@ def get_price_in_cents(self):
910
return 5000
1011

1112
def process_notification(self, notification):
12-
super(Order, self).process_notification(notification)
13+
super().process_notification(notification)
14+
1315
if notification.is_authorised():
1416
self.paid = True
1517
self.save()

tests/tests/test_management_command.py

+73-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import json
2-
from datetime import datetime
2+
from datetime import datetime, timedelta
33
from uuid import uuid4
44

55
from django.core.management import call_command
@@ -107,17 +107,18 @@ def setUp(self):
107107

108108
reference = str(uuid4())
109109

110-
data = {
110+
self.data = {
111111
'success': 'true',
112112
'eventCode': 'AUTHORISATION',
113113
'merchantReference': reference,
114114
'merchantAccountCode': settings.ADYEN_MERCHANT_ACCOUNT,
115115
}
116116

117-
self.notification1 = NotificationFactory.create(
118-
notification=json.dumps(data),
119-
is_processed=False
120-
)
117+
with freeze_time('2019-01-01 11:44'):
118+
self.notification1 = NotificationFactory.create(
119+
notification=json.dumps(self.data),
120+
is_processed=False
121+
)
121122
self.order1 = OrderFactory.create(
122123
status=Status.Pending,
123124
reference=reference
@@ -152,6 +153,57 @@ def test_process_notifications(self):
152153
self.assertTrue(self.notification1.is_processed)
153154
self.assertTrue(self.notification1.processed_at, datetime(2019, 1, 1, 12, 0))
154155

156+
@freeze_time('2019-01-01 12:00')
157+
def test_process_notifications_is_error(self):
158+
self.assertFalse(self.order1.paid)
159+
160+
self.data.update(eventCode='ERROR')
161+
self.notification1.notification = json.dumps(self.data)
162+
self.notification1.save()
163+
164+
call_command('adyen_maintenance')
165+
166+
self.order1.refresh_from_db()
167+
self.assertFalse(self.order1.paid)
168+
169+
self.notification1.refresh_from_db()
170+
self.assertTrue(self.notification1.is_processed)
171+
self.assertTrue(self.notification1.processed_at, datetime(2019, 1, 1, 12, 0))
172+
173+
@freeze_time('2019-01-01 12:00')
174+
def test_process_notifications_is_cancelled(self):
175+
self.assertFalse(self.order1.paid)
176+
177+
self.data.update(eventCode='CANCEL')
178+
self.notification1.notification = json.dumps(self.data)
179+
self.notification1.save()
180+
181+
call_command('adyen_maintenance')
182+
183+
self.order1.refresh_from_db()
184+
self.assertFalse(self.order1.paid)
185+
186+
self.notification1.refresh_from_db()
187+
self.assertTrue(self.notification1.is_processed)
188+
self.assertTrue(self.notification1.processed_at, datetime(2019, 1, 1, 12, 0))
189+
190+
@freeze_time('2019-01-01 12:00')
191+
def test_process_notifications_is_refused(self):
192+
self.assertFalse(self.order1.paid)
193+
194+
self.data.update(eventCode='REFUSED')
195+
self.notification1.notification = json.dumps(self.data)
196+
self.notification1.save()
197+
198+
call_command('adyen_maintenance')
199+
200+
self.order1.refresh_from_db()
201+
self.assertFalse(self.order1.paid)
202+
203+
self.notification1.refresh_from_db()
204+
self.assertTrue(self.notification1.is_processed)
205+
self.assertTrue(self.notification1.processed_at, datetime(2019, 1, 1, 12, 0))
206+
155207

156208
class CleanupPending(TestCase):
157209
def test_cleanup(self):
@@ -168,15 +220,30 @@ def test_cleanup(self):
168220
with freeze_time('2019-01-3 12:00'):
169221
self.order4 = OrderFactory.create(status=Status.Authorised)
170222

223+
data = {
224+
'success': 'true',
225+
'eventCode': 'AUTHORISATION',
226+
'merchantReference': 'unknown',
227+
'merchantAccountCode': settings.ADYEN_MERCHANT_ACCOUNT,
228+
}
229+
230+
with freeze_time('2019-01-01 11:44'):
231+
self.notification1 = NotificationFactory.create(
232+
notification=json.dumps(data),
233+
is_processed=False
234+
)
235+
171236
with freeze_time('2019-01-10 12:00'):
172237
call_command('adyen_maintenance')
173238

174239
self.order1.refresh_from_db()
175240
self.order2.refresh_from_db()
176241
self.order3.refresh_from_db()
177242
self.order4.refresh_from_db()
243+
self.notification1.refresh_from_db()
178244

179245
self.assertEqual(self.order1.status, Status.Error)
180246
self.assertEqual(self.order2.status, Status.Pending)
181247
self.assertEqual(self.order3.status, Status.Error)
182248
self.assertEqual(self.order4.status, Status.Authorised)
249+
self.assertTrue(self.notification1.is_processed)

0 commit comments

Comments
 (0)