123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Eav\Test\Unit\Model\Entity;
- /**
- * Class AttributeTest.
- */
- class AttributeTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * Attribute model to be tested
- * @var \Magento\Eav\Model\Entity\Attribute|\PHPUnit_Framework_MockObject_MockObject
- */
- protected $_model;
- /**
- * @inheritdoc
- */
- protected function setUp()
- {
- $this->_model = $this->createPartialMock(\Magento\Eav\Model\Entity\Attribute::class, ['__wakeup']);
- }
- /**
- * @inheritdoc
- */
- protected function tearDown()
- {
- $this->_model = null;
- }
- /**
- * @param string $givenFrontendInput
- * @param string $expectedBackendType
- * @dataProvider dataGetBackendTypeByInput
- * @return void
- */
- public function testGetBackendTypeByInput($givenFrontendInput, $expectedBackendType)
- {
- $this->assertEquals($expectedBackendType, $this->_model->getBackendTypeByInput($givenFrontendInput));
- }
- /**
- * @return array
- */
- public static function dataGetBackendTypeByInput()
- {
- return [
- ['unrecognized-frontend-input', null],
- ['text', 'varchar'],
- ['gallery', 'varchar'],
- ['media_image', 'varchar'],
- ['multiselect', 'varchar'],
- ['image', 'text'],
- ['textarea', 'text'],
- ['date', 'datetime'],
- ['select', 'int'],
- ['boolean', 'int'],
- ['price', 'decimal'],
- ['weight', 'decimal']
- ];
- }
- /**
- * @param string $givenFrontendInput
- * @param string $expectedDefaultValue
- * @dataProvider dataGetDefaultValueByInput
- */
- public function testGetDefaultValueByInput($givenFrontendInput, $expectedDefaultValue)
- {
- $this->assertEquals($expectedDefaultValue, $this->_model->getDefaultValueByInput($givenFrontendInput));
- }
- /**
- * @return array
- */
- public static function dataGetDefaultValueByInput()
- {
- return [
- ['unrecognized-frontend-input', ''],
- ['select', ''],
- ['gallery', ''],
- ['media_image', ''],
- ['multiselect', null],
- ['text', 'default_value_text'],
- ['price', 'default_value_text'],
- ['image', 'default_value_text'],
- ['weight', 'default_value_text'],
- ['textarea', 'default_value_textarea'],
- ['date', 'default_value_date'],
- ['boolean', 'default_value_yesno']
- ];
- }
- /**
- * @param array|null $sortWeights
- * @param float $expected
- * @dataProvider getSortWeightDataProvider
- */
- public function testGetSortWeight($sortWeights, $expected)
- {
- $setId = 123;
- $this->_model->setAttributeSetInfo([$setId => $sortWeights]);
- $this->assertEquals($expected, $this->_model->getSortWeight($setId));
- }
- /**
- * @return array
- */
- public function getSortWeightDataProvider()
- {
- return [
- 'empty set info' => ['sortWeights' => null, 'expectedWeight' => 0],
- 'no group sort' => ['sortWeights' => ['sort' => 5], 'expectedWeight' => 0.0005],
- 'no sort' => ['sortWeights' => ['group_sort' => 7], 'expectedWeight' => 7000],
- 'group sort and sort' => [
- 'sortWeights' => ['group_sort' => 7, 'sort' => 5],
- 'expectedWeight' => 7000.0005,
- ]
- ];
- }
- /**
- * return void
- */
- public function testGetFrontendLabels()
- {
- $attributeId = 1;
- $storeLabels = ['test_attribute_store1'];
- $frontendLabelFactory = $this->getMockBuilder(\Magento\Eav\Model\Entity\Attribute\FrontendLabelFactory::class)
- ->disableOriginalConstructor()
- ->setMethods(['create'])
- ->getMock();
- $resource = $this->getMockBuilder(\Magento\Eav\Model\ResourceModel\Entity\Attribute::class)
- ->setMethods(['getStoreLabelsByAttributeId'])
- ->disableOriginalConstructor()
- ->getMock();
- $arguments = [
- '_resource' => $resource,
- 'frontendLabelFactory' => $frontendLabelFactory,
- ];
- $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- $this->_model = $objectManager->getObject(\Magento\Eav\Model\Entity\Attribute::class, $arguments);
- $this->_model->setAttributeId($attributeId);
- $resource->expects($this->once())
- ->method('getStoreLabelsByAttributeId')
- ->with($attributeId)
- ->willReturn($storeLabels);
- $frontendLabel = $this->getMockBuilder(\Magento\Eav\Model\Entity\Attribute\FrontendLabel::class)
- ->setMethods(['setStoreId', 'setLabel'])
- ->disableOriginalConstructor()
- ->getMock();
- $frontendLabelFactory->expects($this->once())
- ->method('create')
- ->willReturn($frontendLabel);
- $expectedFrontendLabel[] = $frontendLabel;
- $this->assertEquals($expectedFrontendLabel, $this->_model->getFrontendLabels());
- }
- }
|