Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PublicationDecoratorTest.php
Go to the documentation of this file.
1 <?php
2 /***
3  * Copyright © Magento, Inc. All rights reserved.
4  * See COPYING.txt for license details.
5  */
7 
19 
23 class PublicationDecoratorTest extends \PHPUnit\Framework\TestCase
24 {
28  private $model;
29 
33  private $filesystemMock;
34 
38  private $temporaryFileMock;
39 
43  private $publisherMock;
44 
48  private $assetRepositoryMock;
49 
53  private $relatedAssetMock;
54 
58  private $importGeneratorMock;
59 
63  private $localAssetMock;
64 
68  private $scopeConfigMock;
69 
73  private $stateMock;
74 
75  protected function setUp()
76  {
77  $this->filesystemMock = $this->getMockBuilder(Filesystem::class)
78  ->disableOriginalConstructor()
79  ->getMock();
80  $this->temporaryFileMock = $this->getMockBuilder(Temporary::class)
81  ->disableOriginalConstructor()
82  ->getMock();
83  $this->publisherMock = $this->getMockBuilder(Publisher::class)
84  ->disableOriginalConstructor()
85  ->getMock();
86  $this->assetRepositoryMock = $this->getMockBuilder(Repository::class)
87  ->disableOriginalConstructor()
88  ->getMock();
89  $this->relatedAssetMock = $this->getMockBuilder(File::class)
90  ->disableOriginalConstructor()
91  ->getMock();
92  $this->importGeneratorMock = $this->getMockBuilder(Import::class)
93  ->disableOriginalConstructor()
94  ->getMock();
95  $this->localAssetMock = $this->getMockBuilder(LocalInterface::class)
96  ->disableOriginalConstructor()
97  ->getMock();
98  $this->scopeConfigMock = $this->getMockBuilder(ScopeConfigInterface::class)
99  ->getMockForAbstractClass();
100  $this->stateMock = $this->getMockBuilder(State::class)
101  ->disableOriginalConstructor()
102  ->getMock();
103 
104  $this->model = (new ObjectManager($this))->getObject(PublicationDecorator::class, [
105  'assetRepository' => $this->assetRepositoryMock,
106  'temporaryFile' => $this->temporaryFileMock,
107  'assetPublisher' => $this->publisherMock,
108  'scopeConfig' => $this->scopeConfigMock,
109  'state' => $this->stateMock,
110  'hasRelatedPublishing' => true,
111  ]);
112  }
113 
117  public function testGenerateRelatedFile()
118  {
119  $relatedFileId = 'file_id';
120  $relatedFiles = [[$relatedFileId, $this->localAssetMock]];
121 
122  $this->importGeneratorMock->expects($this->any())
123  ->method('getRelatedFiles')
124  ->willReturnOnConsecutiveCalls($relatedFiles, []);
125  $this->assetRepositoryMock->expects($this->any())
126  ->method('createRelated')
127  ->willReturn($this->relatedAssetMock);
128  $this->publisherMock->expects($this->once())
129  ->method('publish')
130  ->with($this->relatedAssetMock);
131 
132  $this->model->generate($this->importGeneratorMock);
133  }
134 }