/** * Assert that child products generated during configurable product are present in products grid * * @param CatalogProductIndex $productGrid * @param ConfigurableProduct $product * @return void */ public function processAssert(CatalogProductIndex $productGrid, ConfigurableProduct $product) { $configurableAttributesData = $product->getConfigurableAttributesData(); $errors = []; $productGrid->open(); foreach ($configurableAttributesData['matrix'] as $variation) { $filter = ['name' => $variation['name'], 'type' => isset($variation['weight']) && (int) $variation['weight'] > 0 ? 'Simple Product' : 'Virtual Product', 'sku' => $variation['sku'], 'visibility' => self::NOT_VISIBLE_INDIVIDUALLY]; if (!$productGrid->getProductGrid()->isRowVisible($filter)) { $errors[] = sprintf('Child product with name: "%s" and sku:"%s" is absent in grid.', $filter['name'], $filter['sku']); } } \PHPUnit_Framework_Assert::assertEmpty($errors, implode(' ', $errors)); }
/** * Assert that products generated during configurable product creation - are not visible on frontend(by default). * * @param CatalogSearchResult $catalogSearchResult * @param CmsIndex $cmsIndex * @param ConfigurableProduct $product * @return void */ public function processAssert(CatalogsearchResult $catalogSearchResult, CmsIndex $cmsIndex, ConfigurableProduct $product) { $configurableAttributesData = $product->getConfigurableAttributesData(); $errors = []; $cmsIndex->open(); foreach ($configurableAttributesData['matrix'] as $variation) { $cmsIndex->getSearchBlock()->search($variation['sku']); $isVisibleProduct = $catalogSearchResult->getListProductBlock()->isProductVisible($variation['name']); while (!$isVisibleProduct && $catalogSearchResult->getBottomToolbar()->nextPage()) { $isVisibleProduct = $catalogSearchResult->getListProductBlock()->isProductVisible($product->getName()); } if ($isVisibleProduct) { $errors[] = sprintf("\nChild product with sku: \"%s\" is visible on frontend(by default).", $variation['sku']); } } \PHPUnit_Framework_Assert::assertEmpty($errors, implode(' ', $errors)); }