Skip to content

Commit 05de33c

Browse files
committed
added unit tests
1 parent a1d0f2d commit 05de33c

File tree

6 files changed

+329
-0
lines changed

6 files changed

+329
-0
lines changed

app/code/Magento/Backend/Model/Search/Config.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
/**
1414
* Search Config Model
1515
*
16+
* @method Config setQuery(string $query)
1617
* @method string|null getQuery()
1718
* @method bool hasQuery()
1819
* @method Config setResults(array $results)
20+
* @method array getResults()
1921
*/
2022
class Config extends \Magento\Framework\DataObject
2123
{
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Backend\Test\Unit\Model\Search\Config\Result;
7+
8+
use Magento\Backend\Model\Search\Config\Structure\ElementBuilderInterface;
9+
use Magento\Backend\Model\UrlInterface;
10+
use Magento\Backend\Model\Search\Config\Result\Builder;
11+
use Magento\Config\Model\Config\Structure\ElementNewInterface;
12+
use PHPUnit\Framework\TestCase;
13+
14+
class BuilderTest extends TestCase
15+
{
16+
/**
17+
* @var Builder
18+
*/
19+
protected $model;
20+
21+
/**
22+
* @var ElementNewInterface|\PHPUnit_Framework_MockObject_MockObject
23+
*/
24+
protected $structureElementMock;
25+
26+
/**
27+
* @var UrlInterface|\PHPUnit_Framework_MockObject_MockObject
28+
*/
29+
protected $urlBuilderMock;
30+
31+
/**
32+
* @var ElementBuilderInterface|\PHPUnit_Framework_MockObject_MockObject
33+
*/
34+
protected $structureElementUrlParamsBuilderMock;
35+
36+
protected function setUp()
37+
{
38+
$this->urlBuilderMock = $this->getMockForAbstractClass(UrlInterface::class);
39+
$this->structureElementMock = $this->getMockForAbstractClass(ElementNewInterface::class);
40+
$this->structureElementUrlParamsBuilderMock = $this->getMockForAbstractClass(ElementBuilderInterface::class);
41+
$this->model = new Builder($this->urlBuilderMock, ['section' => $this->structureElementUrlParamsBuilderMock]);
42+
}
43+
44+
public function testAddWithNotSupportedStructureElementReturnsNothing()
45+
{
46+
$this->structureElementMock
47+
->expects($this->once())
48+
->method('getData')
49+
->will($this->returnValue(['_elementType' => 'not_declared_structure_element_type']));
50+
$this->model->add($this->structureElementMock, '');
51+
$this->assertEquals([], $this->model->getAll());
52+
}
53+
54+
public function testAddWithSupportedStructureElements()
55+
{
56+
$structureElementPath = '/section_code';
57+
$structureElementLabel = 'Section Label';
58+
$buildUrlParams = ['param_key' => 'param_value'];
59+
$generatedUrl = 'http://example.com';
60+
61+
$expectedSearchResult = [
62+
[
63+
'id' => md5($structureElementPath),
64+
'type' => null,
65+
'name' => 'Section Label',
66+
'description' => 'Section Label',
67+
'url' => 'http://example.com',
68+
],
69+
];
70+
71+
$this->structureElementMock
72+
->expects($this->once())
73+
->method('getData')
74+
->willReturn(['_elementType' => 'section']);
75+
$this->structureElementMock
76+
->expects($this->once())
77+
->method('getPath')
78+
->willReturn($structureElementPath);
79+
$this->structureElementMock
80+
->expects($this->once())
81+
->method('getLabel')
82+
->willReturn($structureElementLabel);
83+
84+
$this->structureElementUrlParamsBuilderMock->expects($this->once())
85+
->method('build')
86+
->willReturn($buildUrlParams);
87+
88+
$this->urlBuilderMock
89+
->expects($this->once())
90+
->method('getUrl')
91+
->with('*/system_config/edit', $buildUrlParams)
92+
->will($this->returnValue($generatedUrl));
93+
94+
$this->model->add($this->structureElementMock, $structureElementLabel);
95+
$this->assertEquals($expectedSearchResult, $this->model->getAll());
96+
}
97+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Backend\Test\Unit\Model\Search\Config\Structure\Element\Builder;
8+
9+
use Magento\Backend\Model\Search\Config\Structure\Element\Builder\Field;
10+
use Magento\Config\Model\Config\Structure\ElementNewInterface;
11+
use PHPUnit\Framework\TestCase;
12+
13+
class FieldTest extends TestCase
14+
{
15+
/**
16+
* @var ElementNewInterface|\PHPUnit_Framework_MockObject_MockObject
17+
*/
18+
private $structureElementMock;
19+
20+
/**
21+
* @var Field
22+
*/
23+
private $model;
24+
25+
protected function setUp()
26+
{
27+
$this->structureElementMock = $this->getMockForAbstractClass(ElementNewInterface::class);
28+
$this->model = new Field();
29+
}
30+
31+
public function testBuild()
32+
{
33+
$structureElementId = 42;
34+
$structureElementPath = 'path_part_1/path_part_2';
35+
36+
$this->structureElementMock->expects($this->once())
37+
->method('getId')
38+
->willReturn($structureElementId);
39+
$this->structureElementMock->expects($this->once())
40+
->method('getPath')
41+
->willReturn($structureElementPath);
42+
$this->assertEquals(
43+
[
44+
'section' => 'path_part_1',
45+
'group' => 'path_part_2',
46+
'field' => $structureElementId,
47+
],
48+
$this->model->build($this->structureElementMock)
49+
);
50+
}
51+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Backend\Test\Unit\Model\Search\Config\Structure\Element\Builder;
8+
9+
use Magento\Backend\Model\Search\Config\Structure\Element\Builder\Group;
10+
use Magento\Config\Model\Config\Structure\ElementNewInterface;
11+
use PHPUnit\Framework\TestCase;
12+
13+
class GroupTest extends TestCase
14+
{
15+
/**
16+
* @var ElementNewInterface|\PHPUnit_Framework_MockObject_MockObject
17+
*/
18+
private $structureElementMock;
19+
20+
/**
21+
* @var Group
22+
*/
23+
private $model;
24+
25+
protected function setUp()
26+
{
27+
$this->structureElementMock = $this->getMockForAbstractClass(ElementNewInterface::class);
28+
$this->model = new Group();
29+
}
30+
31+
public function testBuild()
32+
{
33+
$structureElementPath = 'path_part_1/path_part_2';
34+
35+
$this->structureElementMock->expects($this->never())
36+
->method('getId');
37+
$this->structureElementMock->expects($this->once())
38+
->method('getPath')
39+
->willReturn($structureElementPath);
40+
$this->assertEquals(
41+
[
42+
'section' => 'path_part_1',
43+
'group' => 'path_part_2',
44+
],
45+
$this->model->build($this->structureElementMock)
46+
);
47+
}
48+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Backend\Test\Unit\Model\Search\Config\Structure\Element\Builder;
8+
9+
use Magento\Backend\Model\Search\Config\Structure\Element\Builder\Section;
10+
use Magento\Config\Model\Config\Structure\ElementNewInterface;
11+
use PHPUnit\Framework\TestCase;
12+
13+
class SectionTest extends TestCase
14+
{
15+
/**
16+
* @var ElementNewInterface|\PHPUnit_Framework_MockObject_MockObject
17+
*/
18+
private $structureElementMock;
19+
20+
/**
21+
* @var Section
22+
*/
23+
private $model;
24+
25+
protected function setUp()
26+
{
27+
$this->structureElementMock = $this->getMockForAbstractClass(ElementNewInterface::class);
28+
$this->model = new Section();
29+
}
30+
31+
public function testBuild()
32+
{
33+
$structureElementPath = '/path_part_1';
34+
35+
$this->structureElementMock->expects($this->never())
36+
->method('getId');
37+
$this->structureElementMock->expects($this->once())
38+
->method('getPath')
39+
->willReturn($structureElementPath);
40+
$this->assertEquals(['section' => 'path_part_1'], $this->model->build($this->structureElementMock));
41+
}
42+
}

app/code/Magento/Config/Test/Unit/Block/System/Config/EditTest.php

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ class EditTest extends \PHPUnit\Framework\TestCase
3737
*/
3838
protected $_sectionMock;
3939

40+
/**
41+
* @var \PHPUnit_Framework_MockObject_MockObject
42+
*/
43+
protected $_jsonMock;
44+
4045
protected function setUp()
4146
{
4247
$this->_systemConfigMock = $this->createMock(\Magento\Config\Model\Config\Structure::class);
@@ -67,12 +72,15 @@ protected function setUp()
6772
$this->returnValue($this->_sectionMock)
6873
);
6974

75+
$this->_jsonMock = $this->createMock(\Magento\Framework\Serialize\Serializer\Json::class);
76+
7077
$data = [
7178
'data' => ['systemConfig' => $this->_systemConfigMock],
7279
'request' => $this->_requestMock,
7380
'layout' => $this->_layoutMock,
7481
'urlBuilder' => $this->_urlModelMock,
7582
'configStructure' => $this->_systemConfigMock,
83+
'jsonSerializer' => $this->_jsonMock,
7684
];
7785

7886
$helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -164,4 +172,85 @@ public function testPrepareLayout()
164172
$this->_object->setNameInLayout($expectedBlock);
165173
$this->_object->setLayout($this->_layoutMock);
166174
}
175+
176+
/**
177+
* @param array $requestData
178+
* @param array $expected
179+
* @dataProvider getConfigSearchParamsJsonData
180+
*/
181+
public function testGetConfigSearchParamsJson(array $requestData, array $expected)
182+
{
183+
$requestMock = $this->createMock(\Magento\Framework\App\RequestInterface::class);
184+
185+
$requestMock->expects($this->any())
186+
->method('getParam')
187+
->will($this->returnValueMap($requestData));
188+
$this->_jsonMock->expects($this->once())
189+
->method('serialize')
190+
->with($expected);
191+
192+
$data = [
193+
'data' => ['systemConfig' => $this->_systemConfigMock],
194+
'request' => $requestMock,
195+
'layout' => $this->_layoutMock,
196+
'urlBuilder' => $this->_urlModelMock,
197+
'configStructure' => $this->_systemConfigMock,
198+
'jsonSerializer' => $this->_jsonMock,
199+
];
200+
201+
$helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
202+
$object = $helper->getObject(\Magento\Config\Block\System\Config\Edit::class, $data);
203+
204+
$object->getConfigSearchParamsJson();
205+
}
206+
207+
/**
208+
* @return array
209+
*/
210+
public function getConfigSearchParamsJsonData()
211+
{
212+
return [
213+
[
214+
[
215+
['section', null, null],
216+
['group', null, null],
217+
['field', null, null],
218+
],
219+
[],
220+
],
221+
[
222+
[
223+
['section', null, 'section_code'],
224+
['group', null, null],
225+
['field', null, null],
226+
],
227+
[
228+
'section' => 'section_code',
229+
],
230+
],
231+
[
232+
[
233+
['section', null, 'section_code'],
234+
['group', null, 'group_code'],
235+
['field', null, null],
236+
],
237+
[
238+
'section' => 'section_code',
239+
'group' => 'group_code',
240+
],
241+
],
242+
[
243+
[
244+
['section', null, 'section_code'],
245+
['group', null, 'group_code'],
246+
['field', null, 'field_code'],
247+
],
248+
[
249+
'section' => 'section_code',
250+
'group' => 'group_code',
251+
'field' => 'field_code',
252+
],
253+
],
254+
];
255+
}
167256
}

0 commit comments

Comments
 (0)