diff --git a/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php b/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php index cc483f22094e7ee77ae1f54dddf533d85007886a..d25285265394847ca85fe04f58b02737a28ab166 100644 --- a/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php +++ b/app/code/Magento/Catalog/Ui/Component/Listing/Columns/Websites.php @@ -41,6 +41,30 @@ class Websites extends \Magento\Ui\Component\Listing\Columns\Column $this->storeManager = $storeManager; } + /** + * {@inheritdoc} + * @deprecated + */ + public function prepareDataSource(array $dataSource) + { + $websiteNames = []; + foreach ($this->getData('options') as $website) { + $websiteNames[$website->getWebsiteId()] = $website->getName(); + } + if (isset($dataSource['data']['items'])) { + $fieldName = $this->getData('name'); + foreach ($dataSource['data']['items'] as & $item) { + $websites = []; + foreach ($item[$fieldName] as $websiteId) { + $websites[] = $websiteNames[$websiteId]; + } + $item[$fieldName] = implode(', ', $websites); + } + } + + return $dataSource; + } + /** * Prepare component configuration * @return void diff --git a/app/code/Magento/Store/Test/Unit/Ui/Component/Listing/Column/StoreTest.php b/app/code/Magento/Store/Test/Unit/Ui/Component/Listing/Column/StoreTest.php index 9c833fa0db6a0805fc3ee13b984ae44b23ff2a28..bac47e50d80ed52f5bf7de4f7a19e9ba534a8c92 100644 --- a/app/code/Magento/Store/Test/Unit/Ui/Component/Listing/Column/StoreTest.php +++ b/app/code/Magento/Store/Test/Unit/Ui/Component/Listing/Column/StoreTest.php @@ -38,6 +38,11 @@ class StoreTest extends \PHPUnit_Framework_TestCase */ protected $escaperMock; + /** + * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject + */ + protected $storeManagerMock; + /** * @var string */ @@ -68,6 +73,10 @@ class StoreTest extends \PHPUnit_Framework_TestCase ->getMock(); $this->contextMock->expects($this->atLeastOnce())->method('getProcessor')->willReturn($this->processorMock); $this->processorMock->expects($this->atLeastOnce())->method('register'); + $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface') + ->disableOriginalConstructor() + ->setMethods([]) + ->getMock(); $this->model = $objectManager->getObject( 'Magento\Store\Ui\Component\Listing\Column\Store', [ @@ -79,10 +88,48 @@ class StoreTest extends \PHPUnit_Framework_TestCase 'data' => ['name' => $this->name] ] ); + + $this->injectMockedDependency($this->storeManagerMock, 'storeManager'); + } + + /** + * Inject mocked object dependency + * + * @param \PHPUnit_Framework_MockObject_MockObject $mockObject + * @param string $propertyName + * @return void + * + * @deprecated + */ + private function injectMockedDependency($mockObject, $propertyName) + { + $reflection = new \ReflectionClass(get_class($this->model)); + $reflectionProperty = $reflection->getProperty($propertyName); + $reflectionProperty->setAccessible(true); + $reflectionProperty->setValue($this->model, $mockObject); + } + + public function testPrepare() + { + $this->storeManagerMock->expects($this->atLeastOnce())->method('isSingleStoreMode')->willReturn(false); + $this->model->prepare(); + $config = $this->model->getDataByKey('config'); + $this->assertEmpty($config); + } + + public function testPrepareWithSingleStore() + { + $this->storeManagerMock->expects($this->atLeastOnce())->method('isSingleStoreMode')->willReturn(true); + $this->model->prepare(); + $config = $this->model->getDataByKey('config'); + $this->assertNotEmpty($config); + $this->assertArrayHasKey('componentDisabled', $config); + $this->assertTrue($config['componentDisabled']); } /** * @dataProvider prepareDataSourceDataProvider + * @deprecated */ public function testPrepareDataSource($dataSource, $expectedResult) { @@ -112,6 +159,9 @@ class StoreTest extends \PHPUnit_Framework_TestCase $this->assertEquals($this->model->prepareDataSource($dataSource), $expectedResult); } + /** + * @deprecated + */ public function prepareDataSourceDataProvider() { $content = "website<br/> group<br/> store<br/>"; diff --git a/app/code/Magento/Store/Ui/Component/Listing/Column/Store.php b/app/code/Magento/Store/Ui/Component/Listing/Column/Store.php index 23c9bbb78a245975e95e1ac075f2f3158edb3069..78520cce1270cb5b6a8fd068da348c1ffb4f32d8 100644 --- a/app/code/Magento/Store/Ui/Component/Listing/Column/Store.php +++ b/app/code/Magento/Store/Ui/Component/Listing/Column/Store.php @@ -48,7 +48,6 @@ class Store extends Column * @param UiComponentFactory $uiComponentFactory * @param SystemStore $systemStore * @param Escaper $escaper - * @param StoreManager $storeManager * @param array $components * @param array $data * @param string $storeKey @@ -58,7 +57,6 @@ class Store extends Column UiComponentFactory $uiComponentFactory, SystemStore $systemStore, Escaper $escaper, - StoreManager $storeManager, array $components = [], array $data = [], $storeKey = 'store_id' @@ -66,7 +64,6 @@ class Store extends Column $this->systemStore = $systemStore; $this->escaper = $escaper; $this->storeKey = $storeKey; - $this->storeManager = $storeManager; parent::__construct($context, $uiComponentFactory, $components, $data); } @@ -125,13 +122,30 @@ class Store extends Column /** * Prepare component configuration + * * @return void */ public function prepare() { parent::prepare(); - if ($this->storeManager->isSingleStoreMode()) { + if ($this->getStoreManager()->isSingleStoreMode()) { $this->_data['config']['componentDisabled'] = true; } } + + /** + * Get StoreManager dependency + * + * @return StoreManager + * + * @deprecated + */ + private function getStoreManager() + { + if ($this->storeManager === null) { + $this->storeManager = \Magento\Framework\App\ObjectManager::getInstance() + ->get('Magento\Store\Model\StoreManagerInterface'); + } + return $this->storeManager; + } }