Skip to content

Commit 4ed6256

Browse files
committed
ACP2E-3424: added test coverage
1 parent 3564244 commit 4ed6256

File tree

1 file changed

+168
-0
lines changed

1 file changed

+168
-0
lines changed
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
<?php
2+
/**
3+
* Copyright 2024 Adobe
4+
* All Rights Reserved.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\PageBuilder\Test\Unit\Model;
9+
10+
use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
11+
use Magento\Framework\Exception\CouldNotDeleteException;
12+
use Magento\Framework\Exception\LocalizedException;
13+
use Magento\Framework\Filesystem;
14+
use Magento\Framework\Filesystem\Directory\WriteInterface;
15+
use Magento\Framework\Image\Adapter\AdapterInterface;
16+
use Magento\Framework\Image\Factory;
17+
use Magento\PageBuilder\Api\Data\TemplateSearchResultsInterfaceFactory;
18+
use Magento\PageBuilder\Model\ResourceModel\Template as ResourceTemplate;
19+
use Magento\PageBuilder\Model\ResourceModel\Template\CollectionFactory;
20+
use Magento\PageBuilder\Model\Template;
21+
use Magento\PageBuilder\Model\TemplateFactory;
22+
use Magento\PageBuilder\Model\TemplateRepository;
23+
use Magento\MediaStorage\Helper\File\Storage\Database;
24+
use PHPUnit\Framework\MockObject\Exception;
25+
use PHPUnit\Framework\MockObject\MockObject;
26+
use PHPUnit\Framework\TestCase;
27+
28+
class TemplateRepositoryTest extends TestCase
29+
{
30+
/**
31+
* @var ResourceTemplate|MockObject
32+
*/
33+
private $resourceMock;
34+
35+
/**
36+
* @var TemplateFactory|MockObject
37+
*/
38+
private $templateFactoryMock;
39+
40+
/**
41+
* @var CollectionFactory|MockObject
42+
*/
43+
private $templateCollectionFactoryMock;
44+
45+
/**
46+
* @var TemplateSearchResultsInterfaceFactory|MockObject
47+
*/
48+
private $searchResultsFactoryMock;
49+
50+
/**
51+
* @var CollectionProcessorInterface|MockObject
52+
*/
53+
private $collectionProcessorMock;
54+
55+
/**
56+
* @var Filesystem|MockObject
57+
*/
58+
private $filesystemMock;
59+
60+
/**
61+
* @var Database|MockObject
62+
*/
63+
private $mediaStorageMock;
64+
65+
/**
66+
* @var Factory|MockObject
67+
*/
68+
private $imageFactoryMock;
69+
70+
/**
71+
* @var TemplateRepository
72+
*/
73+
private $templateRepository;
74+
75+
protected function setUp(): void
76+
{
77+
$this->resourceMock = $this->createMock(ResourceTemplate::class);
78+
$this->templateFactoryMock = $this->createMock(TemplateFactory::class);
79+
$this->templateCollectionFactoryMock = $this->createMock(CollectionFactory::class);
80+
$this->searchResultsFactoryMock = $this->createMock(TemplateSearchResultsInterfaceFactory::class);
81+
$this->collectionProcessorMock = $this->createMock(CollectionProcessorInterface::class);
82+
$this->filesystemMock = $this->createMock(Filesystem::class);
83+
$this->mediaStorageMock = $this->createMock(Database::class);
84+
$this->imageFactoryMock = $this->createMock(Factory::class);
85+
86+
$this->templateRepository = new TemplateRepository(
87+
$this->resourceMock,
88+
$this->templateFactoryMock,
89+
$this->templateCollectionFactoryMock,
90+
$this->searchResultsFactoryMock,
91+
$this->collectionProcessorMock,
92+
$this->filesystemMock,
93+
$this->mediaStorageMock,
94+
$this->imageFactoryMock
95+
);
96+
}
97+
98+
/**
99+
* Test for delete method
100+
*
101+
* @return void
102+
* @throws LocalizedException
103+
* @throws Exception
104+
*/
105+
public function testDelete()
106+
{
107+
$templateId = 1;
108+
$templateMock =$this->getMockBuilder(Template::class)
109+
->disableOriginalConstructor()
110+
->addMethods(['getTemplateId'])
111+
->onlyMethods(['getPreviewImage', 'getPreviewThumbnailImage'])
112+
->getMock();
113+
;
114+
$templateMock->expects($this->once())
115+
->method('getTemplateId')
116+
->willReturn($templateId);
117+
$templateMock->expects($this->once())
118+
->method('getPreviewImage')
119+
->willReturn('preview_image.jpg');
120+
$templateMock->expects($this->once())
121+
->method('getPreviewThumbnailImage')
122+
->willReturn('preview_thumb_image.jpg');
123+
124+
$this->templateFactoryMock->method('create')->willReturn($templateMock);
125+
$this->resourceMock->expects($this->once())->method('load')->with($templateMock, $templateId);
126+
$this->resourceMock->expects($this->once())->method('delete')->with($templateMock);
127+
128+
$mediaDirMock = $this->createMock(WriteInterface::class);
129+
$this->filesystemMock->method('getDirectoryWrite')->willReturn($mediaDirMock);
130+
$mediaDirMock->method('isExist')->willReturn(true);
131+
$mediaDirMock->method('delete')->willReturn(true);
132+
$this->imageFactoryMock->expects($this->exactly(2))
133+
->method('create')
134+
->willReturnCallback(
135+
function ($path) {
136+
$this->assertEquals('preview_image.jpg', $path);
137+
return $this->createMock(AdapterInterface::class);
138+
}
139+
);
140+
$this->mediaStorageMock->expects($this->exactly(2))->method('deleteFile');
141+
142+
$this->assertTrue($this->templateRepository->delete($templateMock));
143+
}
144+
145+
/**
146+
* Test for delete method when throws exception
147+
*
148+
* @return void
149+
* @throws LocalizedException
150+
*/
151+
public function testDeleteThrowsException()
152+
{
153+
$this->expectException(CouldNotDeleteException::class);
154+
155+
$templateMock =$this->getMockBuilder(Template::class)
156+
->disableOriginalConstructor()
157+
->addMethods(['getTemplateId'])
158+
->getMock();
159+
$templateMock->expects($this->once())
160+
->method('getTemplateId')
161+
->willReturn(1);
162+
163+
$this->templateFactoryMock->method('create')->willReturn($templateMock);
164+
$this->resourceMock->method('load')->willThrowException(new \Exception('Error'));
165+
166+
$this->templateRepository->delete($templateMock);
167+
}
168+
}

0 commit comments

Comments
 (0)