Completed
Push — master ( 4e9462...2570d1 )
by Kamil
18:48
created

iShouldBeNotifiedItIsUsed()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 6
rs 9.4285
cc 1
eloc 3
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sylius\Behat\Context\Ui\Admin;
13
14
use Behat\Behat\Context\Context;
15
use Sylius\Behat\Page\Admin\ShippingMethod\IndexPageInterface;
16
use Sylius\Behat\Page\Admin\ShippingMethod\ShowPageInterface;
17
use Sylius\Behat\Page\UnexpectedPageException;
18
use Sylius\Component\Core\Model\ShippingMethodInterface;
19
use Sylius\Component\Core\Test\Services\SharedStorageInterface;
20
21
/**
22
 * @author Jan Góralski <[email protected]>
23
 */
24
final class ManagingShippingMethodsContext implements Context
25
{
26
    /**
27
     * @var SharedStorageInterface
28
     */
29
    private $sharedStorage;
30
31
    /**
32
     * @var ShowPageInterface
33
     */
34
    private $shippingMethodShowPage;
35
36
    /**
37
     * @var IndexPageInterface
38
     */
39
    private $shippingMethodIndexPage;
40
41
    /**
42
     * @param SharedStorageInterface $sharedStorage
43
     * @param ShowPageInterface $shippingMethodDetailsPage
44
     * @param IndexPageInterface $shippingMethodIndexPage
45
     */
46
    public function __construct(
47
        SharedStorageInterface $sharedStorage,
48
        ShowPageInterface $shippingMethodDetailsPage,
49
        IndexPageInterface $shippingMethodIndexPage
50
    ) {
51
        $this->sharedStorage = $sharedStorage;
52
        $this->shippingMethodShowPage = $shippingMethodDetailsPage;
53
        $this->shippingMethodIndexPage = $shippingMethodIndexPage;
54
    }
55
56
    /**
57
     * @When /^I try to delete ("[^"]+" shipping method)$/
58
     */
59
    public function iTryToDeleteShippingMethod(ShippingMethodInterface $shippingMethod)
60
    {
61
        $this->sharedStorage->set('shipping_method', $shippingMethod);
62
63
        $this->shippingMethodShowPage->open(['id' => $shippingMethod->getId()]);
64
        $this->shippingMethodShowPage->pressDelete();
65
    }
66
67
    /**
68
     * @Then I should be notified that it is in use
69
     */
70
    public function iShouldBeNotifiedItIsUsed()
71
    {
72
        $message = 'Cannot delete, the shipping method is in use.';
73
74
        expect($this->shippingMethodShowPage->flashContainsMessage($message))->toBe(true);
75
    }
76
77
    /**
78
     * @Then :it should be successfully removed
79
     */
80
    public function shippingMethodShouldBeRemoved(ShippingMethodInterface $shippingMethod)
81
    {
82
        expect($this->shippingMethodIndexPage->isOpen())->toBe(true);
83
84
        expect($this->shippingMethodIndexPage->isThereShippingMethodNamed($shippingMethod->getName()))->toBe(false);
85
    }
86
87
    /**
88
     * @Then :it should not be removed
89
     */
90
    public function shippingMethodShouldNotBeRemoved(ShippingMethodInterface $shippingMethod)
91
    {
92
        expect($this->shippingMethodShowPage->isOpen(['id' => $shippingMethod->getId()]))->toBe(true);
93
94
        expect(
95
            $this->shippingMethodShowPage->verify(['id' => $shippingMethod->getId()])
96
        )->toNotThrow(UnexpectedPageException::class);
97
    }
98
}
99