|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
use Behat\Behat\Context\Context; |
|
4
|
|
|
use Behat\Behat\Hook\Scope\BeforeScenarioScope; |
|
5
|
|
|
use TechDivision\Import\Utils\CommandNames; |
|
6
|
|
|
|
|
7
|
|
|
/** |
|
8
|
|
|
* Defines application features from the specific context. |
|
9
|
|
|
*/ |
|
10
|
|
|
class ProductFeatureContext implements Context |
|
11
|
|
|
{ |
|
12
|
|
|
|
|
13
|
|
|
/** |
|
14
|
|
|
* @var \ConsoleContext |
|
15
|
|
|
*/ |
|
16
|
|
|
private $consoleContext; |
|
17
|
|
|
|
|
18
|
|
|
/** |
|
19
|
|
|
* @var \FeatureContext |
|
20
|
|
|
*/ |
|
21
|
|
|
private $featureContext; |
|
22
|
|
|
|
|
23
|
|
|
/** @BeforeScenario */ |
|
24
|
|
|
public function before(BeforeScenarioScope $scope) |
|
25
|
|
|
{ |
|
26
|
|
|
|
|
27
|
|
|
/** @var Behat\Behat\Context\Environment\InitializedContextEnvironment $environment */ |
|
28
|
|
|
$environment = $scope->getEnvironment(); |
|
29
|
|
|
|
|
30
|
|
|
$this->consoleContext = $environment->getContext(ConsoleContext::class); |
|
31
|
|
|
$this->featureContext = $environment->getContext(FeatureContext::class); |
|
32
|
|
|
} |
|
33
|
|
|
|
|
34
|
|
|
/** |
|
35
|
|
|
* @Then title and price are :arg1,( ) |
|
36
|
|
|
* @Then title and price are :arg1, :arg2 |
|
37
|
|
|
*/ |
|
38
|
|
|
public function assertTitleAndPrice($arg1, $arg2 = null) |
|
39
|
|
|
{ |
|
40
|
|
|
|
|
41
|
|
|
/** @var \Behat\Mink\Element\NodeElement $title */ |
|
42
|
|
|
$title = $this->featureContext->getSession()->getPage()->find('css', 'title'); |
|
43
|
|
|
PHPUnit_Framework_Assert::assertSame($arg1, $title->getText()); |
|
44
|
|
|
|
|
45
|
|
|
if ($this->featureContext->getSession()->getStatusCode() === 200 && $arg2 !== null) { |
|
46
|
|
|
/** @var \Behat\Mink\Element\NodeElement $price */ |
|
47
|
|
|
$price = $this->featureContext->getSession()->getPage()->find('xpath', '//*[@class="price"]'); |
|
48
|
|
|
PHPUnit_Framework_Assert::assertSame($arg2, $price->getText()); |
|
49
|
|
|
} |
|
50
|
|
|
} |
|
51
|
|
|
|
|
52
|
|
|
/** |
|
53
|
|
|
* @Given files with products to be updated are available |
|
54
|
|
|
*/ |
|
55
|
|
|
public function filesWithProductsToBeUpdatedAreAvailable() |
|
56
|
|
|
{ |
|
57
|
|
|
for ($i = 1; $i < 5; $i++) { |
|
58
|
|
|
$this->consoleContext->aThirdPartySystemHasCopiedTheFileIntoTheImportFolder( |
|
59
|
|
|
sprintf('vendor/techdivision/import-sample-data/generic/data/products/add-update/product-import_20161021-161909_0%s.csv', $i), |
|
60
|
|
|
'var/importexport' |
|
61
|
|
|
); |
|
62
|
|
|
} |
|
63
|
|
|
} |
|
64
|
|
|
|
|
65
|
|
|
/** |
|
66
|
|
|
* @Given the import process has been started |
|
67
|
|
|
*/ |
|
68
|
|
|
public function theImportProcessHasBeenStarted() |
|
69
|
|
|
{ |
|
70
|
|
|
$this->consoleContext->theCommandHasBeenExecuted('bin/import-simple import:create:ok-file'); |
|
71
|
|
|
$this->consoleContext->theCommandHasBeenExecuted(sprintf('bin/import-simple %s', CommandNames::IMPORT_PRODUCTS)); |
|
72
|
|
|
} |
|
73
|
|
|
|
|
74
|
|
|
/** |
|
75
|
|
|
* @When the import process has been finished |
|
76
|
|
|
*/ |
|
77
|
|
|
public function assertExitCode() |
|
78
|
|
|
{ |
|
79
|
|
|
|
|
80
|
|
|
PHPUnit_Framework_Assert::assertSame(0, $this->consoleContext->getExitCode()); |
|
81
|
|
|
|
|
82
|
|
|
$this->assertSuccessMessage(); |
|
83
|
|
|
} |
|
84
|
|
|
|
|
85
|
|
|
/** |
|
86
|
|
|
* @Then a success message has to be rendered |
|
87
|
|
|
*/ |
|
88
|
|
|
public function assertSuccessMessage() |
|
89
|
|
|
{ |
|
90
|
|
|
$this->assertMessage( |
|
91
|
|
|
sprintf( |
|
92
|
|
|
'/Successfully executed command %s with serial \w+-\w+-\w+-\w+-\w+ in \d+:\d+:\d+ s/', |
|
93
|
|
|
CommandNames::IMPORT_PRODUCTS |
|
94
|
|
|
) |
|
95
|
|
|
); |
|
96
|
|
|
} |
|
97
|
|
|
|
|
98
|
|
|
/** |
|
99
|
|
|
* @Then a message :arg1 has to be rendered |
|
100
|
|
|
*/ |
|
101
|
|
|
public function assertMessage($arg1) |
|
102
|
|
|
{ |
|
103
|
|
|
|
|
104
|
|
|
$output = $this->consoleContext->getOutput(); |
|
105
|
|
|
|
|
106
|
|
|
PHPUnit_Framework_Assert::assertRegExp($arg1, array_pop($output)); |
|
107
|
|
|
} |
|
108
|
|
|
} |
|
109
|
|
|
|