/** * Assert that review is displayed in grid * * @param ReviewIndex $reviewIndex * @param ReviewInjectable $review , * @param FixtureInterface $product * @param string $gridStatus * @return void */ public function processAssert(ReviewIndex $reviewIndex, ReviewInjectable $review, FixtureInterface $product, $gridStatus = '') { $filter = $this->prepareFilter($product, $review->getData(), $gridStatus); $reviewIndex->open(); $reviewIndex->getReviewGrid()->search($filter); unset($filter['visible_in']); \PHPUnit_Framework_Assert::assertTrue($reviewIndex->getReviewGrid()->isRowVisible($filter, false), 'Review is absent in Review grid.'); }
/** * Prepare Review data * * @param ReviewInjectable $review * @param ReviewInjectable $reviewInitial * @return array */ protected function prepareData(ReviewInjectable $review, ReviewInjectable $reviewInitial) { $dataReviewInitial = $reviewInitial->getData(); $data = $review->getData(); foreach ($dataReviewInitial as $key => $value) { if (!isset($data[$key])) { $data[$key] = $value; } } $data['type'] = 'Customer'; return $data; }
/** * Assert that product review available on product page * * @param CatalogProductView $catalogProductView * @param ReviewInjectable $review * @param FixtureInterface $product * @param Browser $browser * @param AdminCache $cachePage * @return void */ public function processAssert(CatalogProductView $catalogProductView, ReviewInjectable $review, FixtureInterface $product, Browser $browser, AdminCache $cachePage) { $errors = []; $cachePage->open()->getActionsBlock()->flushMagentoCache(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $reviewBlock = $catalogProductView->getCustomerReviewBlock(); $catalogProductView->getViewBlock()->selectTab('Reviews'); foreach ($review->getData() as $name => $value) { $reviewValue = $reviewBlock->getFieldValue($name); if ($reviewValue !== null && 0 !== strcasecmp($value, trim($reviewValue))) { $errors[] = '- field "' . $name . '" is not equals submitted one, error value "' . $value . '"'; } } \PHPUnit_Framework_Assert::assertEmpty($errors, 'The Review contains the following errors:' . PHP_EOL . implode(PHP_EOL, $errors)); }
/** * Assert that product review available on product page * * @param CatalogProductView $catalogProductView * @param ReviewInjectable $review * @param ReviewInjectable $reviewInitial * @param Browser $browser * @return void */ public function processAssert(CatalogProductView $catalogProductView, ReviewInjectable $review, ReviewInjectable $reviewInitial, Browser $browser) { $errors = []; /** @var CatalogProductSimple $product */ $product = $reviewInitial->getDataFieldConfig('entity_id')['source']->getEntity(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $reviewBlock = $catalogProductView->getCustomerReviewBlock(); $catalogProductView->getViewBlock()->selectTab('Reviews'); foreach ($review->getData() as $name => $value) { $reviewValue = $reviewBlock->getFieldValue($name); if ($reviewValue !== null && 0 !== strcasecmp($value, trim($reviewValue))) { $errors[] = '- field "' . $name . '" is not equals submitted one, error value "' . $value . '"'; } } \PHPUnit_Framework_Assert::assertEmpty($errors, 'The Review contains the following errors:' . PHP_EOL . implode(PHP_EOL, $errors)); }
/** * Prepare filter for assert * * @param FixtureInterface $product * @param ReviewInjectable $review * @param string $gridStatus * @return array */ public function prepareFilter(FixtureInterface $product, ReviewInjectable $review, $gridStatus) { $filter = []; foreach ($this->filter as $key => $item) { list($type, $param) = [$key, $item]; if (is_numeric($key)) { $type = $param = $item; } switch ($param) { case 'name': case 'sku': $value = $product->getData($param); break; case 'select_stores': $value = $review->getData($param)[0]; break; case 'status_id': $value = $gridStatus != '' ? $gridStatus : $review->getData($param); break; default: $value = $review->getData($param); break; } if ($value !== null) { $filter += [$type => $value]; } } return $filter; }
/** * Create review * * @param ReviewInjectable $review * @param int $rating * @return ReviewInjectable */ protected function createReview($review, $rating) { $reviewData = $review->getData(); $fixtureRating = $this->reviewInitial->getDataFieldConfig('ratings')['source']->getRatings()[0]; $reviewData['ratings'][0] = ['fixtureRating' => $fixtureRating, 'rating' => $rating]; return $this->fixtureFactory->createByCode('reviewInjectable', ['data' => $reviewData]); }