PaymentMethodPresentationTester   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 27
dl 0
loc 90
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A generatePaymentMethodKey() 0 12 1
A cleanupPaymentMethodByPaymentMethodKey() 0 16 2
A getUuid() 0 3 1
A haveDeletePaymentMethodTransfer() 0 7 1
A haveAddPaymentMethodTransfer() 0 7 1
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
declare(strict_types = 1);
9
10
namespace PyzTest\Zed\MessageBroker;
11
12
use Codeception\Actor;
13
use Generated\Shared\DataBuilder\MessageAttributesBuilder;
14
use Generated\Shared\Transfer\AddPaymentMethodTransfer;
15
use Generated\Shared\Transfer\DeletePaymentMethodTransfer;
16
use Orm\Zed\Payment\Persistence\SpyPaymentMethodQuery;
17
use Orm\Zed\Payment\Persistence\SpyPaymentMethodStoreQuery;
18
use Ramsey\Uuid\Uuid;
19
use Spryker\Zed\Payment\Business\Generator\PaymentMethodKeyGenerator;
20
use Spryker\Zed\Payment\Dependency\Service\PaymentToUtilTextServiceBridge;
21
22
/**
23
 * Inherited Methods
24
 *
25
 * @method void wantTo($text)
26
 * @method void wantToTest($text)
27
 * @method void execute($callable)
28
 * @method void expectTo($prediction)
29
 * @method void expect($prediction)
30
 * @method void amGoingTo($argumentation)
31
 * @method void am($role)
32
 * @method void lookForwardTo($achieveValue)
33
 * @method void comment($description)
34
 * @method void pause($vars = [])
35
 *
36
 * @SuppressWarnings(\PyzTest\Zed\MessageBroker\PHPMD)
37
 */
38
class PaymentMethodPresentationTester extends Actor
39
{
40
    use _generated\PaymentMethodPresentationTesterActions {
41
        haveAddPaymentMethodTransfer as protected testerHaveAddPaymentMethodTransferAction;
42
        haveDeletePaymentMethodTransfer as protected testerHaveDeletePaymentMethodTransferAction;
43
    }
44
45
    /**
46
     * @param array<string, mixed> $seedData
47
     * @param array<string, mixed> $messageAttributesSeedData
48
     *
49
     * @return \Generated\Shared\Transfer\AddPaymentMethodTransfer
50
     */
51
    public function haveAddPaymentMethodTransfer(
52
        array $seedData,
53
        array $messageAttributesSeedData = [],
54
    ): AddPaymentMethodTransfer {
55
        return $this->testerHaveAddPaymentMethodTransferAction($seedData)
56
            ->setMessageAttributes(
57
                (new MessageAttributesBuilder($messageAttributesSeedData))->build(),
58
            );
59
    }
60
61
    /**
62
     * @param array<string, mixed> $seedData
63
     * @param array<string, mixed> $messageAttributesSeedData
64
     *
65
     * @return \Generated\Shared\Transfer\DeletePaymentMethodTransfer
66
     */
67
    public function haveDeletePaymentMethodTransfer(
68
        array $seedData,
69
        array $messageAttributesSeedData = [],
70
    ): DeletePaymentMethodTransfer {
71
        return $this->testerHaveDeletePaymentMethodTransferAction($seedData)
72
            ->setMessageAttributes(
73
                (new MessageAttributesBuilder($messageAttributesSeedData))->build(),
74
            );
75
    }
76
77
    /**
78
     * @param string $paymentProviderName
79
     * @param string $paymentMethodName
80
     *
81
     * @return string
82
     */
83
    public function generatePaymentMethodKey(
84
        string $paymentProviderName,
85
        string $paymentMethodName,
86
    ): string {
87
        $utilTextService = $this->getLocator()->utilText()->service();
88
        $paymentMethodKeyGenerator = new PaymentMethodKeyGenerator(
89
            new PaymentToUtilTextServiceBridge($utilTextService),
90
        );
91
92
        return $paymentMethodKeyGenerator->generate(
93
            $paymentProviderName,
94
            $paymentMethodName,
95
        );
96
    }
97
98
    /**
99
     * @param string $paymentMethodKey
100
     *
101
     * @return void
102
     */
103
    public function cleanupPaymentMethodByPaymentMethodKey(string $paymentMethodKey): void
104
    {
105
        $this->addCleanup(function () use ($paymentMethodKey): void {
106
            $paymentMethod = SpyPaymentMethodQuery::create()
107
                ->filterByPaymentMethodKey($paymentMethodKey)
108
                ->findOne();
109
110
            if ($paymentMethod === null) {
111
                return;
112
            }
113
114
            SpyPaymentMethodStoreQuery::create()
115
                ->filterByFkPaymentMethod($paymentMethod->getIdPaymentMethod())
116
                ->delete();
117
118
            $paymentMethod->delete();
119
        });
120
    }
121
122
    /**
123
     * @return string
124
     */
125
    protected function getUuid(): string
126
    {
127
        return Uuid::uuid4()->toString();
128
    }
129
}
130