5
5
*/
6
6
namespace Magento \Cms \Test \Unit \Model ;
7
7
8
+ use Magento \Cms \Model \Page ;
9
+ use Magento \Framework \App \Config \ScopeConfigInterface ;
10
+ use Magento \Framework \Event \ManagerInterface ;
11
+ use Magento \Framework \Model \Context ;
12
+ use Magento \Cms \Model \ResourceModel \Page as PageResource ;
13
+ use Magento \Framework \Model \ResourceModel \AbstractResource ;
14
+
8
15
/**
9
16
* @covers \Magento\Cms\Model\Page
17
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
10
18
*/
11
19
class PageTest extends \PHPUnit_Framework_TestCase
12
20
{
13
21
/**
14
- * @var \Magento\Cms\Model\Page|\PHPUnit_Framework_MockObject_MockObject
22
+ * @var \Magento\Cms\Model\Page
15
23
*/
16
- protected $ thisMock ;
24
+ protected $ model ;
17
25
18
26
/**
19
- * @var \Magento\Backend\Block\Template\Context
27
+ * @var \Magento\Backend\Block\Template\Context|\PHPUnit_Framework_MockObject_MockObject
20
28
*/
21
- protected $ context ;
29
+ protected $ contextMock ;
22
30
23
31
/**
24
- * @var \Magento\Framework\Event\ ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
32
+ * @var ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
25
33
*/
26
34
protected $ eventManagerMock ;
27
35
28
36
/**
29
- * @var \Magento\Cms\Model\ResourceModel\Page |\PHPUnit_Framework_MockObject_MockObject
37
+ * @var PageResource |\PHPUnit_Framework_MockObject_MockObject
30
38
*/
31
39
protected $ resourcePageMock ;
32
40
41
+ /**
42
+ * @var AbstractResource|\PHPUnit_Framework_MockObject_MockObject
43
+ */
44
+ protected $ resourcesMock ;
45
+
46
+ /**
47
+ * @var ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
48
+ */
49
+ protected $ scopeConfigMock ;
50
+
33
51
protected function setUp ()
34
52
{
35
- $ objectManager = new \Magento \Framework \TestFramework \Unit \Helper \ObjectManager ($ this );
36
- $ this ->eventManagerMock = $ this ->getMockBuilder ('Magento\Framework\Event\ManagerInterface ' )
53
+ $ this ->eventManagerMock = $ this ->getMockBuilder (ManagerInterface::class)
37
54
->disableOriginalConstructor ()
38
55
->getMock ();
39
- $ this ->context = $ objectManager ->getObject (
40
- 'Magento\Framework\Model\Context ' ,
41
- [
42
- 'eventDispatcher ' => $ this ->eventManagerMock
43
- ]
44
- );
45
- $ this ->resourcePageMock = $ this ->getMockBuilder ('Magento\Cms\Model\ResourceModel\Page ' )
56
+ $ this ->contextMock = $ this ->getMockBuilder (Context::class)
46
57
->disableOriginalConstructor ()
47
- ->setMethods (
48
- [
49
- 'getIdFieldName ' ,
50
- 'checkIdentifier ' ,
51
- ]
52
- )
53
58
->getMock ();
54
- $ this ->thisMock = $ this ->getMockBuilder ('Magento\Cms\Model\Page ' )
55
- ->setConstructorArgs (
56
- [
57
- $ this ->context ,
58
- $ this ->getMockBuilder ('Magento\Framework\Registry ' )
59
- ->disableOriginalConstructor ()
60
- ->getMock (),
61
- $ this ->getMockBuilder ('Magento\Framework\Model\ResourceModel\AbstractResource ' )
62
- ->disableOriginalConstructor ()
63
- ->setMethods (
64
- [
65
- '_construct ' ,
66
- 'getConnection ' ,
67
- ]
68
- )
69
- ->getMockForAbstractClass (),
70
- $ this ->getMockBuilder ('Magento\Framework\Data\Collection\AbstractDb ' )
71
- ->disableOriginalConstructor ()
72
- ->getMockForAbstractClass (),
73
- ]
74
- )
75
- ->setMethods (
76
- [
77
- '_construct ' ,
78
- '_getResource ' ,
79
- 'load ' ,
80
- ]
81
- )
59
+ $ this ->resourcePageMock = $ this ->getMockBuilder (PageResource::class)
60
+ ->disableOriginalConstructor ()
61
+ ->setMethods (['getIdFieldName ' , 'checkIdentifier ' ])
82
62
->getMock ();
63
+ $ this ->eventManagerMock = $ this ->getMockBuilder (ManagerInterface::class)
64
+ ->disableOriginalConstructor ()
65
+ ->getMock ();
66
+ $ this ->resourcesMock = $ this ->getMockBuilder (AbstractResource::class)
67
+ ->setMethods (['getIdFieldName ' , 'load ' , 'checkIdentifier ' ])
68
+ ->getMockForAbstractClass ();
69
+ $ this ->scopeConfigMock = $ this ->getMockBuilder (ScopeConfigInterface::class)
70
+ ->getMockForAbstractClass ();
71
+
72
+ $ this ->contextMock ->expects ($ this ->any ())
73
+ ->method ('getEventDispatcher ' )
74
+ ->willReturn ($ this ->eventManagerMock );
75
+ $ this ->resourcePageMock ->expects ($ this ->any ())
76
+ ->method ('getResources ' )
77
+ ->willReturn ($ this ->resourcesMock );
83
78
84
- $ this ->thisMock ->expects ($ this ->any ())
85
- ->method ('_getResource ' )
86
- ->willReturn ($ this ->resourcePageMock );
87
- $ this ->thisMock ->expects ($ this ->any ())
88
- ->method ('load ' )
89
- ->willReturnSelf ();
79
+ $ objectManager = new \Magento \Framework \TestFramework \Unit \Helper \ObjectManager ($ this );
80
+
81
+ $ this ->model = $ objectManager ->getObject (
82
+ Page::class,
83
+ [
84
+ 'context ' => $ this ->contextMock ,
85
+ 'resource ' => $ this ->resourcesMock ,
86
+ ]
87
+ );
88
+ $ objectManager ->setBackwardCompatibleProperty (
89
+ $ this ->model ,
90
+ 'scopeConfig ' ,
91
+ $ this ->scopeConfigMock
92
+ );
90
93
}
91
94
92
95
/**
93
96
* @covers \Magento\Cms\Model\Page::noRoutePage
94
97
*/
95
98
public function testNoRoutePage ()
96
99
{
97
- $ this ->assertEquals ($ this ->thisMock , $ this ->thisMock ->noRoutePage ());
100
+ $ this ->assertEquals ($ this ->model , $ this ->model ->noRoutePage ());
98
101
}
99
102
100
103
/**
@@ -106,11 +109,89 @@ public function testCheckIdentifier()
106
109
$ storeId = 2 ;
107
110
$ fetchOneResult = 'some result ' ;
108
111
109
- $ this ->resourcePageMock ->expects ($ this ->atLeastOnce ())
112
+ $ this ->resourcesMock ->expects ($ this ->atLeastOnce ())
110
113
->method ('checkIdentifier ' )
111
114
->with ($ identifier , $ storeId )
112
115
->willReturn ($ fetchOneResult );
113
116
114
- $ this ->assertInternalType ('string ' , $ this ->thisMock ->checkIdentifier ($ identifier , $ storeId ));
117
+ $ this ->assertInternalType ('string ' , $ this ->model ->checkIdentifier ($ identifier , $ storeId ));
118
+ }
119
+
120
+ /**
121
+ * @expectedException \Magento\Framework\Exception\LocalizedException
122
+ * @expectedExceptionMessage This identifier is reserved for "CMS No Route Page" in configuration.
123
+ */
124
+ public function testBeforeSave404Identifier ()
125
+ {
126
+ $ this ->model ->setId (1 );
127
+ $ this ->model ->setOrigData ('identifier ' , 'no-route ' );
128
+ $ this ->model ->setIdentifier ('no-route2 ' );
129
+
130
+ $ this ->scopeConfigMock ->expects ($ this ->once ())
131
+ ->method ('getValue ' )
132
+ ->willReturnMap (
133
+ [
134
+ [
135
+ \Magento \Cms \Helper \Page::XML_PATH_NO_ROUTE_PAGE ,
136
+ ScopeConfigInterface::SCOPE_TYPE_DEFAULT ,
137
+ null ,
138
+ 'no-route '
139
+ ]
140
+ ]
141
+ );
142
+
143
+ $ this ->model ->beforeSave ();
144
+ }
145
+
146
+ /**
147
+ * @expectedException \Magento\Framework\Exception\LocalizedException
148
+ * @expectedExceptionMessage This identifier is reserved for "CMS Home Page" in configuration.
149
+ */
150
+ public function testBeforeSaveHomeIdentifier ()
151
+ {
152
+ $ this ->model ->setId (1 );
153
+ $ this ->model ->setOrigData ('identifier ' , 'home ' );
154
+ $ this ->model ->setIdentifier ('home2 ' );
155
+
156
+ $ this ->scopeConfigMock ->expects ($ this ->atLeastOnce ())
157
+ ->method ('getValue ' )
158
+ ->willReturnMap (
159
+ [
160
+ [
161
+ \Magento \Cms \Helper \Page::XML_PATH_HOME_PAGE ,
162
+ ScopeConfigInterface::SCOPE_TYPE_DEFAULT ,
163
+ null ,
164
+ 'home '
165
+ ]
166
+ ]
167
+ );
168
+
169
+ $ this ->model ->beforeSave ();
170
+ }
171
+
172
+ /**
173
+ * @expectedException \Magento\Framework\Exception\LocalizedException
174
+ * @expectedExceptionMessage This identifier is reserved for "CMS No Cookies Page" in configuration.
175
+ */
176
+ public function testBeforeSaveNoCookiesIdentifier ()
177
+ {
178
+ $ this ->model ->setId (1 );
179
+ $ this ->model ->setOrigData ('identifier ' , 'no-cookies ' );
180
+ $ this ->model ->setIdentifier ('no-cookies2 ' );
181
+
182
+ $ this ->scopeConfigMock ->expects ($ this ->atLeastOnce ())
183
+ ->method ('getValue ' )
184
+ ->willReturnMap (
185
+ [
186
+ [
187
+ \Magento \Cms \Helper \Page::XML_PATH_NO_COOKIES_PAGE ,
188
+ ScopeConfigInterface::SCOPE_TYPE_DEFAULT ,
189
+ null ,
190
+ 'no-cookies '
191
+ ]
192
+ ]
193
+ );
194
+
195
+ $ this ->model ->beforeSave ();
115
196
}
116
197
}
0 commit comments