1
1
<?php
2
2
/**
3
- * Copyright © Magento, Inc. All rights reserved.
4
- * See COPYING.txt for license details .
3
+ * Copyright 2012 Adobe
4
+ * All Rights Reserved .
5
5
*/
6
6
declare (strict_types=1 );
7
7
8
8
namespace Magento \Sitemap \Test \Unit \Model ;
9
9
10
+ use Magento \Framework \App \Filesystem \DirectoryList ;
10
11
use Magento \Framework \App \Request \Http ;
11
12
use Magento \Framework \DataObject ;
12
13
use Magento \Framework \Escaper ;
20
21
use Magento \Sitemap \Helper \Data ;
21
22
use Magento \Sitemap \Model \ItemProvider \ConfigReaderInterface ;
22
23
use Magento \Sitemap \Model \ItemProvider \ItemProviderInterface ;
23
- use Magento \Sitemap \Model \ResourceModel \Catalog \Category ;
24
24
use Magento \Sitemap \Model \ResourceModel \Catalog \CategoryFactory ;
25
- use Magento \Sitemap \Model \ResourceModel \Catalog \Product ;
26
25
use Magento \Sitemap \Model \ResourceModel \Catalog \ProductFactory ;
27
- use Magento \Sitemap \Model \ResourceModel \Cms \Page ;
28
26
use Magento \Sitemap \Model \ResourceModel \Cms \PageFactory ;
29
27
use Magento \Sitemap \Model \ResourceModel \Sitemap as SitemapResource ;
30
28
use Magento \Sitemap \Model \Sitemap ;
31
29
use Magento \Sitemap \Model \SitemapConfigReaderInterface ;
32
30
use Magento \Sitemap \Model \SitemapItem ;
33
31
use Magento \Store \Model \Store ;
34
32
use Magento \Store \Model \StoreManagerInterface ;
35
- use PHPUnit \Framework \Assert ;
36
33
use PHPUnit \Framework \MockObject \MockObject ;
37
34
use PHPUnit \Framework \TestCase ;
38
35
42
39
class SitemapTest extends TestCase
43
40
{
44
41
/**
45
- * @var Data
46
- */
47
- private $ helperMockSitemap ;
48
-
49
- /**
50
- * @var SitemapResource
42
+ * @var SitemapResource|MockObject
51
43
*/
52
44
private $ resourceMock ;
53
45
54
46
/**
55
- * @var Category
47
+ * @var Filesystem|MockObject
56
48
*/
57
- private $ sitemapCategoryMock ;
49
+ private $ filesystemMock ;
58
50
59
51
/**
60
- * @var Product
52
+ * @var DirectoryWrite|MockObject
61
53
*/
62
- private $ sitemapProductMock ;
54
+ private $ directoryMock ;
63
55
64
56
/**
65
- * @var Page
57
+ * @var Write|MockObject
66
58
*/
67
- private $ sitemapCmsPageMock ;
59
+ private $ fileMock ;
68
60
69
61
/**
70
- * @var Filesystem
62
+ * @var DirectoryWrite|MockObject
71
63
*/
72
- private $ filesystemMock ;
64
+ private $ tmpDirectoryMock ;
73
65
74
66
/**
75
- * @var DirectoryWrite
67
+ * @var Write|MockObject
76
68
*/
77
- private $ directoryMock ;
69
+ private $ tmpFileMock ;
78
70
79
71
/**
80
- * @var Write
72
+ * @var DirectoryWrite|MockObject
81
73
*/
82
- private $ fileMock ;
74
+ private $ mediaDirectoryMock ;
83
75
84
76
/**
85
77
* @var StoreManagerInterface|MockObject
@@ -96,10 +88,6 @@ class SitemapTest extends TestCase
96
88
*/
97
89
private $ configReaderMock ;
98
90
99
- /**
100
- * @var Http|MockObject
101
- */
102
- private $ request ;
103
91
/**
104
92
* @var Store|MockObject
105
93
*/
@@ -110,20 +98,6 @@ class SitemapTest extends TestCase
110
98
*/
111
99
protected function setUp (): void
112
100
{
113
- $ this ->sitemapCategoryMock = $ this ->getMockBuilder (Category::class)
114
- ->disableOriginalConstructor ()
115
- ->getMock ();
116
- $ this ->sitemapProductMock = $ this ->getMockBuilder (Product::class)
117
- ->disableOriginalConstructor ()
118
- ->getMock ();
119
- $ this ->sitemapCmsPageMock = $ this ->getMockBuilder (Page::class)
120
- ->disableOriginalConstructor ()
121
- ->getMock ();
122
-
123
- $ this ->helperMockSitemap = $ this ->getMockBuilder (Data::class)
124
- ->disableOriginalConstructor ()
125
- ->getMock ();
126
-
127
101
$ resourceMethods = [
128
102
'_construct ' ,
129
103
'beginTransaction ' ,
@@ -133,35 +107,37 @@ protected function setUp(): void
133
107
'commit ' ,
134
108
'__wakeup ' ,
135
109
];
136
-
137
110
$ this ->resourceMock = $ this ->getMockBuilder (SitemapResource::class)
138
111
->onlyMethods ($ resourceMethods )
139
112
->disableOriginalConstructor ()
140
113
->getMock ();
141
-
142
114
$ this ->resourceMock ->method ('addCommitCallback ' )
143
115
->willReturnSelf ();
144
116
145
117
$ this ->fileMock = $ this ->createMock (Write::class);
146
-
147
118
$ this ->directoryMock = $ this ->createMock (DirectoryWrite::class);
148
-
149
119
$ this ->directoryMock ->method ('openFile ' )
150
120
->willReturn ($ this ->fileMock );
151
-
152
- $ this ->filesystemMock = $ this ->getMockBuilder (Filesystem ::class)
153
- -> onlyMethods ([ ' getDirectoryWrite ' ] )
154
- ->disableOriginalConstructor ()
155
- -> getMock ( );
156
-
121
+ $ this -> tmpFileMock = $ this -> createMock (Write::class);
122
+ $ this ->tmpDirectoryMock = $ this ->createMock (DirectoryWrite ::class);
123
+ $ this -> tmpDirectoryMock -> method ( ' openFile ' )
124
+ ->willReturn ( $ this -> tmpFileMock );
125
+ $ this -> mediaDirectoryMock = $ this -> createMock (DirectoryWrite::class );
126
+ $ this -> filesystemMock = $ this -> createMock (Filesystem::class);
157
127
$ this ->filesystemMock ->method ('getDirectoryWrite ' )
158
- ->willReturn ($ this ->directoryMock );
128
+ ->willReturnMap (
129
+ [
130
+ [DirectoryList::PUB , $ this ->directoryMock ],
131
+ [DirectoryList::SYS_TMP , $ this ->tmpDirectoryMock ],
132
+ [DirectoryList::MEDIA , $ this ->mediaDirectoryMock ],
133
+ ]
134
+ );
135
+
136
+ $ this ->configReaderMock = $ this ->createMock (SitemapConfigReaderInterface::class);
137
+ $ this ->itemProviderMock = $ this ->createMock (ItemProviderInterface::class);
159
138
160
- $ this ->configReaderMock = $ this ->getMockForAbstractClass (SitemapConfigReaderInterface::class);
161
- $ this ->itemProviderMock = $ this ->getMockForAbstractClass (ItemProviderInterface::class);
162
- $ this ->request = $ this ->createMock (Http::class);
163
139
$ this ->store = $ this ->createPartialMock (Store::class, ['isFrontUrlSecure ' , 'getBaseUrl ' ]);
164
- $ this ->storeManagerMock = $ this ->getMockForAbstractClass (StoreManagerInterface::class);
140
+ $ this ->storeManagerMock = $ this ->createMock (StoreManagerInterface::class);
165
141
$ this ->storeManagerMock ->method ('getStore ' )
166
142
->willReturn ($ this ->store );
167
143
}
@@ -423,35 +399,28 @@ protected function prepareSitemapModelMock(
423
399
}
424
400
$ actualData [$ currentFile ] .= $ str ;
425
401
};
426
-
427
402
// Check that all expected lines were written
428
- $ this ->fileMock ->expects (
429
- $ this ->exactly ($ expectedWrites )
430
- )->method (
431
- 'write '
432
- )->willReturnCallback (
433
- $ streamWriteCallback
434
- );
403
+ $ this ->tmpFileMock ->expects ($ this ->exactly ($ expectedWrites ))
404
+ ->method ('write ' )
405
+ ->willReturnCallback ($ streamWriteCallback );
435
406
436
407
$ checkFileCallback = function ($ file ) use (&$ currentFile ) {
437
408
$ currentFile = $ file ;
438
- };// Check that all expected file descriptors were created
439
- $ this ->directoryMock ->expects ($ this ->exactly (count ($ expectedFile )))->method ('openFile ' )
409
+ };
410
+ // Check that all expected file descriptors were created
411
+ $ this ->tmpDirectoryMock ->expects ($ this ->exactly (count ($ expectedFile )))
412
+ ->method ('openFile ' )
440
413
->willReturnCallback ($ checkFileCallback );
441
414
442
415
// Check that all file descriptors were closed
443
- $ this ->fileMock ->expects ($ this ->exactly (count ($ expectedFile )))
416
+ $ this ->tmpFileMock ->expects ($ this ->exactly (count ($ expectedFile )))
444
417
->method ('close ' );
445
418
446
419
if (count ($ expectedFile ) == 1 ) {
447
- $ this ->directoryMock ->expects ($ this ->once ())
420
+ $ this ->tmpDirectoryMock ->expects ($ this ->once ())
448
421
->method ('renameFile ' )
449
- ->willReturnCallback (
450
- function ($ from , $ to ) {
451
- Assert::assertEquals ('/sitemap-1-1.xml ' , $ from );
452
- Assert::assertEquals ('/sitemap.xml ' , $ to );
453
- }
454
- );
422
+ ->with ('/sitemap-1-1.xml ' , '/sitemap.xml ' , $ this ->directoryMock )
423
+ ->willReturn (true );
455
424
}
456
425
457
426
// Check robots txt
@@ -591,17 +560,11 @@ protected function getModelMock($mockBeforeSave = false)
591
560
*/
592
561
private function getModelConstructorArgs ()
593
562
{
594
- $ categoryFactory = $ this ->getMockBuilder (CategoryFactory::class)
595
- ->disableOriginalConstructor ()
596
- ->getMock ();
597
-
598
- $ productFactory = $ this ->getMockBuilder (ProductFactory::class)
599
- ->disableOriginalConstructor ()
600
- ->getMock ();
601
-
602
- $ cmsFactory = $ this ->getMockBuilder (PageFactory::class)
603
- ->disableOriginalConstructor ()
604
- ->getMock ();
563
+ $ categoryFactory = $ this ->createMock (CategoryFactory::class);
564
+ $ productFactory = $ this ->createMock (ProductFactory::class);
565
+ $ cmsFactory = $ this ->createMock (PageFactory::class);
566
+ $ helperMockSitemap = $ this ->createMock (Data::class);
567
+ $ request = $ this ->createMock (Http::class);
605
568
606
569
$ objectManager = new ObjectManager ($ this );
607
570
$ escaper = $ objectManager ->getObject (Escaper::class);
@@ -614,12 +577,12 @@ private function getModelConstructorArgs()
614
577
'productFactory ' => $ productFactory ,
615
578
'cmsFactory ' => $ cmsFactory ,
616
579
'storeManager ' => $ this ->storeManagerMock ,
617
- 'sitemapData ' => $ this -> helperMockSitemap ,
580
+ 'sitemapData ' => $ helperMockSitemap ,
618
581
'filesystem ' => $ this ->filesystemMock ,
619
582
'itemProvider ' => $ this ->itemProviderMock ,
620
583
'configReader ' => $ this ->configReaderMock ,
621
584
'escaper ' => $ escaper ,
622
- 'request ' => $ this -> request ,
585
+ 'request ' => $ request ,
623
586
]
624
587
);
625
588
$ constructArguments ['resource ' ] = null ;
0 commit comments