/**
  * Prepare data
  *
  * @param FixtureFactory $fixtureFactory
  * @return array
  */
 public function __prepare(FixtureFactory $fixtureFactory)
 {
     /** @var CatalogProductSimple $productSymbols */
     $productSymbols = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'abc_dfj_simple_for_advancedsearch']);
     $productSymbols->persist();
     /** @var CatalogProductSimple $productNumbers */
     $productNumbers = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'adc_123_simple_for_advancedsearch']);
     $productNumbers->persist();
     return ['productsSearch' => ['simple_1' => $productSymbols, 'simple_2' => $productNumbers]];
 }
Beispiel #2
0
 /**
  * Create products
  *
  * @return array
  */
 public function run()
 {
     $products = [];
     $productsDataSets = explode(',', $this->products);
     foreach ($productsDataSets as $key => $productDataSet) {
         list($fixtureClass, $dataSet) = explode('::', $productDataSet);
         /** @var FixtureInterface[] $products */
         $products[$key] = $this->fixtureFactory->createByCode(trim($fixtureClass), ['dataSet' => trim($dataSet)]);
         $products[$key]->persist();
     }
     return ['products' => $products];
 }
Beispiel #3
0
 /**
  * Constructor
  *
  * @constructor
  * @param FixtureFactory $fixtureFactory
  * @param array $data
  * @param array $params [optional]
  */
 public function __construct(FixtureFactory $fixtureFactory, array $data, array $params = [])
 {
     $this->params = $params;
     if ($data['preset']) {
         $this->currentPreset = $data['preset'];
         $this->data = $this->getPreset($this->currentPreset);
         if (!empty($data['products'])) {
             $this->data['products'] = [];
             $this->data['products'] = explode('|', $data['products']);
             foreach ($this->data['products'] as $key => $products) {
                 $this->data['products'][$key] = explode(',', $products);
             }
         }
     }
     if (!empty($this->data['products'])) {
         $productsSelections = $this->data['products'];
         $this->data['products'] = [];
         foreach ($productsSelections as $index => $products) {
             $productSelection = [];
             foreach ($products as $key => $product) {
                 list($fixture, $dataSet) = explode('::', $product);
                 $productSelection[$key] = $fixtureFactory->createByCode($fixture, ['dataSet' => $dataSet]);
                 $productSelection[$key]->persist();
                 $this->data['bundle_options'][$index]['assigned_products'][$key]['search_data']['name'] = $productSelection[$key]->getName();
             }
             $this->data['products'][] = $productSelection;
         }
     }
 }
 /**
  * Assert that displayed category data on category page equals to passed from fixture
  *
  * @param CatalogCategory $category
  * @param CatalogCategory $initialCategory
  * @param FixtureFactory $fixtureFactory
  * @param CatalogCategoryView $categoryView
  * @param Browser $browser
  * @return void
  */
 public function processAssert(CatalogCategory $category, CatalogCategory $initialCategory, FixtureFactory $fixtureFactory, CatalogCategoryView $categoryView, Browser $browser)
 {
     $product = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'default', 'data' => ['category_ids' => ['category' => $initialCategory]]]);
     $categoryData = array_merge($initialCategory->getData(), $category->getData());
     $product->persist();
     $url = $_ENV['app_frontend_url'] . strtolower($category->getUrlKey()) . '.html';
     $browser->open($url);
     \PHPUnit_Framework_Assert::assertEquals($url, $browser->getUrl(), 'Wrong page URL.' . "\nExpected: " . $url . "\nActual: " . $browser->getUrl());
     if (isset($categoryData['name'])) {
         $title = $categoryView->getTitleBlock()->getTitle();
         \PHPUnit_Framework_Assert::assertEquals($categoryData['name'], $title, 'Wrong page title.' . "\nExpected: " . $categoryData['name'] . "\nActual: " . $title);
     }
     if (isset($categoryData['description'])) {
         $description = $categoryView->getViewBlock()->getDescription();
         \PHPUnit_Framework_Assert::assertEquals($categoryData['description'], $description, 'Wrong category description.' . "\nExpected: " . $categoryData['description'] . "\nActual: " . $description);
     }
     if (isset($categoryData['default_sort_by'])) {
         $sortBy = strtolower($categoryData['default_sort_by']);
         $sortType = $categoryView->getTopToolbar()->getSelectSortType();
         \PHPUnit_Framework_Assert::assertEquals($sortBy, $sortType, 'Wrong sorting type.' . "\nExpected: " . $sortBy . "\nActual: " . $sortType);
     }
     if (isset($categoryData['available_sort_by'])) {
         $availableSortType = array_filter($categoryData['available_sort_by'], function (&$value) {
             return $value !== '-' && ucfirst($value);
         });
         if ($availableSortType) {
             $availableSortType = array_values($availableSortType);
             $availableSortTypeOnPage = $categoryView->getTopToolbar()->getSortType();
             \PHPUnit_Framework_Assert::assertEquals($availableSortType, $availableSortTypeOnPage, 'Wrong available sorting type.' . "\nExpected: " . implode(PHP_EOL, $availableSortType) . "\nActual: " . implode(PHP_EOL, $availableSortTypeOnPage));
         }
     }
 }
 /**
  * "Selections" source constructor
  *
  * @param FixtureFactory $fixtureFactory
  * @param array $data
  * @param array $params [optional]
  * @throws \Exception
  */
 public function __construct(FixtureFactory $fixtureFactory, array $data, array $params = [])
 {
     $this->params = $params;
     if ($data['preset']) {
         $this->currentPreset = $data['preset'];
         $this->data = $this->getPreset($this->currentPreset);
         if (!empty($data['products'])) {
             $this->data['products'] = [];
             $this->data['products'][] = explode(',', $data['products']);
         }
     }
     if (!empty($this->data['products'])) {
         $productsSelections = $this->data['products'];
         $this->data['products'] = [];
         foreach ($productsSelections as $products) {
             $productSelection = [];
             foreach ($products as $product) {
                 list($fixture, $dataSet) = explode('::', $product);
                 /** @var $productFixture InjectableFixture */
                 $productFixture = $fixtureFactory->createByCode($fixture, ['dataSet' => $dataSet]);
                 if (!$productFixture->hasData('id')) {
                     $productFixture->persist();
                 }
                 $productSelection[] = $productFixture;
             }
             $this->data['products'][] = $productSelection;
         }
         foreach ($this->data['bundle_options'] as $optionKey => &$bundleOption) {
             foreach ($bundleOption['assigned_products'] as $productKey => &$assignedProducts) {
                 $assignedProducts['search_data']['name'] = $this->data['products'][$optionKey][$productKey]->getName();
             }
             unset($bundleOption, $assignedProducts);
         }
     }
 }
 /**
  * Inject page
  *
  * @param UrlrewriteEdit $urlRewriteEdit
  * @param UrlrewriteIndex $urlRewriteIndex
  * @param FixtureFactory $fixtureFactory
  * @return array
  */
 public function __inject(UrlrewriteEdit $urlRewriteEdit, UrlRewriteIndex $urlRewriteIndex, FixtureFactory $fixtureFactory)
 {
     $this->urlRewriteEdit = $urlRewriteEdit;
     $this->urlRewriteIndex = $urlRewriteIndex;
     $category = $fixtureFactory->createByCode('catalogCategory', ['dataSet' => 'default_subcategory']);
     $category->persist();
     return ['category' => $category];
 }
 /**
  * Merging user data and returns custom user
  *
  * @param User $user
  * @param User $initialUser
  * @return User
  */
 protected function mergeUsers(User $user, User $initialUser)
 {
     $data = array_merge($initialUser->getData(), $user->getData());
     if (isset($data['role_id'])) {
         $data['role_id'] = ['role' => $user->hasData('role_id') ? $user->getDataFieldConfig('role_id')['source']->getRole() : $initialUser->getDataFieldConfig('role_id')['source']->getRole()];
     }
     return $this->fixtureFactory->createByCode('user', ['data' => $data]);
 }
 /**
  * Prepare dataSets and pages
  *
  * @param UrlrewriteIndex $urlRewriteIndex
  * @param UrlrewriteEdit $urlRewriteEdit
  * @param FixtureFactory $fixtureFactory
  * @param CatalogCategory $category
  * @return array
  */
 public function __inject(UrlrewriteIndex $urlRewriteIndex, UrlrewriteEdit $urlRewriteEdit, FixtureFactory $fixtureFactory, CatalogCategory $category)
 {
     $this->urlRewriteIndex = $urlRewriteIndex;
     $this->urlRewriteEdit = $urlRewriteEdit;
     $category->persist();
     $categoryRedirect = $fixtureFactory->createByCode('urlRewrite', ['dataSet' => 'default', 'data' => ['id_path' => ['category/' . $category->getId()]]]);
     $categoryRedirect->persist();
     return ['categoryRedirect' => $categoryRedirect, 'category' => $category];
 }
 /**
  * Create Customers
  *
  * @param int $customersQty
  * @return CustomerInjectable[]
  */
 protected function createCustomers($customersQty)
 {
     $customers = [];
     for ($i = 0; $i < $customersQty; $i++) {
         $customer = $this->fixtureFactory->createByCode('customerInjectable', ['dataSet' => 'default']);
         $customer->persist();
         $customers[] = $customer;
     }
     return $customers;
 }
 /**
  * Assert that deleted attribute can't be mapped to Google Attribute (attribute doesn't appear in Attributes
  * Mapping -> Google Content - Attributes after selecting attribute set)
  *
  * @param FixtureFactory $fixtureFactory
  * @param CatalogAttributeSet $productTemplate
  * @param GoogleShoppingTypesIndex $shoppingTypesIndex
  * @param GoogleShoppingTypesNew $shoppingTypesNew
  * @return void
  */
 public function processAssert(FixtureFactory $fixtureFactory, CatalogAttributeSet $productTemplate, GoogleShoppingTypesIndex $shoppingTypesIndex, GoogleShoppingTypesNew $shoppingTypesNew)
 {
     $shoppingTypesIndex->open();
     $shoppingTypesIndex->getPageActionsBlock()->addNew();
     $shoppingAttributes = $fixtureFactory->createByCode('googleShoppingAttribute', ['dataSet' => 'default', 'data' => ['attribute_set_id' => ['attribute_set' => $productTemplate]]]);
     $shoppingTypesNew->getGoogleShoppingForm()->fill($shoppingAttributes);
     $shoppingTypesNew->getGoogleShoppingForm()->clickAddNewAttribute();
     $attributeCode = $productTemplate->getDataFieldConfig('assigned_attributes')['source']->getAttributes()[0]->getAttributeCode();
     \PHPUnit_Framework_Assert::assertFalse($shoppingTypesNew->getGoogleShoppingForm()->findAttribute($attributeCode), "Attribute " . $attributeCode . " is present in Attribute set mapping");
 }
 /**
  * Assert check whether the attribute is used to create a configurable products
  *
  * @param CatalogProductAttribute $productAttribute
  * @param CatalogProductAttribute $attribute
  * @param CatalogProductIndex $productGrid
  * @param FixtureFactory $fixtureFactory
  * @param CatalogProductNew $newProductPage
  */
 public function processAssert(CatalogProductAttribute $attribute, CatalogProductIndex $productGrid, FixtureFactory $fixtureFactory, CatalogProductNew $newProductPage, CatalogProductAttribute $productAttribute = null)
 {
     $this->attribute = !is_null($productAttribute) ? $productAttribute : $attribute;
     $productGrid->open();
     $productGrid->getGridPageActionBlock()->addProduct('configurable');
     $productConfigurable = $fixtureFactory->createByCode('catalogProductConfigurable', ['dataSet' => 'default', 'data' => ['configurable_attributes_data' => ['preset' => 'one_variation', 'attributes' => [$this->attribute]]]]);
     $productBlockForm = $newProductPage->getProductForm();
     $productBlockForm->fill($productConfigurable);
     \PHPUnit_Framework_Assert::assertTrue($productBlockForm->checkAttributeInSearchAttributeForm($this->attribute), "Product attribute is absent on the product page.");
 }
 /**
  * Assert that Compare Products block is presented on CMS pages.
  * Block contains information about compared products
  *
  * @param array $products
  * @param CmsIndex $cmsIndex
  * @param FixtureFactory $fixtureFactory
  * @param Browser $browser
  * @return void
  */
 public function processAssert(array $products, CmsIndex $cmsIndex, FixtureFactory $fixtureFactory, Browser $browser)
 {
     $newCmsPage = $fixtureFactory->createByCode('cmsPage', ['dataSet' => '3_column_template']);
     $newCmsPage->persist();
     $browser->open($_ENV['app_frontend_url'] . $newCmsPage->getIdentifier());
     foreach ($products as &$product) {
         $product = $product->getName();
     }
     \PHPUnit_Framework_Assert::assertEquals($products, $cmsIndex->getCompareProductsBlock()->getProducts(), 'Compare product block contains NOT valid information about compared products.');
 }
 /**
  * Create products
  *
  * @param string $products
  * @return array
  */
 protected function createProducts($products)
 {
     $products = explode(',', $products);
     foreach ($products as $key => $product) {
         list($fixture, $dataSet) = explode('::', $product);
         $product = $this->fixtureFactory->createByCode($fixture, ['dataSet' => $dataSet]);
         $product->persist();
         $products[$key] = $product;
     }
     return $products;
 }
 /**
  * Assert that created product template:
  * 1. Displays in product template suggest container dropdown
  * 2. Can be used for new created product.
  *
  * @param FixtureFactory $fixtureFactory
  * @param CatalogProductEdit $productEdit
  * @param CatalogProductIndex $productGrid
  * @param CatalogAttributeSet $attributeSet
  * @param CatalogProductNew $newProductPage
  * @param CatalogProductAttribute $productAttributeOriginal
  * @return void
  */
 public function processAssert(FixtureFactory $fixtureFactory, CatalogProductEdit $productEdit, CatalogProductIndex $productGrid, CatalogAttributeSet $attributeSet, CatalogProductNew $newProductPage, CatalogProductAttribute $productAttributeOriginal)
 {
     $productGrid->open();
     $productGrid->getGridPageActionBlock()->addProduct('simple');
     $productBlockForm = $newProductPage->getProductForm();
     /**@var CatalogProductSimple $catalogProductSimple */
     $productSimple = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'default', 'data' => ['attribute_set_id' => ['attribute_set' => $attributeSet]]]);
     $productBlockForm->fill($productSimple);
     \PHPUnit_Framework_Assert::assertTrue($productEdit->getProductForm()->isTabVisible($attributeSet->getGroup()), "Product Group is absent on Product form tabs.");
     $productEdit->getProductForm()->openCustomTab($attributeSet->getGroup());
     \PHPUnit_Framework_Assert::assertTrue($productEdit->getProductForm()->checkAttributeLabel($productAttributeOriginal), "Product Attribute is absent on Product form.");
 }
 /**
  * Create products
  *
  * @param string $productList
  * @return array
  */
 protected function prepareProducts($productList)
 {
     $productsData = explode(', ', $productList);
     $products = [];
     foreach ($productsData as $productConfig) {
         $product = explode('::', $productConfig);
         $productFixture = $this->fixtureFactory->createByCode($product[0], ['dataSet' => $product[1]]);
         $productFixture->persist();
         $products[] = $productFixture;
     }
     return $products;
 }
Beispiel #16
0
 /**
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet'])) {
         /** @var CatalogAttributeSet $attributeSet */
         $attributeSet = $fixtureFactory->createByCode('catalogAttributeSet', ['dataSet' => $data['dataSet']]);
         $this->prepareData($attributeSet);
     }
     if (isset($data['attribute_set']) && $data['attribute_set'] instanceof CatalogAttributeSet) {
         $this->prepareData($data['attribute_set']);
     }
 }
Beispiel #17
0
 /**
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param string $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, $data)
 {
     $this->params = $params;
     if (preg_match('`%(.*?)%`', $data, $store)) {
         /** @var Store $storeFixture */
         $storeFixture = $fixtureFactory->createByCode('store', ['dataSet' => $store[1]]);
         if (!$storeFixture->hasData('store_id')) {
             $storeFixture->persist();
         }
         $data = str_replace('%' . $store[1] . '%', $storeFixture->getName(), $data);
     }
     $this->data = $data;
 }
Beispiel #18
0
 /**
  * Constructor
  *
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data [optional]
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet'])) {
         $website = $fixtureFactory->createByCode('website', ['dataSet' => $data['dataSet']]);
         /** @var Website $website */
         if (!$website->getWebsiteId()) {
             $website->persist();
         }
         $this->website = $website;
         $this->data = $website->getName();
     }
 }
Beispiel #19
0
 /**
  * @constructor
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array|int $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, $data = [])
 {
     $this->params = $params;
     if ($data['dataSet']) {
         $this->parentCategory = $fixtureFactory->createByCode('catalogCategory', ['dataSet' => $data['dataSet']]);
         if (!$this->parentCategory->hasData('id')) {
             $this->parentCategory->persist();
         }
         $this->data = $this->parentCategory->getId();
     } else {
         $this->data = $data;
     }
 }
Beispiel #20
0
 /**
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet']) && $data['dataSet'] !== '-') {
         $parentSet = $fixtureFactory->createByCode('catalogAttributeSet', ['dataSet' => $data['dataSet']]);
         if (!$parentSet->hasData('attribute_set_id')) {
             $parentSet->persist();
         }
         /** @var CatalogAttributeSet $parentSet */
         $this->data = $parentSet->getAttributeSetName();
         $this->attributeSet = $parentSet;
     }
 }
Beispiel #21
0
 /**
  * @constructor
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data [optional]
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet'])) {
         list($typeFixture, $dataSet) = explode('::', $data['dataSet']);
         $fixture = $fixtureFactory->createByCode($typeFixture, ['dataSet' => $dataSet]);
         if (!$fixture->hasData('id')) {
             $fixture->persist();
         }
         $this->entity = $fixture;
         $this->data = $fixture->getId();
     }
 }
Beispiel #22
0
 /**
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet']) && $data['dataSet'] !== '-') {
         $attributeSet = $fixtureFactory->createByCode('catalogAttributeSet', ['dataSet' => $data['dataSet']]);
     }
     if (isset($data['attribute_set']) && $data['attribute_set'] instanceof CatalogAttributeSet) {
         $attributeSet = $data['attribute_set'];
     }
     /** @var CatalogAttributeSet $attributeSet */
     $this->data = $attributeSet->getAttributeSetName();
     $this->attributeSet = $attributeSet;
 }
Beispiel #23
0
 /**
  * Constructor
  *
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data [optional]
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet'])) {
         $category = $fixtureFactory->createByCode('catalogCategory', ['dataSet' => $data['dataSet']]);
         /** @var CatalogCategory $category */
         if (!$category->getId()) {
             $category->persist();
         }
         $this->category = $category;
         $this->data = $category->getName();
     }
 }
Beispiel #24
0
 /**
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     $explodeValue = explode('::', $data['value']);
     if (!empty($explodeValue) && count($explodeValue) > 1) {
         /** @var FixtureInterface $fixture */
         $fixture = $fixtureFactory->createByCode($explodeValue[0]);
         $fixture->persist();
         $this->data = $fixture->{$explodeValue}[1]();
     } else {
         $this->data = strval($data['value']);
     }
 }
 /**
  * Assert that customer group find on account information page
  *
  * @param FixtureFactory $fixtureFactory
  * @param CustomerGroupInjectable $customerGroup
  * @param CustomerIndexNew $customerIndexNew
  * @param CustomerIndex $customerIndex
  * @return void
  */
 public function processAssert(FixtureFactory $fixtureFactory, CustomerGroupInjectable $customerGroup, CustomerIndexNew $customerIndexNew, CustomerIndex $customerIndex)
 {
     /** @var CustomerInjectable $customer */
     $customer = $fixtureFactory->createByCode('customerInjectable', ['dataSet' => 'defaultBackend', 'data' => ['group_id' => ['customerGroup' => $customerGroup]]]);
     $filter = ['email' => $customer->getEmail()];
     $customerIndexNew->open();
     $customerIndexNew->getCustomerForm()->fillCustomer($customer);
     $customerIndexNew->getPageActionsBlock()->save();
     $customerIndex->getCustomerGridBlock()->searchAndOpen($filter);
     $customerFormData = $customerIndexNew->getCustomerForm()->getData($customer);
     $customerFixtureData = $customer->getData();
     $diff = array_diff($customerFixtureData, $customerFormData);
     \PHPUnit_Framework_Assert::assertTrue(empty($diff), "Customer group {$customerGroup->getCustomerGroupCode()} not in customer form.");
 }
Beispiel #26
0
 /**
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data)
 {
     $this->params = $params;
     if (isset($data['dataSet']) && $data['dataSet'] !== '-') {
         $dataSet = $data['dataSet'];
         /** @var \Magento\Tax\Test\Fixture\TaxClass $taxClass */
         $taxClass = $fixtureFactory->createByCode('taxClass', ['dataSet' => $dataSet]);
         if (!$taxClass->hasData('id')) {
             $taxClass->persist();
         }
         $this->data = $taxClass->getClassName();
         $this->taxClass = $taxClass;
     }
 }
Beispiel #27
0
 /**
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet'])) {
         $dataSets = $data['dataSet'];
         foreach ($dataSets as $dataSet) {
             if ($dataSet !== '-') {
                 /** @var \Magento\Tax\Test\Fixture\TaxRate $taxRate */
                 $taxRate = $fixtureFactory->createByCode('taxRate', ['dataSet' => $dataSet]);
                 $this->fixture[] = $taxRate;
                 $this->data[] = $taxRate->getCode();
             }
         }
     }
 }
 /**
  * @param User $user
  * @param User $adminUser
  * @param string $isDuplicated
  * @return void
  */
 public function test(User $user, User $adminUser, $isDuplicated)
 {
     // Prepare data
     if ($isDuplicated != '-') {
         $data = $user->getData();
         $data[$isDuplicated] = $adminUser->getData($isDuplicated);
         $data['role_id'] = ['role' => $user->getDataFieldConfig('role_id')['source']->getRole()];
         $user = $this->fixtureFactory->createByCode('user', ['data' => $data]);
     }
     // Steps
     $this->userIndexPage->open();
     $this->userIndexPage->getPageActions()->addNew();
     $this->userEditPage->getUserForm()->fill($user);
     $this->userEditPage->getPageActions()->save();
 }
Beispiel #29
0
 /**
  * @construct
  * @param FixtureFactory $fixtureFactory
  * @param array $params
  * @param array $data
  */
 public function __construct(FixtureFactory $fixtureFactory, array $params, array $data = [])
 {
     $this->params = $params;
     if (isset($data['dataSet']) && $data['dataSet'] !== '-') {
         $this->role = $fixtureFactory->createByCode('adminUserRole', ['dataSet' => $data['dataSet']]);
         if (!$this->role->hasData('role_id')) {
             $this->role->persist();
         }
         $this->data = $this->role->getRoleName();
     }
     if (isset($data['role']) && $data['role'] instanceof AdminUserRole) {
         $this->role = $data['role'];
         $this->data = $data['role']->getRoleName();
     }
 }
 /**
  * Assert that created product template:
  * 1. Displays in product template suggest container dropdown
  * 2. Can be used for new created product.
  *
  * @param FixtureFactory $fixtureFactory
  * @param CatalogProductEdit $productEdit
  * @param CatalogProductIndex $productGrid
  * @param CatalogAttributeSet $attributeSet
  * @param CatalogProductNew $newProductPage
  * @param CatalogProductAttribute $productAttribute
  * @return void
  */
 public function processAssert(FixtureFactory $fixtureFactory, CatalogProductEdit $productEdit, CatalogProductIndex $productGrid, CatalogAttributeSet $attributeSet, CatalogProductNew $newProductPage, CatalogProductAttribute $productAttribute)
 {
     $productGrid->open();
     $productGrid->getProductBlock()->addProduct('simple');
     $productBlockForm = $newProductPage->getForm();
     /**@var CatalogProductSimple $catalogProductSimple */
     $productSimple = $fixtureFactory->createByCode('catalogProductSimple', ['dataSet' => 'default', 'data' => ['attribute_set_id' => ['attribute_set' => $attributeSet]]]);
     $productBlockForm->fillProduct($productSimple);
     $newProductPage->getFormAction()->save();
     $formData = $productEdit->getForm()->getData($productSimple);
     $formAttributeSet = $formData['attribute_set_id'];
     \PHPUnit_Framework_Assert::assertEquals($attributeSet->getAttributeSetName(), $formAttributeSet, 'Attribute Set not found on Product form.' . "\nExpected: " . $attributeSet->getAttributeSetName() . "\nActual: " . $formAttributeSet);
     $productEdit->getForm()->openTab('product-details');
     \PHPUnit_Framework_Assert::assertTrue($productEdit->getForm()->checkAttributeLabel($productAttribute), "Product Attribute is absent on Product form.");
 }