10 use Magento\Catalog\Test\Page\Adminhtml\CatalogCategoryEdit;
11 use Magento\Catalog\Test\Page\Adminhtml\CatalogCategoryIndex;
12 use Magento\Mtf\TestCase\Injectable;
13 use Magento\Mtf\Fixture\FixtureFactory;
84 Category $initialCategory,
87 $initialCategory->persist();
88 $topCategory = $this->getParentCategoryByNestingLevel($initialCategory, $nestingLevel);
89 $this->catalogCategoryIndex->open();
90 $this->catalogCategoryIndex->getTreeCategories()->selectCategory($topCategory);
91 $this->catalogCategoryEdit->getEditForm()->fill(
$category);
92 $this->catalogCategoryEdit->getFormPageActions()->save();
95 $categoriesBeforeSave = [];
97 $this->getCategory($initialCategory, $categoriesBeforeSave, $nestingLevel);
101 'categoriesBeforeSave' => $categoriesBeforeSave
114 private function getCategoryFixture(array &
$categories, Category $currentCategory, array
$data,
int $nestingLevel)
116 if (--$nestingLevel) {
117 $parentCategory = $this->getCategoryFixture(
119 $currentCategory->getDataFieldConfig(
'parent_id')[
'source']->getParentCategory(),
123 $category = $this->fixtureFactory->createByCode(
125 [
'data' => array_merge($currentCategory->getData(), [
'parent_id' => [
'source' => $parentCategory]])]
128 $category = $this->fixtureFactory->createByCode(
130 [
'data' => array_merge($currentCategory->getData(),
$data)]
145 private function getCategory(Category $initialCategory, &$categoriesBeforeSave, $nestingLevel)
147 if (--$nestingLevel) {
148 $parentCategory = $this->getCategory(
149 $initialCategory->getDataFieldConfig(
'parent_id')[
'source']->getParentCategory(),
150 $categoriesBeforeSave,
153 $category = $this->fixtureFactory->createByCode(
155 [
'data' => array_merge($initialCategory->getData(), [
'parent_id' => [
'source' => $parentCategory]])]
160 $categoriesBeforeSave[$nestingLevel + 1] =
$category;
171 private function getParentCategoryByNestingLevel(Category
$category, $nestingLevel)
173 for ($nestingIterator = 1; $nestingIterator < $nestingLevel; $nestingIterator++) {
174 $category =
$category->getDataFieldConfig(
'parent_id')[
'source']->getParentCategory();
test(Category $category, Category $initialCategory, $nestingLevel)
__inject(CatalogCategoryIndex $catalogCategoryIndex, CatalogCategoryEdit $catalogCategoryEdit, FixtureFactory $fixtureFactory)