/vendor/magento/module-eav/Test/Unit/Model/Entity/Attribute/Source/TableTest.php
https://gitlab.com/yousafsyed/easternglamor · PHP · 230 lines · 182 code · 26 blank · 22 comment · 1 complexity · 1427ab3a79760543535b889d0ee13bfc MD5 · raw file
- <?php
- /**
- * Copyright © 2016 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Eav\Test\Unit\Model\Entity\Attribute\Source;
- use Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\CollectionFactory;
- use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
- class TableTest extends \PHPUnit_Framework_TestCase
- {
- /**
- * @var \Magento\Eav\Model\Entity\Attribute\Source\Table
- */
- protected $_model;
- /**
- * @var CollectionFactory | \PHPUnit_Framework_MockObject_MockObject
- */
- protected $collectionFactory;
- public function setUp()
- {
- $objectManager = new ObjectManager($this);
- $this->collectionFactory = $this->getMock(
- 'Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\CollectionFactory',
- [
- 'create',
- 'setPositionOrder',
- 'setAttributeFilter',
- 'addFieldToFilter',
- 'setStoreFilter',
- 'load',
- 'toOptionArray'
- ],
- [],
- '',
- false
- );
- $this->_model = $objectManager->getObject(
- 'Magento\Eav\Model\Entity\Attribute\Source\Table',
- ['attrOptionCollectionFactory' => $this->collectionFactory]
- );
- }
- public function testGetFlatColumns()
- {
- $abstractFrontendMock = $this->getMock(
- 'Magento\Eav\Model\Entity\Attribute\Frontend\AbstractFrontend',
- [],
- [],
- '',
- false
- );
- $abstractAttributeMock = $this->getMock(
- '\Magento\Eav\Model\Entity\Attribute\AbstractAttribute',
- ['getFrontend', 'getAttributeCode', '__wakeup'],
- [],
- '',
- false
- );
- $abstractAttributeMock->expects(
- $this->any()
- )->method(
- 'getFrontend'
- )->will(
- $this->returnValue($abstractFrontendMock)
- );
- $abstractAttributeMock->expects($this->any())->method('getAttributeCode')->will($this->returnValue('code'));
- $this->_model->setAttribute($abstractAttributeMock);
- $flatColumns = $this->_model->getFlatColumns();
- $this->assertTrue(is_array($flatColumns), 'FlatColumns must be an array value');
- $this->assertTrue(!empty($flatColumns), 'FlatColumns must be not empty');
- foreach ($flatColumns as $result) {
- $this->assertArrayHasKey('unsigned', $result, 'FlatColumns must have "unsigned" column');
- $this->assertArrayHasKey('default', $result, 'FlatColumns must have "default" column');
- $this->assertArrayHasKey('extra', $result, 'FlatColumns must have "extra" column');
- $this->assertArrayHasKey('type', $result, 'FlatColumns must have "type" column');
- $this->assertArrayHasKey('nullable', $result, 'FlatColumns must have "nullable" column');
- $this->assertArrayHasKey('comment', $result, 'FlatColumns must have "comment" column');
- $this->assertArrayHasKey('length', $result, 'FlatColumns must have "length" column');
- }
- }
- /**
- * @dataProvider specificOptionsProvider
- * @param array $optionIds
- * @param bool $withEmpty
- */
- public function testGetSpecificOptions($optionIds, $withEmpty)
- {
- $attributeId = 1;
- $storeId = 5;
- $options = [['label' => 'The label', 'value' => 'A value']];
- $attribute = $this->getMock(
- 'Magento\Eav\Model\Entity\Attribute\AbstractAttribute',
- ['getId', 'getStoreId', '__wakeup'],
- [],
- '',
- false
- );
- $attribute->expects($this->once())
- ->method('getId')
- ->willReturn($attributeId);
- $attribute->expects($this->once())
- ->method('getStoreId')
- ->willReturn($storeId);
- $this->_model->setAttribute($attribute);
- $this->collectionFactory->expects($this->once())
- ->method('create')
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('setPositionOrder')
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('setAttributeFilter')
- ->with($attributeId)
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('addFieldToFilter')
- ->with('main_table.option_id', ['in' => $optionIds])
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('setStoreFilter')
- ->with($storeId)
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('load')
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('toOptionArray')
- ->willReturn($options);
- if ($withEmpty) {
- array_unshift($options, ['label' => '', 'value' => '']);
- }
- $this->assertEquals($options, $this->_model->getSpecificOptions($optionIds, $withEmpty));
- }
- public function specificOptionsProvider()
- {
- return [
- [['1', '2'], true],
- [[1, 2], false]
- ];
- }
- /**
- * @dataProvider getOptionTextProvider
- * @param array $optionsIds
- * @param array|string $value
- * @param array $options
- * @param array|string $expectedResult
- */
- public function testGetOptionText($optionsIds, $value, $options, $expectedResult)
- {
- $attributeId = 1;
- $storeId = 5;
- $attribute = $this->getMock(
- 'Magento\Eav\Model\Entity\Attribute\AbstractAttribute',
- ['getId', 'getStoreId', '__wakeup'],
- [],
- '',
- false
- );
- $attribute->expects($this->once())
- ->method('getId')
- ->willReturn($attributeId);
- $attribute->expects($this->once())
- ->method('getStoreId')
- ->willReturn($storeId);
- $this->_model->setAttribute($attribute);
- $this->collectionFactory->expects($this->once())
- ->method('create')
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('setPositionOrder')
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('setAttributeFilter')
- ->with($attributeId)
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('addFieldToFilter')
- ->with('main_table.option_id', ['in' => $optionsIds])
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('setStoreFilter')
- ->with($storeId)
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('load')
- ->willReturnSelf();
- $this->collectionFactory->expects($this->once())
- ->method('toOptionArray')
- ->willReturn($options);
- $this->assertEquals($expectedResult, $this->_model->getOptionText($value));
- }
- public function getOptionTextProvider()
- {
- return [
- [
- ['1', '2'],
- '1,2',
- [['label' => 'test label 1', 'value' => '1'], ['label' => 'test label 2', 'value' => '1']],
- ['test label 1', 'test label 2'],
- ],
- ['1', '1', [['label' => 'test label', 'value' => '1']], 'test label'],
- ['5', '5', [['label' => 'test label', 'value' => '5']], 'test label']
- ];
- }
- }