Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AbstractCompareProductsTest.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Catalog\Test\Page\Product\CatalogProductCompare;
10 use Magento\Catalog\Test\Page\Product\CatalogProductView;
11 use Magento\Cms\Test\Page\CmsIndex;
13 use Magento\Mtf\Client\BrowserInterface;
14 use Magento\Mtf\Constraint\AbstractConstraint;
15 use Magento\Mtf\Fixture\FixtureFactory;
16 use Magento\Mtf\Fixture\InjectableFixture;
17 use Magento\Mtf\TestCase\Injectable;
18 
24 abstract class AbstractCompareProductsTest extends Injectable
25 {
31  protected $products;
32 
38  protected $cmsIndex;
39 
45  protected $browser;
46 
53 
60 
66  protected $fixtureFactory;
67 
73  protected $customer;
74 
82  public function __prepare(FixtureFactory $fixtureFactory, Customer $customer)
83  {
84  $this->fixtureFactory = $fixtureFactory;
85  $customer->persist();
86  $this->customer = $customer;
87  }
88 
97  public function __inject(
98  CmsIndex $cmsIndex,
99  CatalogProductView $catalogProductView,
100  BrowserInterface $browser
101  ) {
102  $this->cmsIndex = $cmsIndex;
103  $this->catalogProductView = $catalogProductView;
104  $this->browser = $browser;
105  }
106 
112  protected function loginCustomer()
113  {
114  $this->objectManager->create(
115  \Magento\Customer\Test\TestStep\LoginCustomerOnFrontendStep::class,
116  ['customer' => $this->customer]
117  )->run();
118  }
119 
126  protected function createProducts($products)
127  {
128  $products = explode(',', $products);
129  foreach ($products as $key => $product) {
130  list($fixture, $dataset) = explode('::', $product);
131  $product = $this->fixtureFactory->createByCode($fixture, ['dataset' => $dataset]);
132  $product->persist();
133  $products[$key] = $product;
134  }
135  return $products;
136  }
137 
145  protected function addProducts(array $products, AbstractConstraint $assert = null)
146  {
147  foreach ($products as $itemProduct) {
148  $this->browser->open($_ENV['app_frontend_url'] . $itemProduct->getUrlKey() . '.html');
149  $this->catalogProductView->getViewBlock()->clickAddToCompare();
150  if ($assert !== null) {
151  $this->productCompareAssert($assert, $itemProduct);
152  }
153  }
154  }
155 
163  protected function productCompareAssert(AbstractConstraint $assert, InjectableFixture $product)
164  {
165  $assert->configure(['catalogProductView' => $this->catalogProductView, 'product' => $product]);
166  \PHPUnit\Framework\Assert::assertThat($this->getName(), $assert);
167  }
168 }
__inject(CmsIndex $cmsIndex, CatalogProductView $catalogProductView, BrowserInterface $browser)
__prepare(FixtureFactory $fixtureFactory, Customer $customer)
productCompareAssert(AbstractConstraint $assert, InjectableFixture $product)