Completed
Push — locale-in-url ( 6d9eda...81052c )
by Kamil
57:16 queued 38:25
created

iShouldHavePaymentMethodAvailableAsFirstChoice()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 7
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
3
namespace Sylius\Behat\Context\Ui\Shop\Checkout;
4
5
use Behat\Behat\Context\Context;
6
use Sylius\Behat\Page\Shop\Checkout\CompletePageInterface;
7
use Sylius\Behat\Page\Shop\Checkout\SelectPaymentPageInterface;
8
use Webmozart\Assert\Assert;
9
10
/**
11
 * @author Kamil Kokot <[email protected]>
12
 */
13
final class CheckoutPaymentContext implements Context
14
{
15
    /**
16
     * @var SelectPaymentPageInterface
17
     */
18
    private $selectPaymentPage;
19
20
    /**
21
     * @var CompletePageInterface
22
     */
23
    private $completePage;
24
25
    /**
26
     * @param SelectPaymentPageInterface $selectPaymentPage
27
     * @param CompletePageInterface $completePage
28
     */
29
    public function __construct(SelectPaymentPageInterface $selectPaymentPage, CompletePageInterface $completePage)
30
    {
31
        $this->selectPaymentPage = $selectPaymentPage;
32
        $this->completePage = $completePage;
33
    }
34
35
    /**
36
     * @When I try to open checkout payment page
37
     */
38
    public function iTryToOpenCheckoutPaymentPage()
39
    {
40
        $this->selectPaymentPage->tryToOpen();
41
    }
42
43
    /**
44
     * @When I decide to change order shipping method
45
     */
46
    public function iDecideToChangeMyShippingMethod()
47
    {
48
        $this->selectPaymentPage->changeShippingMethod();
49
    }
50
51
    /**
52
     * @When /^I choose "([^"]*)" payment method$/
53
     */
54
    public function iChoosePaymentMethod($paymentMethodName)
55
    {
56
        $this->selectPaymentPage->selectPaymentMethod($paymentMethodName ?: 'Offline');
57
        $this->selectPaymentPage->nextStep();
58
    }
59
60
    /**
61
     * @When I want to pay for order
62
     */
63
    public function iWantToPayForOrder()
64
    {
65
        $this->selectPaymentPage->tryToOpen();
66
    }
67
68
    /**
69
     * @When I go back to payment step of the checkout
70
     */
71
    public function iAmAtTheCheckoutPaymentStep()
72
    {
73
        $this->selectPaymentPage->open();
74
    }
75
76
    /**
77
     * @When I complete the payment step
78
     */
79
    public function iCompleteThePaymentStep()
80
    {
81
        $this->selectPaymentPage->nextStep();
82
    }
83
84
    /**
85
     * @When I select :name payment method
86
     */
87
    public function iSelectPaymentMethod($name)
88
    {
89
        $this->selectPaymentPage->selectPaymentMethod($name);
90
    }
91
92
    /**
93
     * @Then I should be on the checkout payment step
94
     */
95
    public function iShouldBeOnTheCheckoutPaymentStep()
96
    {
97
        Assert::true($this->selectPaymentPage->isOpen());
98
    }
99
100
    /**
101
     * @Then I should be able to select :paymentMethodName payment method
102
     */
103
    public function iShouldBeAbleToSelectPaymentMethod($paymentMethodName)
104
    {
105
        Assert::true($this->selectPaymentPage->hasPaymentMethod($paymentMethodName));
106
    }
107
108
    /**
109
     * @Then I should not be able to select :paymentMethodName payment method
110
     */
111
    public function iShouldNotBeAbleToSelectPaymentMethod($paymentMethodName)
112
    {
113
        Assert::false($this->selectPaymentPage->hasPaymentMethod($paymentMethodName));
114
    }
115
116
    /**
117
     * @Then I should be redirected to the payment step
118
     */
119
    public function iShouldBeRedirectedToThePaymentStep()
120
    {
121
        Assert::true($this->selectPaymentPage->isOpen());
122
    }
123
124
    /**
125
     * @Then I should be able to go to the summary page again
126
     */
127
    public function iShouldBeAbleToGoToTheSummaryPageAgain()
128
    {
129
        $this->selectPaymentPage->nextStep();
130
131
        Assert::true($this->completePage->isOpen());
132
    }
133
134
    /**
135
     * @Then I should have :paymentMethodName payment method available as the first choice
136
     */
137
    public function iShouldHavePaymentMethodAvailableAsFirstChoice($paymentMethodName)
138
    {
139
        $paymentMethods = $this->selectPaymentPage->getPaymentMethods();
140
        $firstPaymentMethod = reset($paymentMethods);
141
142
        Assert::same($paymentMethodName, $firstPaymentMethod);
143
    }
144
145
    /**
146
     * @Then I should have :paymentMethodName payment method available as the last choice
147
     */
148
    public function iShouldHavePaymentMethodAvailableAsLastChoice($paymentMethodName)
149
    {
150
        $paymentMethods = $this->selectPaymentPage->getPaymentMethods();
151
        $lastPaymentMethod = end($paymentMethods);
152
153
        Assert::same($paymentMethodName, $lastPaymentMethod);
154
    }
155
}
156