23 use Psr\Log\LoggerInterface;
25 use PHPUnit_Framework_MockObject_MockObject as Mock;
42 private $deployStrategyFactory;
47 private $queueFactory;
57 private $objectManager;
62 private $versionStorage;
66 $this->deployStrategyFactory = $this->createPartialMock(DeployStrategyFactory::class, [
'create']);
67 $this->queueFactory = $this->createPartialMock(QueueFactory::class, [
'create']);
68 $this->logger = $this->getMockForAbstractClass(
69 LoggerInterface::class,
74 $this->objectManager = $this->createPartialMock(ObjectManagerInterface::class, [
'create',
'get',
'configure']);
75 $this->versionStorage = $this->getMockForAbstractClass(
76 StorageInterface::class,
85 $this->versionStorage,
86 $this->deployStrategyFactory,
98 $package = $this->createMock(Package::class);
99 if (
$options[
'refresh-content-version-only']) {
100 $package->expects($this->never())->method(
'isVirtual');
101 $package->expects($this->never())->method(
'getArea');
102 $package->expects($this->never())->method(
'getTheme');
103 $package->expects($this->never())->method(
'getLocale');
105 $package->expects($this->exactly(1))->method(
'isVirtual')->willReturn(
false);
106 $package->expects($this->exactly(3))->method(
'getArea')->willReturn(
'area');
107 $package->expects($this->exactly(3))->method(
'getTheme')->willReturn(
'theme');
108 $package->expects($this->exactly(3))->method(
'getLocale')->willReturn(
'locale');
110 $packages = [
'package' => $package];
112 if ($expectedContentVersion) {
113 $this->versionStorage->expects($this->once())->method(
'save')->with($expectedContentVersion);
115 $this->versionStorage->expects($this->once())->method(
'save');
118 $queue = $this->getMockBuilder(Queue::class)
119 ->disableOriginalConstructor()
120 ->getMockForAbstractClass();
121 if (
$options[
'refresh-content-version-only']) {
122 $this->queueFactory->expects($this->never())->method(
'create');
124 $this->queueFactory->expects($this->once())->method(
'create')->willReturn(
$queue);
127 $strategy = $this->getMockBuilder(CompactDeploy::class)
128 ->setMethods([
'deploy'])
129 ->disableOriginalConstructor()
130 ->getMockForAbstractClass();
131 if (
$options[
'refresh-content-version-only']) {
132 $strategy->expects($this->never())->method(
'deploy');
134 $strategy->expects($this->once())->method(
'deploy')
136 ->willReturn($packages);
137 $this->deployStrategyFactory->expects($this->once())
139 ->with(
'compact', [
'queue' =>
$queue])
140 ->willReturn($strategy);
142 $deployPackageService = $this->getMockBuilder(DeployPackage::class)
143 ->disableOriginalConstructor()
144 ->getMockForAbstractClass();
145 $deployRjsConfig = $this->getMockBuilder(DeployRequireJsConfig::class)
146 ->setMethods([
'deploy'])
147 ->disableOriginalConstructor()
148 ->getMockForAbstractClass();
149 $deployI18n = $this->getMockBuilder(DeployTranslationsDictionary::class)
150 ->setMethods([
'deploy'])
151 ->disableOriginalConstructor()
152 ->getMockForAbstractClass();
153 $deployBundle = $this->getMockBuilder(Bundle::class)
154 ->setMethods([
'deploy'])
155 ->disableOriginalConstructor()
156 ->getMockForAbstractClass();
157 $minifyTemplates = $this->getMockBuilder(MinifyTemplates::class)
158 ->setMethods([
'minifyTemplates'])
159 ->disableOriginalConstructor()
160 ->getMockForAbstractClass();
162 if (
$options[
'refresh-content-version-only']) {
163 $this->objectManager->expects($this->never())->method(
'create');
164 $this->objectManager->expects($this->never())->method(
'get');
166 $this->objectManager->expects($this->exactly(4))
169 [DeployPackage::class, [
'logger' => $this->logger]],
170 [DeployRequireJsConfig::class, [
'logger' => $this->logger]],
171 [DeployTranslationsDictionary::class, [
'logger' => $this->logger]],
172 [Bundle::class, [
'logger' => $this->logger]]
174 ->willReturnOnConsecutiveCalls(
175 $deployPackageService,
181 $this->objectManager->expects($this->exactly(1))
183 ->withConsecutive([MinifyTemplates::class])
184 ->willReturnOnConsecutiveCalls($minifyTemplates);
187 $this->assertEquals(
null, $this->service->deploy(
$options));
198 'strategy' =>
'compact',
199 'no-javascript' =>
false,
200 'no-html-minify' =>
false,
201 'refresh-content-version-only' =>
false,
207 'strategy' =>
'compact',
208 'no-javascript' =>
false,
209 'no-html-minify' =>
false,
210 'refresh-content-version-only' =>
false,
211 'content-version' =>
'123456',
217 'refresh-content-version-only' =>
true,
218 'content-version' =>
'654321',
testDeploy($options, $expectedContentVersion)