Passed
Pull Request — master (#17)
by Stanislav
10:22
created

FirstDataFacadeTest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 163
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 8
eloc 68
dl 0
loc 163
rs 10
c 0
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A testMapFirstDataPaymentToQuoteWithoutPayments() 0 17 1
A testMapFirstDataPaymentToQuote() 0 22 1
A testCheckPaymentAuthorizationTimeOutReturnsTrue() 0 11 1
A testLoadPaymentDataByOrderWhenEmptyPayment() 0 9 1
A testLoadPaymentDataByOrder() 0 17 1
A testLoadPaymentDataByOrderWithNoStoredPaymentMethod() 0 13 1
A testCheckPaymentAuthorizationTimeOutReturnsFalse() 0 11 1
A testLoadPaymentDataByOrderWithNoFirstDataPayment() 0 14 1
1
<?php
2
3
/**
4
 * MIT License
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace SprykerEcoTest\Zed\FirstData\Business;
9
10
use ArrayObject;
11
use DateInterval;
12
use DateTime;
13
use Generated\Shared\Transfer\OrderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\OrderTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
14
use Generated\Shared\Transfer\PaymentTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\PaymentTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
use SprykerEco\Shared\FirstData\FirstDataConfig;
16
17
/**
18
 * Auto-generated group annotations
19
 *
20
 * @group SprykerEcoTest
21
 * @group Zed
22
 * @group FirstData
23
 * @group Business
24
 * @group Facade
25
 * @group FirstDataFacadeTest
26
 */
27
class FirstDataFacadeTest extends AbstractFirstDataFacadeTest
28
{
29
    protected const TRANSACTION_ID = '7777';
30
    protected const OID = '2bfaf81a-3435';
31
32
    /**
33
     * @var \SprykerEcoTest\Zed\FirstData\FirstDataBusinessTester
34
     */
35
    protected $tester;
36
37
    /**
38
     * @return void
39
     */
40
    public function testMapFirstDataPaymentToQuote(): void
41
    {
42
        //Arrange
43
        $restCheckoutRequestAttributesTransfer = $this->tester->createRestCheckoutRequestAttributesTransferWithSinglePayment(
44
            static::TRANSACTION_ID,
45
            static::OID
46
        );
47
        $quoteTransfer = $this->tester->createQuoteTransfer();
48
49
        //Act
50
        $mappedQuoteTransfer = $this->tester
51
            ->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())
52
            ->mapFirstDataPaymentToQuote($restCheckoutRequestAttributesTransfer, $quoteTransfer);
53
54
        //Assert
55
        $this->assertNotNull($mappedQuoteTransfer->getPayment());
56
        $this->assertSame(
57
            static::TRANSACTION_ID,
58
            $mappedQuoteTransfer->getPayment()
59
                ->getFirstDataCreditCard()
60
                ->getFirstDataTransactionData()
61
                ->getTransactionId()
62
        );
63
    }
64
65
    /**
66
     * @return void
67
     */
68
    public function testCheckPaymentAuthorizationTimeOutReturnsTrue(): void
69
    {
70
        //Arrange
71
        $createdAt = (new DateTime())->add(DateInterval::createFromDateString('- 1 day'))->format('Y-m-d H:i:s');
72
        $orderTransfer = (new OrderTransfer())->setCreatedAt($createdAt);
73
74
        //Act
75
        $result = $this->tester->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())->checkPaymentAuthorizationTimeOut($orderTransfer);
76
77
        //Assert
78
        $this->assertTrue($result);
79
    }
80
81
    /**
82
     * @return void
83
     */
84
    public function testCheckPaymentAuthorizationTimeOutReturnsFalse(): void
85
    {
86
        //Arrange
87
        $createdAt = (new DateTime())->format('Y-m-d H:i:s');
88
        $orderTransfer = (new OrderTransfer())->setCreatedAt($createdAt);
89
90
        //Act
91
        $result = $this->tester->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())->checkPaymentAuthorizationTimeOut($orderTransfer);
92
93
        //Assert
94
        $this->assertFalse($result);
95
    }
96
97
    /**
98
     * @return void
99
     */
100
    public function testMapFirstDataPaymentToQuoteWithoutPayments(): void
101
    {
102
        //Arrange
103
        $restCheckoutRequestAttributesTransfer = $this->tester->createRestCheckoutRequestAttributesTransferWithSinglePayment(
104
            static::TRANSACTION_ID,
105
            static::OID
106
        );
107
        $restCheckoutRequestAttributesTransfer->setPayments(new ArrayObject());
108
        $quoteTransfer = $this->tester->createQuoteTransfer();
109
110
        //Act
111
        $mappedQuoteTransfer = $this->tester
112
            ->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())
113
            ->mapFirstDataPaymentToQuote($restCheckoutRequestAttributesTransfer, $quoteTransfer);
114
115
        //Assert
116
        $this->assertNull($mappedQuoteTransfer->getPayment());
117
    }
118
119
    /**
120
     * @return void
121
     */
122
    public function testLoadPaymentDataByOrderWhenEmptyPayment(): void
123
    {
124
        $salesOrderEntity = $this->tester->createTestSalesOrderEntity();
125
        $this->tester->createTestPaymentFirstDataEntity($salesOrderEntity);
126
        $orderTransfer = (new OrderTransfer())->fromArray($salesOrderEntity->toArray(), true);
127
128
        $result = $this->tester->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())->loadPaymentDataByOrder($orderTransfer);
129
130
        $this->assertNull($result->getPayments()->getIterator()->current());
131
    }
132
133
    /**
134
     * @return void
135
     */
136
    public function testLoadPaymentDataByOrderWithNoFirstDataPayment(): void
137
    {
138
        $salesOrderEntity = $this->tester->createTestSalesOrderEntity();
139
        $this->tester->createTestPaymentFirstDataEntity($salesOrderEntity);
140
        $orderTransfer = (new OrderTransfer())->fromArray($salesOrderEntity->toArray(), true);
141
        $orderTransfer->addPayment(
142
            (new PaymentTransfer())
143
                ->setPaymentProvider('another provider')
144
        );
145
146
        $result = $this->tester->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())->loadPaymentDataByOrder($orderTransfer);
147
        $paymentTransfer = $result->getPayments()->getIterator()->current();
148
149
        $this->assertNull($paymentTransfer->getFirstDataCreditCard());
150
    }
151
152
    /**
153
     * @return void
154
     */
155
    public function testLoadPaymentDataByOrderWithNoStoredPaymentMethod(): void
156
    {
157
        $salesOrderEntity = $this->tester->createTestSalesOrderEntity();
158
        $orderTransfer = (new OrderTransfer())->fromArray($salesOrderEntity->toArray(), true);
159
        $orderTransfer->addPayment(
160
            (new PaymentTransfer())
161
                ->setPaymentProvider(FirstDataConfig::PAYMENT_PROVIDER_NAME_KEY)
162
        );
163
164
        $result = $this->tester->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())->loadPaymentDataByOrder($orderTransfer);
165
        $paymentTransfer = $result->getPayments()->getIterator()->current();
166
167
        $this->assertNull($paymentTransfer->getFirstDataCreditCard());
168
    }
169
170
    /**
171
     * @return void
172
     */
173
    public function testLoadPaymentDataByOrder(): void
174
    {
175
        $salesOrderEntity = $this->tester->createTestSalesOrderEntity();
176
        $this->tester->createTestPaymentFirstDataEntity($salesOrderEntity);
177
        $orderTransfer = (new OrderTransfer())->fromArray($salesOrderEntity->toArray(), true);
178
        $orderTransfer->addPayment(
179
            (new PaymentTransfer())
180
                ->setPaymentProvider(FirstDataConfig::PAYMENT_PROVIDER_NAME_KEY)
181
        );
182
183
        $result = $this->tester->getFirstDataFacade($this->getFirstDataBusinessFactoryMock())->loadPaymentDataByOrder($orderTransfer);
184
        /** @var \Generated\Shared\Transfer\PaymentTransfer $payment */
185
        $payment = $result->getPayments()->getIterator()->current();
186
187
        $this->assertNotNull($payment);
188
        $this->assertEquals($this->tester::OID, $payment->getFirstDataCreditCard()->getFirstDataTransactionData()->getOid());
189
        $this->assertEquals($this->tester::ID_TRANSACTION, $payment->getFirstDataCreditCard()->getFirstDataTransactionData()->getTransactionId());
190
    }
191
}
192