Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ConfigurableProductsFixtureTest.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Eav\Model\ResourceModel\Entity\Attribute\CollectionFactory;
14 
18 class ConfigurableProductsFixtureTest extends \PHPUnit\Framework\TestCase
19 {
23  private $fixtureModelMock;
24 
28  private $model;
29 
33  private $attributeSetsFixtureMock;
34 
38  private $attributePatternMock;
39 
40  public function setUp()
41  {
42  $this->fixtureModelMock = $this->getMockBuilder(\Magento\Setup\Fixtures\FixtureModel::class)
43  ->disableOriginalConstructor()
44  ->setMethods(['createAttributeSet', 'getValue', 'getObjectManager'])
45  ->getMock();
46 
47  $this->attributeSetsFixtureMock = $this->getMockBuilder(AttributeSetFixture::class)
48  ->disableOriginalConstructor()
49  ->getMock();
50 
51  $this->attributePatternMock = $this->getMockBuilder(Pattern::class)
52  ->disableOriginalConstructor()
53  ->getMock();
54 
55  $this->model = (new ObjectManager($this))->getObject(ConfigurableProductsFixture::class, [
56  'fixtureModel' => $this->fixtureModelMock,
57  'attributeSetsFixture' => $this->attributeSetsFixtureMock,
58  'attributePattern' => $this->attributePatternMock,
59  ]);
60  }
61 
65  public function testExecute()
66  {
67  $importMock = $this->getMockBuilder(\Magento\ImportExport\Model\Import::class)
68  ->disableOriginalConstructor()
69  ->getMock();
70 
71  $categoryMock = $this->getMockBuilder(\Magento\Catalog\Model\Category::class)
72  ->disableOriginalConstructor()
73  ->getMock();
74 
75  $storeManagerMock = $this->getMockBuilder(\Magento\Store\Model\StoreManager::class)
76  ->disableOriginalConstructor()
77  ->getMock();
78 
79  $source = $this->getMockBuilder(\Magento\Setup\Model\Complex\Generator::class)
80  ->disableOriginalConstructor()
81  ->getMock();
82 
83  $objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManager\ObjectManager::class)
84  ->disableOriginalConstructor()
85  ->getMock();
86 
87  $attributeSetRepositoryMock = $this->getMockForAbstractClass(
88  \Magento\Catalog\Api\AttributeSetRepositoryInterface::class
89  );
90 
91  $productAttributeOptionManagementInterface = $this->getMockForAbstractClass(
92  \Magento\Catalog\Api\ProductAttributeOptionManagementInterface::class
93  );
94 
95  $objectManagerMock->expects($this->any())
96  ->method('get')
97  ->will($this->returnValueMap([
98  [
99  \Magento\Store\Model\StoreManager::class,
100  $storeManagerMock
101  ],
102  [
103  \Magento\Catalog\Api\AttributeSetRepositoryInterface::class,
104  $attributeSetRepositoryMock
105  ],
106  [
107  \Magento\Catalog\Api\ProductAttributeOptionManagementInterface::class,
108  $productAttributeOptionManagementInterface
109  ]
110  ]));
111 
112  $attributeCollectionFactoryMock = $this->getMockBuilder(CollectionFactory::class)
113  ->setMethods(['create'])
114  ->disableOriginalConstructor()
115  ->getMock();
116 
117  $objectManagerMock->expects($this->any())
118  ->method('create')
119  ->will(
120  $this->returnCallback(
121  function ($className) use (
122  $attributeCollectionFactoryMock,
123  $categoryMock,
124  $importMock,
125  $source
126  ) {
127  if ($className === CollectionFactory::class) {
128  return $attributeCollectionFactoryMock;
129  }
130 
131  if ($className === \Magento\Catalog\Model\Category::class) {
132  return $categoryMock;
133  }
134 
135  if ($className === \Magento\ImportExport\Model\Import::class) {
136  return $importMock;
137  }
138 
139  if ($className === \Magento\Setup\Model\Complex\Generator::class) {
140  return $source;
141  }
142 
143  return null;
144  }
145  )
146  );
147 
148  $valuesMap = [
149  ['configurable_products', 0, 1],
150  ['simple_products', 0, 1],
151  ['search_terms', null, ['search_term' =>[['term' => 'iphone 6', 'count' => '1']]]],
152  ['configurable_products_variation', 3, 1],
153  [
154  'search_config',
155  null,
156  [
157  'max_amount_of_words_description' => '200',
158  'max_amount_of_words_short_description' => '20',
159  'min_amount_of_words_description' => '20',
160  'min_amount_of_words_short_description' => '5'
161  ]
162  ],
163  ['attribute_sets',
164  null,
165  [
166  'attribute_set' => [
167  [
168  'name' => 'attribute set name',
169  'attributes' => [
170  'attribute' => [
171  [
172  'is_required' => 1,
173  'is_visible_on_front' => 1,
174  'is_visible_in_advanced_search' => 1,
175  'is_filterable' => 1,
176  'is_filterable_in_search' => 1,
177  'default_value' => 'yellow1',
178  'attribute_code' => 'mycolor',
179  'is_searchable' => '1',
180  'frontend_label' => 'mycolor',
181  'frontend_input' => 'select',
182  'options' => [
183  'option' => [
184  [
185  'label' => 'yellow1',
186  'value' => ''
187  ]
188  ]
189  ]
190  ]
191  ]
192  ]
193  ]
194  ]
195  ]
196  ]
197  ];
198 
199  $this->fixtureModelMock
200  ->expects($this->any())
201  ->method('getValue')
202  ->will($this->returnValueMap($valuesMap));
203 
204  $this->model->execute();
205  }
206 
207  public function testNoFixtureConfigValue()
208  {
209  $importMock = $this->getMockBuilder(\Magento\ImportExport\Model\Import::class)
210  ->disableOriginalConstructor()
211  ->getMock();
212  $importMock->expects($this->never())->method('validateSource');
213  $importMock->expects($this->never())->method('importSource');
214 
215  $objectManagerMock = $this->getMockBuilder(\Magento\Framework\ObjectManager\ObjectManager::class)
216  ->disableOriginalConstructor()
217  ->getMock();
218  $objectManagerMock->expects($this->never())
219  ->method('create')
220  ->with($this->equalTo(\Magento\ImportExport\Model\Import::class))
221  ->willReturn($importMock);
222 
223  $this->fixtureModelMock
224  ->expects($this->never())
225  ->method('getObjectManager')
226  ->will($this->returnValue($objectManagerMock));
227 
228  $this->model->execute();
229  }
230 
231  public function testGetActionTitle()
232  {
233  $this->assertSame('Generating configurable products', $this->model->getActionTitle());
234  }
235 
236  public function testIntroduceParamLabels()
237  {
238  $this->assertSame([], $this->model->introduceParamLabels());
239  }
240 }
$source
Definition: source.php:23
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31