/** * Prepare filter for assert * * @param FixtureInterface $product * @param Review $review * @param string $gridStatus * @return array */ public function prepareFilter(FixtureInterface $product, Review $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; }
/** * Assert that review is displayed in grid. * * @param ReviewIndex $reviewIndex * @param Review $review * @param FixtureInterface $product * @param string $gridStatus * @return void */ public function processAssert(ReviewIndex $reviewIndex, Review $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.'); }
/** * Assert that Customer review is displayed in grid * * @param ReviewIndex $reviewIndex * @param Review $review * @param AssertProductReviewInGrid $assertProductReviewInGrid * @param CustomerReportReview $customerReportReview * @param Customer $customer * @param CatalogProductSimple $product * @param string $gridStatus * @return void */ public function processAssert(ReviewIndex $reviewIndex, Review $review, AssertProductReviewInGrid $assertProductReviewInGrid, CustomerReportReview $customerReportReview, Customer $customer, CatalogProductSimple $product = null, $gridStatus = '') { $filter = $assertProductReviewInGrid->prepareFilter($product, $review->getData(), $gridStatus); $customerReportReview->open(); $customerReportReview->getGridBlock()->openReview($customer); $reviewIndex->getReviewGrid()->search($filter); unset($filter['visible_in']); \PHPUnit_Framework_Assert::assertTrue($reviewIndex->getReviewGrid()->isRowVisible($filter, false), 'Customer review is absent in Review grid.'); }
/** * Assert that review is visible in review grid for select product * * @param ReviewIndex $reviewIndex * @param Review $review * @param ProductReportReview $productReportReview * @param AssertProductReviewInGrid $assertProductReviewInGrid * @return void */ public function processAssert(ReviewIndex $reviewIndex, Review $review, ProductReportReview $productReportReview, AssertProductReviewInGrid $assertProductReviewInGrid) { $productReportReview->open(); $product = $review->getDataFieldConfig('entity_id')['source']->getEntity(); $productReportReview->getGridBlock()->openReview($product->getName()); unset($assertProductReviewInGrid->filter['visible_in']); $filter = $assertProductReviewInGrid->prepareFilter($product, $review->getData(), ''); \PHPUnit_Framework_Assert::assertTrue($reviewIndex->getReviewGrid()->isRowVisible($filter, false), 'Review for ' . $product->getName() . ' product is not visible in reports grid.'); }
/** * Assert that product review Not available on product page * * @param CatalogProductView $catalogProductView * @param Review $reviewInitial * @param BrowserInterface $browser * @return void */ public function processAssert(CatalogProductView $catalogProductView, Review $reviewInitial, BrowserInterface $browser) { /** @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'); \PHPUnit_Framework_Assert::assertFalse($reviewBlock->isVisibleReviewItem(), 'Error, product review is displayed.'); }
/** * Assert that product rating is displayed on product review(frontend) * * @param CatalogProductView $catalogProductView * @param BrowserInterface $browser * @param CatalogProductSimple $product * @param Review|null $review [optional] * @param Rating|null $productRating [optional] * @return void */ public function processAssert(CatalogProductView $catalogProductView, BrowserInterface $browser, CatalogProductSimple $product, Review $review = null, Rating $productRating = null) { $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $reviewSummaryBlock = $catalogProductView->getReviewSummary(); if ($reviewSummaryBlock->isVisible()) { $reviewSummaryBlock->getAddReviewLink()->click(); } $rating = $productRating ? $productRating : $review->getDataFieldConfig('ratings')['source']->getRatings()[0]; $reviewForm = $catalogProductView->getReviewFormBlock(); \PHPUnit_Framework_Assert::assertTrue($reviewForm->isVisibleRating($rating), 'Product rating "' . $rating->getRatingCode() . '" is not displayed.'); }
/** * Assert that product review can do approved. * * @param ReviewIndex $reviewIndex * @param Review $review * @param ReviewEdit $reviewEdit * @param AssertReviewSuccessSaveMessage $assertReviewSuccessSaveMessage * @param AdminCache $cachePage * @return void */ public function processAssert(ReviewIndex $reviewIndex, Review $review, ReviewEdit $reviewEdit, AssertReviewSuccessSaveMessage $assertReviewSuccessSaveMessage, AdminCache $cachePage) { $this->cachePage = $cachePage; $reviewIndex->open(); $reviewGrid = $reviewIndex->getReviewGrid(); $reviewGrid->searchAndOpen(['title' => $review->getTitle()]); $reviewEdit->getReviewForm()->setApproveReview(); $reviewEdit->getPageActions()->save(); $assertReviewSuccessSaveMessage->processAssert($reviewIndex); $this->flushCacheStorageWithAssert(); }
/** * Assert that product rating is displayed on product review(backend) * * @param ReviewIndex $reviewIndex * @param ReviewEdit $reviewEdit * @param Review $review * @param Review|null $reviewInitial [optional] * @return void */ public function processAssert(ReviewIndex $reviewIndex, ReviewEdit $reviewEdit, Review $review, Review $reviewInitial = null) { $filter = ['title' => $review->getTitle()]; $reviewIndex->open(); $reviewIndex->getReviewGrid()->searchAndOpen($filter); $ratingReview = array_replace($reviewInitial && $reviewInitial->hasData('ratings') ? $reviewInitial->getRatings() : [], $review->hasData('ratings') ? $review->getRatings() : []); $ratingReview = $this->sortDataByPath($ratingReview, '::title'); $ratingForm = $reviewEdit->getReviewForm()->getData(); $ratingForm = $this->sortDataByPath($ratingForm['ratings'], '::title'); $error = $this->verifyData($ratingReview, $ratingForm); \PHPUnit_Framework_Assert::assertTrue(empty($error), $error); }
/** * Prepare Review data * * @param Review $review * @param Review $reviewInitial * @return array */ protected function prepareData(Review $review, Review $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 review data on edit page equals passed from fixture. * * @param ReviewIndex $reviewIndex * @param Review $review * @param ReviewEdit $reviewEdit * @return void */ public function processAssert(ReviewIndex $reviewIndex, Review $review, ReviewEdit $reviewEdit) { $reviewIndex->open(); $reviewGrid = $reviewIndex->getReviewGrid(); $reviewGrid->searchAndOpen(['title' => $review->getTitle()]); $fixtureData = $review->getData(); $formData = $reviewEdit->getReviewForm()->getData(); if (isset($fixtureData['type'])) { $formData['type'] = $reviewEdit->getReviewForm()->getPostedBy(); } $error = $this->verifyData($fixtureData, $formData); \PHPUnit_Framework_Assert::assertEmpty($error, $error); }
/** * Run moderate product review test. * * @param Review $reviewInitial * @param Review $review * @return array */ public function test(Review $reviewInitial, Review $review) { // Precondition $reviewInitial->persist(); // Steps $this->reviewIndex->open(); $this->reviewIndex->getReviewGrid()->searchAndOpen(['review_id' => $reviewInitial->getReviewId()]); $this->reviewEdit->getReviewForm()->fill($review); $this->reviewEdit->getPageActions()->save(); // Prepare data for asserts $product = $reviewInitial->getDataFieldConfig('entity_id')['source']->getEntity(); return ['product' => $product]; }
/** * Assert that product review available on product page. * * @param CatalogProductView $catalogProductView * @param Review $review * @param FixtureInterface $product * @param BrowserInterface $browser * @param AdminCache $cachePage * @return void */ public function processAssert(CatalogProductView $catalogProductView, Review $review, FixtureInterface $product, BrowserInterface $browser, AdminCache $cachePage) { $errors = []; $cachePage->open()->getActionsBlock()->flushMagentoCache(); $browser->open($_ENV['app_frontend_url'] . $product->getUrlKey() . '.html'); $reviewBlock = $catalogProductView->getCustomerReviewBlock(); $catalogProductView->getViewBlock()->selectTab('Reviews'); \PHPUnit_Framework_Assert::assertContains(sprintf("You're reviewing:\n%s", $product->getName()), $catalogProductView->getReviewFormBlock()->getLegend()->getText()); 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)); }
/** * Clear data after test * * @return void */ public function tearDown() { $this->ratingIndex->open(); if ($this->review instanceof Review) { foreach ($this->review->getRatings() as $rating) { $this->ratingIndex->getRatingGrid()->searchAndOpen(['rating_code' => $rating['title']]); $this->ratingEdit->getPageActions()->delete(); } } }
/** * Clear data after test. * * @return void */ public function tearDown() { if (!$this->reviewInitial instanceof Review) { return; } $this->ratingIndex->open(); foreach ($this->reviewInitial->getRatings() as $rating) { $this->ratingIndex->getRatingGrid()->searchAndOpen(['rating_code' => $rating['title']]); $this->ratingEdit->getPageActions()->delete(); $this->ratingEdit->getModalBlock()->acceptAlert(); } }
/** * Creation product review report entity * * @param Review $review * @return void */ public function test(Review $review) { // Preconditions $review->persist(); }
/** * Assert that Product Review Report is visible in reports grid * * @param ProductReportReview $productReportReview * @param Review $review * @return void */ public function processAssert(ProductReportReview $productReportReview, Review $review) { $productReportReview->open(); $name = $review->getDataFieldConfig('entity_id')['source']->getEntity()->getName(); \PHPUnit_Framework_Assert::assertTrue($productReportReview->getGridBlock()->isRowVisible(['title' => $name], false), 'Review for ' . $name . ' product is not visible in reports grid.'); }
/** * Verify that review is equals to data on form * * @param Review $review * @param Form $form * @return bool */ protected function verifyReviewBackendForm(Review $review, Form $form) { $reviewData = []; foreach ($review->getData()['fields'] as $key => $field) { $reviewData[$key] = $field['value']; } $dataDiff = array_diff($reviewData, $form->getData($review)); return empty($dataDiff); }