Skip to content

Commit be9b60e

Browse files
author
Bohdan Korablov
committed
Merge branch 'MAGETWO-38857' of https://github.corp.ebay.com/magento-tango/magento2ce into MAGETWO-38857
2 parents 8b181f0 + 5354240 commit be9b60e

File tree

2 files changed

+136
-19
lines changed

2 files changed

+136
-19
lines changed

app/code/Magento/Widget/Model/NamespaceResolver.php

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@ class NamespaceResolver
1212
*
1313
* @var array
1414
*/
15-
protected $_moduleNamespaces;
15+
protected $moduleNamespaces;
1616

1717
/**
1818
* @var \Magento\Framework\Module\ModuleListInterface
1919
*/
20-
protected $_moduleList;
20+
protected $moduleList;
2121

2222
/**
2323
* @param \Magento\Framework\Module\ModuleListInterface $moduleList
2424
*/
2525
public function __construct(\Magento\Framework\Module\ModuleListInterface $moduleList)
2626
{
27-
$this->_moduleList = $moduleList;
27+
$this->moduleList = $moduleList;
2828
}
2929

3030
/**
@@ -34,28 +34,15 @@ public function __construct(\Magento\Framework\Module\ModuleListInterface $modul
3434
* @param string $name
3535
* @param bool $asFullModuleName
3636
* @return string
37-
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
38-
* @SuppressWarnings(PHPMD.NPathComplexity)
3937
*/
4038
public function determineOmittedNamespace($name, $asFullModuleName = false)
4139
{
42-
if (null === $this->_moduleNamespaces) {
43-
$this->_moduleNamespaces = [];
44-
foreach ($this->_moduleList->getNames() as $moduleName) {
45-
$module = strtolower($moduleName);
46-
$this->_moduleNamespaces[substr($module, 0, strpos($module, '_'))][$module] = $moduleName;
47-
}
48-
}
49-
50-
$explodeString = strpos(
51-
$name,
52-
'\\'
53-
) === false ? '_' : '\\';
54-
$name = explode($explodeString, strtolower($name));
40+
$this->prepareModuleNamespaces();
41+
$name = $this->prepareName($name);
5542

5643
$partsNum = count($name);
5744
$defaultNamespaceFlag = false;
58-
foreach ($this->_moduleNamespaces as $namespaceName => $namespace) {
45+
foreach ($this->moduleNamespaces as $namespaceName => $namespace) {
5946
// assume the namespace is omitted (default namespace only, which comes first)
6047
if ($defaultNamespaceFlag === false) {
6148
$defaultNamespaceFlag = true;
@@ -74,4 +61,35 @@ public function determineOmittedNamespace($name, $asFullModuleName = false)
7461
}
7562
return '';
7663
}
64+
65+
/**
66+
* Prepare module namespaces
67+
*
68+
* @return void
69+
*/
70+
protected function prepareModuleNamespaces()
71+
{
72+
if (null === $this->moduleNamespaces) {
73+
$this->moduleNamespaces = [];
74+
foreach ($this->moduleList->getNames() as $moduleName) {
75+
$module = strtolower($moduleName);
76+
$this->moduleNamespaces[substr($module, 0, strpos($module, '_'))][$module] = $moduleName;
77+
}
78+
}
79+
}
80+
81+
/**
82+
* Prepare name
83+
*
84+
* @param string $name
85+
* @return array
86+
*/
87+
protected function prepareName($name)
88+
{
89+
$explodeString = strpos(
90+
$name,
91+
'\\'
92+
) === false ? '_' : '\\';
93+
return explode($explodeString, strtolower($name));
94+
}
7795
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Widget\Test\Unit\Model;
7+
8+
class NamespaceResolverTest extends \PHPUnit_Framework_TestCase
9+
{
10+
/**
11+
* @var \Magento\Widget\Model\NamespaceResolver
12+
*/
13+
protected $namespaceResolver;
14+
15+
/**
16+
* @var \Magento\Framework\Module\ModuleListInterface|\PHPUnit_Framework_MockObject_MockObject
17+
*/
18+
protected $moduleListMock;
19+
20+
public function setUp()
21+
{
22+
$objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
23+
$this->moduleListMock = $this->getMockBuilder('Magento\Framework\Module\ModuleListInterface')
24+
->getMockForAbstractClass();
25+
26+
$this->namespaceResolver = $objectManager->getObject(
27+
'Magento\Widget\Model\NamespaceResolver',
28+
[
29+
'moduleList' => $this->moduleListMock
30+
]
31+
);
32+
}
33+
34+
/**
35+
* @param string $namespace
36+
* @param array $modules
37+
* @param string $expected
38+
* @param bool $asFullModuleName
39+
*
40+
* @dataProvider determineOmittedNamespaceDataProvider
41+
*/
42+
public function testDetermineOmittedNamespace($namespace, $modules, $expected, $asFullModuleName)
43+
{
44+
$this->moduleListMock->expects($this->once())
45+
->method('getNames')
46+
->willReturn($modules);
47+
48+
$this->assertSame(
49+
$expected,
50+
$this->namespaceResolver->determineOmittedNamespace($namespace, $asFullModuleName)
51+
);
52+
}
53+
54+
/**
55+
* @return array
56+
*/
57+
public function determineOmittedNamespaceDataProvider()
58+
{
59+
return[
60+
[
61+
'namespace' => 'Magento\Widget\Test\Unit\Model\NamespaceResolverTest',
62+
'modules' => ['Magento_Cms', 'Magento_Catalog', 'Magento_Sales', 'Magento_Widget'],
63+
'expected' => 'Magento_Widget',
64+
'asFullModuleName' => true
65+
],
66+
[
67+
'namespace' => 'Magento\Widget\Test\Unit\Model\NamespaceResolverTest',
68+
'modules' => ['Magento_Cms', 'Magento_Catalog', 'Magento_Sales', 'Magento_Widget'],
69+
'expected' => 'magento_widget',
70+
'asFullModuleName' => false
71+
],
72+
[
73+
'namespace' => 'Widget\Test\Unit\Model\NamespaceResolverTest',
74+
'modules' => ['Magento_Cms', 'Magento_Catalog', 'Magento_Sales', 'Magento_Widget'],
75+
'expected' => 'Magento_Widget',
76+
'asFullModuleName' => true
77+
78+
],
79+
[
80+
'namespace' => 'Widget\Test\Unit\Model\NamespaceResolverTest',
81+
'modules' => ['Magento_Cms', 'Magento_Catalog', 'Magento_Sales', 'Magento_Widget'],
82+
'expected' => 'widget',
83+
'asFullModuleName' => false
84+
],
85+
[
86+
'namespace' => 'Unit\Model\NamespaceResolverTest',
87+
'modules' => ['Magento_Cms', 'Magento_Catalog', 'Magento_Sales', 'Magento_Widget'],
88+
'expected' => '',
89+
'asFullModuleName' => true
90+
],
91+
[
92+
'namespace' => 'Unit\Model\NamespaceResolverTest',
93+
'modules' => ['Magento_Cms', 'Magento_Catalog', 'Magento_Sales', 'Magento_Widget'],
94+
'expected' => '',
95+
'asFullModuleName' => false
96+
],
97+
];
98+
}
99+
}

0 commit comments

Comments
 (0)