1+ <?php
2+
3+ use SwedbankPay \Core \Api \Transaction ;
4+ use SwedbankPay \Core \Api \TransactionInterface ;
5+ use SwedbankPay \Core \Api \Problem ;
6+ use SwedbankPay \Core \Api \ProblemInterface ;
7+
8+ class TransactionTest extends TestCase
9+ {
10+ public function testGetters ()
11+ {
12+ $ data = '{
13+ "id": "/psp/creditcard/payments/d0b69e11-a6b5-4ef7-8b95-08d94fff2cbf/transactions/dd08a774-34a0-40ee-bb7b-08d94fcc1da0",
14+ "created": "2021-08-02T05:55:05.4437298Z",
15+ "updated": "2021-08-02T05:55:11.9725364Z",
16+ "type": "Authorization",
17+ "state": "Completed",
18+ "number": 40108027689,
19+ "amount": 28125,
20+ "vatAmount": 5625,
21+ "description": "Order #33787",
22+ "payeeReference": "33787xljqrs",
23+ "isOperational": false,
24+ "operations": []
25+ } ' ;
26+ $ data = json_decode ($ data , true );
27+
28+ $ transaction = new Transaction ($ data );
29+ $ this ->assertInstanceOf (TransactionInterface::class, $ transaction );
30+ $ this ->assertEquals (
31+ '/psp/creditcard/payments/d0b69e11-a6b5-4ef7-8b95-08d94fff2cbf/transactions/dd08a774-34a0-40ee-bb7b-08d94fcc1da0 ' ,
32+ $ transaction ->getId ()
33+ );
34+ $ this ->assertEquals ('2021-08-02T05:55:05.4437298Z ' , $ transaction ->getCreated ());
35+ $ this ->assertEquals ('2021-08-02T05:55:11.9725364Z ' , $ transaction ->getUpdated ());
36+ $ this ->assertEquals (TransactionInterface::TYPE_AUTHORIZATION , $ transaction ->getType ());
37+ $ this ->assertEquals (40108027689 , $ transaction ->getNumber ());
38+ $ this ->assertEquals (28125 , $ transaction ->getAmount ());
39+ $ this ->assertEquals (5625 , $ transaction ->getVatAmount ());
40+ $ this ->assertEquals ('33787xljqrs ' , $ transaction ->getPayeeReference ());
41+ $ this ->assertEquals (false , $ transaction ->isInitialized ());
42+ $ this ->assertEquals (false , $ transaction ->isAwaitingActivity ());
43+ $ this ->assertEquals (false , $ transaction ->isPending ());
44+ $ this ->assertEquals (true , $ transaction ->isCompleted ());
45+ $ this ->assertEquals (false , $ transaction ->isFailed ());
46+ $ this ->assertEquals (false , $ transaction ->isInitialized ());
47+ }
48+
49+ public function testSetters ()
50+ {
51+ $ transaction = new Transaction ([]);
52+ $ transaction ->setId (
53+ '/psp/creditcard/payments/d0b69e11-a6b5-4ef7-8b95-08d94fff2cbf/transactions/dd08a774-34a0-40ee-bb7b-08d94fcc1da0 '
54+ )
55+ ->setCreated ('2021-08-02T05:55:05.4437298Z ' )
56+ ->setUpdated ('2021-08-02T05:55:11.9725364Z ' )
57+ ->setType (TransactionInterface::TYPE_AUTHORIZATION )
58+ ->setState (TransactionInterface::STATE_COMPLETED )
59+ ->setNumber (40108027689 )
60+ ->setAmount (28125 )
61+ ->setVatAmount (5625 )
62+ ->setDescription ('Order #33787 ' )
63+ ->setPayeeReference ('33787xljqrs ' );
64+
65+ $ this ->assertInstanceOf (TransactionInterface::class, $ transaction );
66+ $ this ->assertEquals (
67+ '/psp/creditcard/payments/d0b69e11-a6b5-4ef7-8b95-08d94fff2cbf/transactions/dd08a774-34a0-40ee-bb7b-08d94fcc1da0 ' ,
68+ $ transaction ->getId ()
69+ );
70+ $ this ->assertEquals ('2021-08-02T05:55:05.4437298Z ' , $ transaction ->getCreated ());
71+ $ this ->assertEquals ('2021-08-02T05:55:11.9725364Z ' , $ transaction ->getUpdated ());
72+ $ this ->assertEquals (TransactionInterface::TYPE_AUTHORIZATION , $ transaction ->getType ());
73+ $ this ->assertEquals (40108027689 , $ transaction ->getNumber ());
74+ $ this ->assertEquals (28125 , $ transaction ->getAmount ());
75+ $ this ->assertEquals (5625 , $ transaction ->getVatAmount ());
76+ $ this ->assertEquals ('33787xljqrs ' , $ transaction ->getPayeeReference ());
77+ $ this ->assertEquals (false , $ transaction ->isInitialized ());
78+ $ this ->assertEquals (false , $ transaction ->isAwaitingActivity ());
79+ $ this ->assertEquals (false , $ transaction ->isPending ());
80+ $ this ->assertEquals (true , $ transaction ->isCompleted ());
81+ $ this ->assertEquals (false , $ transaction ->isFailed ());
82+ $ this ->assertEquals (false , $ transaction ->isInitialized ());
83+ }
84+
85+ public function testProblem ()
86+ {
87+ $ data = '{
88+ "id": "/psp/creditcard/payments/dce2cabe-8382-46b8-58ae-08d94fcbe1c7/transactions/857f0f4a-511b-42da-f730-08d94fff3046",
89+ "created": "2021-07-31T07:48:26.9976381Z",
90+ "updated": "2021-07-31T07:50:12.3446716Z",
91+ "type": "Authorization",
92+ "state": "Failed",
93+ "number": 40108019523,
94+ "amount": 28125,
95+ "vatAmount": 5625,
96+ "description": "Order #33782",
97+ "payeeReference": "33782xktuyo",
98+ "failedReason": "PspProblemException",
99+ "failedActivityName": "VerifyAuthentication",
100+ "isOperational": false,
101+ "problem": {
102+ "type": "https://api.payex.com/psp/errordetail/creditcard/systemerror",
103+ "title": "Error in system",
104+ "status": 500,
105+ "detail": "Unable to complete operation, error calling 3rd party",
106+ "problems": [{
107+ "name": "CommunicationError",
108+ "description": "Unexpected communication behavior"
109+ }]
110+ }
111+ } ' ;
112+ $ data = json_decode ($ data , true );
113+
114+ $ transaction = new Transaction ($ data );
115+ $ this ->assertInstanceOf (TransactionInterface::class, $ transaction );
116+ $ this ->assertEquals (true , $ transaction ->isFailed ());
117+ $ this ->assertInstanceOf (Problem::class, $ transaction ->getProblem ());
118+ $ this ->assertInstanceOf (ProblemInterface::class, $ transaction ->getProblem ());
119+ $ this ->assertEquals ('PspProblemException ' , $ transaction ->getFailedReason ());
120+ $ this ->assertEquals ('VerifyAuthentication ' , $ transaction ->getData ('failedActivityName ' ));
121+ $ this ->assertEquals ('(CommunicationError) Unexpected communication behavior ' , $ transaction ->getProblem ()->toString ());
122+ }
123+ }
0 commit comments