Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ProductGettersTest.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Catalog\Model;
7 
10 
22 class ProductGettersTest extends \PHPUnit\Framework\TestCase
23 {
27  protected $_model;
28 
32  private $productRepository;
33 
34  protected function setUp()
35  {
37  \Magento\Catalog\Model\Product::class
38  );
39  $this->productRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
40  ProductRepositoryInterface::class
41  );
42  }
43 
44  public function testGetResourceCollection()
45  {
46  $collection = $this->_model->getResourceCollection();
47  $this->assertInstanceOf(\Magento\Catalog\Model\ResourceModel\Product\Collection::class, $collection);
48  $this->assertEquals($this->_model->getStoreId(), $collection->getStoreId());
49  }
50 
51  public function testGetUrlModel()
52  {
53  $model = $this->_model->getUrlModel();
54  $this->assertInstanceOf(\Magento\Catalog\Model\Product\Url::class, $model);
55  $this->assertSame($model, $this->_model->getUrlModel());
56  }
57 
58  public function testGetName()
59  {
60  $this->assertEmpty($this->_model->getName());
61  $this->_model->setName('test');
62  $this->assertEquals('test', $this->_model->getName());
63  }
64 
65  public function testGetTypeId()
66  {
67  $this->assertEmpty($this->_model->getTypeId());
68  $this->_model->setTypeId('simple');
69  $this->assertEquals('simple', $this->_model->getTypeId());
70  }
71 
72  public function testGetStatus()
73  {
74  $this->assertEquals(
75  \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED,
76  $this->_model->getStatus()
77  );
78 
79  $this->_model->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED);
80 
81  $this->assertEquals(
82  \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_DISABLED,
83  $this->_model->getStatus()
84  );
85  }
86 
87  public function testGetSetTypeInstance()
88  {
89  // model getter
90  $typeInstance = $this->_model->getTypeInstance();
91  $this->assertInstanceOf(\Magento\Catalog\Model\Product\Type\AbstractType::class, $typeInstance);
92  $this->assertSame($typeInstance, $this->_model->getTypeInstance());
93 
94  // singleton
97  \Magento\Catalog\Model\Product::class
98  );
99  $this->assertSame($typeInstance, $otherProduct->getTypeInstance());
100 
101  // model setter
102  $simpleTypeInstance = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
103  \Magento\Catalog\Model\Product\Type\Simple::class
104  );
105  $this->_model->setTypeInstance($simpleTypeInstance);
106  $this->assertSame($simpleTypeInstance, $this->_model->getTypeInstance());
107  }
108 
109  public function testGetIdBySku()
110  {
111  $this->assertGreaterThan(0, (int)$this->_model->getIdBySku('simple')); // fixture
112  }
113 
114  public function testGetAttributes()
115  {
116  // fixture required
117  $this->_model->load(1);
118  $attributes = $this->_model->getAttributes();
119  $this->assertArrayHasKey('name', $attributes);
120  $this->assertArrayHasKey('sku', $attributes);
121  $this->assertInstanceOf(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class, $attributes['sku']);
122  }
123 
136  public function testGetObsoleteGetters($key, $method)
137  {
138  $value = uniqid();
139  $this->assertEmpty($this->_model->{$method}());
140  $this->_model->setData($key, $value);
141  $this->assertEquals($value, $this->_model->{$method}());
142  }
143 
145  {
146  return [
147  ['calculated_final_price', 'getCalculatedFinalPrice'],
148  ['minimal_price', 'getMinimalPrice'],
149  ['special_price', 'getSpecialPrice'],
150  ['special_from_date', 'getSpecialFromDate'],
151  ['special_to_date', 'getSpecialToDate'],
152  ['request_path', 'getRequestPath'],
153  ['gift_message_available', 'getGiftMessageAvailable'],
154  ];
155  }
156 
157  public function testGetMediaAttributes()
158  {
160  \Magento\Catalog\Model\Product::class,
161  ['data' => ['media_attributes' => 'test']]
162  );
163  $this->assertEquals('test', $model->getMediaAttributes());
164 
165  $attributes = $this->_model->getMediaAttributes();
166  $this->assertArrayHasKey('image', $attributes);
167  $this->assertArrayHasKey('small_image', $attributes);
168  $this->assertArrayHasKey('thumbnail', $attributes);
169  $this->assertInstanceOf(\Magento\Catalog\Model\ResourceModel\Eav\Attribute::class, $attributes['image']);
170  }
171 
172  public function testGetMediaGalleryImages()
173  {
176  \Magento\Catalog\Model\Product::class
177  );
178  $this->assertEmpty($model->getMediaGalleryImages());
179 
180  $this->_model->setMediaGallery(['images' => [['file' => 'magento_image.jpg']]]);
181  $images = $this->_model->getMediaGalleryImages();
182  $this->assertInstanceOf(\Magento\Framework\Data\Collection::class, $images);
183  foreach ($images as $image) {
184  $this->assertInstanceOf(\Magento\Framework\DataObject::class, $image);
185  $image = $image->getData();
186  $this->assertArrayHasKey('file', $image);
187  $this->assertArrayHasKey('url', $image);
188  $this->assertArrayHasKey('id', $image);
189  $this->assertArrayHasKey('path', $image);
190  $this->assertStringEndsWith('magento_image.jpg', $image['file']);
191  $this->assertStringEndsWith('magento_image.jpg', $image['url']);
192  $this->assertStringEndsWith('magento_image.jpg', $image['path']);
193  }
194  }
195 
196  public function testGetMediaConfig()
197  {
198  $model = $this->_model->getMediaConfig();
199  $this->assertInstanceOf(\Magento\Catalog\Model\Product\Media\Config::class, $model);
200  $this->assertSame($model, $this->_model->getMediaConfig());
201  }
202 
203  public function testGetAttributeText()
204  {
205  $this->assertNull($this->_model->getAttributeText('status'));
206  $this->_model->setStatus(\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED);
207  $this->assertEquals('Enabled', $this->_model->getAttributeText('status'));
208  }
209 
213  public function testGetAttributeTextArray()
214  {
215  $product = $this->productRepository->get('simple_ms_2');
216  $product->getAttributeText('multiselect_attribute');
217  $expected = [
218  'Option 2',
219  'Option 3',
220  'Option 4 "!@#$%^&*'
221  ];
222  self::assertEquals(
223  $expected,
224  $product->getAttributeText('multiselect_attribute')
225  );
226  }
227 
228  public function testGetCustomDesignDate()
229  {
230  $this->assertEquals(['from' => null, 'to' => null], $this->_model->getCustomDesignDate());
231  $this->_model->setCustomDesignFrom(1)->setCustomDesignTo(2);
232  $this->assertEquals(['from' => 1, 'to' => 2], $this->_model->getCustomDesignDate());
233  }
234 
238  public function testGetSku()
239  {
240  $this->assertEmpty($this->_model->getSku());
241  $this->_model->setSku('sku');
242  $this->assertEquals('sku', $this->_model->getSku());
243  }
244 
245  public function testGetWeight()
246  {
247  $this->assertEmpty($this->_model->getWeight());
248  $this->_model->setWeight(10.22);
249  $this->assertEquals(10.22, $this->_model->getWeight());
250  }
251 
252  public function testGetOptionInstance()
253  {
254  $model = $this->_model->getOptionInstance();
255  $this->assertInstanceOf(\Magento\Catalog\Model\Product\Option::class, $model);
256  $this->assertSame($model, $this->_model->getOptionInstance());
257  }
258 
260  {
261  $setId = $this->_model->getDefaultAttributeSetId();
262  $this->assertNotEmpty($setId);
263  $this->assertRegExp('/^[0-9]+$/', $setId);
264  }
265 
266  public function testGetPreconfiguredValues()
267  {
268  $this->assertInstanceOf(\Magento\Framework\DataObject::class, $this->_model->getPreconfiguredValues());
269  $this->_model->setPreconfiguredValues('test');
270  $this->assertEquals('test', $this->_model->getPreconfiguredValues());
271  }
272 
273  public static function tearDownAfterClass()
274  {
277  \Magento\Framework\Filesystem::class
278  )->getDirectoryWrite(
279  DirectoryList::MEDIA
280  );
281  $config = $objectManager->get(\Magento\Catalog\Model\Product\Media\Config::class);
282  $mediaDirectory->delete($config->getBaseMediaPath());
283  }
284 }
$objectManager
Definition: bootstrap.php:17
$config
Definition: fraud_order.php:17
$value
Definition: gender.phtml:16
$attributes
Definition: matrix.phtml:13
$method
Definition: info.phtml:13
$mediaDirectory