Completed
Push — master ( 1af7e7...796d56 )
by Jeroen
16s
created

NodeBundle/Tests/unit/Helper/NodeHelperTest.php (1 issue)

Checks whether return doc types can be made more specific.

Documentation Informational

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\NodeBundle\Tests\Helper;
4
5
use Doctrine\Common\Persistence\ObjectRepository;
6
use Doctrine\ORM\EntityManager;
7
use Doctrine\ORM\EntityManagerInterface;
8
use Kunstmaan\AdminBundle\Entity\User;
9
use Kunstmaan\AdminBundle\Helper\CloneHelper;
10
use Kunstmaan\NodeBundle\Entity\AbstractPage;
11
use Kunstmaan\NodeBundle\Entity\HasNodeInterface;
12
use Kunstmaan\NodeBundle\Entity\Node;
13
use Kunstmaan\NodeBundle\Entity\NodeTranslation;
14
use Kunstmaan\NodeBundle\Entity\NodeVersion;
15
use Kunstmaan\NodeBundle\Event\CopyPageTranslationNodeEvent;
16
use Kunstmaan\NodeBundle\Event\Events;
17
use Kunstmaan\NodeBundle\Event\NodeEvent;
18
use Kunstmaan\NodeBundle\Event\RecopyPageTranslationNodeEvent;
19
use Kunstmaan\NodeBundle\Helper\NodeAdmin\NodeAdminPublisher;
20
use Kunstmaan\NodeBundle\Helper\NodeAdmin\NodeVersionLockHelper;
21
use Kunstmaan\NodeBundle\Helper\NodeHelper;
22
use Kunstmaan\NodeBundle\Repository\NodeRepository;
23
use Kunstmaan\NodeBundle\Repository\NodeTranslationRepository;
24
use Kunstmaan\NodeBundle\Repository\NodeVersionRepository;
25
use Symfony\Component\EventDispatcher\EventDispatcher;
26
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
27
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
28
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
29
30
class TestPage extends AbstractPage implements HasNodeInterface
31
{
32
    /**
33
     * @return array
34
     */
35
    public function getPossibleChildTypes()
36
    {
37
        return [];
38
    }
39
}
40
41
class NodeHelperTest extends \PHPUnit_Framework_TestCase
42
{
43
    /** @var \PHPUnit_Framework_MockObject_MockObject|EntityManagerInterface $em */
44
    private $em;
45
46
    /** @var \PHPUnit_Framework_MockObject_MockObject|NodeRepository */
47
    private $repository;
48
49
    /** @var NodeHelper */
50
    private $nodeHelper;
51
52
    /** @var \PHPUnit_Framework_MockObject_MockObject|NodeAdminPublisher */
53
    private $nodeAdminPublisher;
54
55
    /** @var \PHPUnit_Framework_MockObject_MockObject|EventDispatcher */
56
    private $eventDispatcher;
57
58
    /** @var \PHPUnit_Framework_MockObject_MockObject|TokenStorageInterface */
59
    private $tokenStorage;
60
61
    /** @var \PHPUnit_Framework_MockObject_MockObject|NodeVersionLockHelper */
62
    private $nodeVersionLockHelper;
63
64
    /** @var \PHPUnit_Framework_MockObject_MockObject|CloneHelper */
65
    private $cloneHelper;
66
67
    /** @var string */
68
    private $locale = 'en';
69
70
    /** @var User */
71
    private $user;
72
73
    public function setUp()
74
    {
75
        $this->createORM();
76
        $this->nodeHelper = $this->createNodeHelper();
77
    }
78
79
    public function testUpdatePage()
80
    {
81
        /**
82
         * @var TestPage
83
         * @var NodeTranslation $nodeTranslation
84
         */
85
        list($page, $nodeTranslation, $node) = $this->createNodeEntities();
86
        $nodeVersion = $nodeTranslation->getPublicNodeVersion();
87
88
        $this->em
89
            ->expects($this->exactly(3))
90
            ->method('persist')
91
            ->withConsecutive(
92
                [$this->equalTo($nodeTranslation)],
93
                [$this->equalTo($nodeVersion)],
94
                [$this->equalTo($node)]
95
            );
96
97
        $this->eventDispatcher
98
            ->expects($this->exactly(2))
99
            ->method('dispatch')
100
            ->withConsecutive(
101
                [$this->equalTo(Events::PRE_PERSIST), $this->equalTo(new NodeEvent($node, $nodeTranslation, $nodeVersion, $page))],
102
                [$this->equalTo(Events::POST_PERSIST), $this->equalTo(new NodeEvent($node, $nodeTranslation, $nodeVersion, $page))]
103
            );
104
105
        $this->nodeHelper->updatePage(
106
            $node,
107
            $nodeTranslation,
108
            $nodeTranslation->getPublicNodeVersion(),
109
            $page,
110
            false,
111
            null
112
        );
113
    }
114
115
    public function testCreatePage()
116
    {
117
        $title = 'Test page';
118
        $user = new User();
119
120
        list($homePage, , $nodeHomePage) = $this->createNodeEntities('Homepage');
121
122
        /**
123
         * @var TestPage
124
         * @var NodeTranslation $nodeTranslationChildPage
125
         */
126
        list($page, $nodeTranslationChildPage, $nodeChildPage) = $this->createNodeEntities($title);
127
128
        $expectedTestPageCreateNodeFor = new TestPage();
129
        $expectedTestPageCreateNodeFor->setTitle($title);
130
        $expectedTestPageCreateNodeFor->setParent($homePage);
131
132
        $nodeRepository = $this->getMockBuilder(NodeRepository::class)
133
            ->disableOriginalConstructor()
134
            ->getMock();
135
        $nodeRepository
136
            ->expects($this->once())
137
            ->method('createNodeFor')
138
            ->with(
139
                $this->equalTo($expectedTestPageCreateNodeFor),
140
                $this->equalTo($this->locale),
141
                $this->equalTo($user)
142
            )
143
            ->willReturn($nodeChildPage);
144
145
        $nodeTranslationRepository = $this->getMockBuilder(NodeTranslationRepository::class)
146
            ->disableOriginalConstructor()
147
            ->getMock();
148
        $nodeTranslationRepository
149
            ->expects($this->once())
150
            ->method('getMaxChildrenWeight')
151
            ->willReturn(1);
152
153
        $this->em
154
            ->method('getRepository')
155
            ->withConsecutive(
156
                [$this->equalTo('KunstmaanNodeBundle:Node')],
157
                [$this->equalTo('KunstmaanNodeBundle:NodeTranslation')]
158
            )
159
            ->willReturnOnConsecutiveCalls(
160
                $nodeRepository,
161
                $nodeTranslationRepository
162
            );
163
164
        $expectedEvent = new NodeEvent(
165
            $nodeChildPage, $nodeTranslationChildPage, $nodeTranslationChildPage->getPublicNodeVersion(), $expectedTestPageCreateNodeFor
166
        );
167
        $this->eventDispatcher
168
            ->expects($this->once())
169
            ->method('dispatch')
170
            ->with($this->equalTo(Events::ADD_NODE), $this->equalTo($expectedEvent))
171
        ;
172
173
        $result = $this->nodeHelper->createPage(TestPage::class, $title, $this->locale, $nodeHomePage);
174
175
        $this->assertInstanceOf(NodeTranslation::class, $result);
176
        $this->assertEquals(2, $result->getWeight());
177
        $this->assertEquals($title, $result->getTitle());
178
    }
179
180
    public function testDeletePage()
181
    {
182
        /**
183
         * @var Node
184
         * @var NodeTranslation $nodeTranslationHomePage
185
         */
186
        list($homePage, $nodeTranslationHomePage, $nodeHomePage) = $this->createNodeEntities('Homepage');
187
        $nodeVersionHomePage = $nodeTranslationHomePage->getPublicNodeVersion();
188
189
        /**
190
         * @var TestPage
191
         * @var NodeTranslation $nodeTranslationChildPage
192
         */
193
        list($page, $nodeTranslationChildPage, $nodeChildPage) = $this->createNodeEntities('Test page');
194
        $nodeVersionChildPage = $nodeTranslationChildPage->getPublicNodeVersion();
195
        $nodeHomePage->addNode($nodeChildPage);
196
197
        $this->eventDispatcher
198
            ->expects($this->exactly(4))
199
            ->method('dispatch')
200
            ->withConsecutive(
201
                [$this->equalTo(Events::PRE_DELETE), $this->equalTo(new NodeEvent($nodeHomePage, $nodeTranslationHomePage, $nodeVersionHomePage, $homePage))],
202
                [$this->equalTo(Events::PRE_DELETE), $this->equalTo(new NodeEvent($nodeChildPage, $nodeTranslationChildPage, $nodeVersionChildPage, $page))],
203
                [$this->equalTo(Events::POST_DELETE), $this->equalTo(new NodeEvent($nodeChildPage, $nodeTranslationChildPage, $nodeVersionChildPage, $page))],
204
                [$this->equalTo(Events::POST_DELETE), $this->equalTo(new NodeEvent($nodeHomePage, $nodeTranslationHomePage, $nodeVersionHomePage, $homePage))]
205
            );
206
207
        $result = $this->nodeHelper->deletePage($nodeHomePage, $this->locale);
208
209
        $this->assertTrue($result->getNode()->isDeleted());
210
        $this->assertTrue($nodeHomePage->isDeleted());
211
        $this->assertTrue($nodeChildPage->isDeleted());
212
    }
213
214
    public function testPrepareNodeVersionForPublic()
215
    {
216
        $user = new User();
217
218
        $page = new TestPage();
219
        $page->setTitle('Test');
220
        $page->setId(1);
221
222
        $nodeVersion = new NodeVersion();
223
        $nodeVersion->setType(NodeVersion::PUBLIC_VERSION);
224
        $nodeVersion->setRef($page);
225
226
        $nodeVersion = $this->getMockBuilder(NodeVersion::class)->getMock();
227
        $nodeVersion
228
            ->method('getType')
229
            ->willReturn(NodeVersion::PUBLIC_VERSION);
230
        $nodeVersion
231
            ->expects($this->once())
232
            ->method('getRef')
233
            ->willReturn($page);
234
        $nodeVersion
235
            ->method('getUpdated')
236
            ->willReturn((new \DateTime('-1 hour')));
237
238
        $nodeTranslation = new NodeTranslation();
239
        $nodeTranslation->setLang($this->locale);
240
        $nodeTranslation->addNodeVersion($nodeVersion);
241
242
        $this->nodeAdminPublisher
243
            ->expects($this->once())
244
            ->method('createPublicVersion')
245
            ->with(
246
                $this->equalTo($page),
247
                $this->equalTo($nodeTranslation),
248
                $this->equalTo($nodeVersion),
249
                $this->equalTo($user)
250
            );
251
252
        $this->nodeHelper->prepareNodeVersion($nodeVersion, $nodeTranslation, 10, true);
253
    }
254
255
    public function testPrepareNodeVersionForDraft()
256
    {
257
        $page = new TestPage();
258
        $page->setTitle('Test');
259
        $page->setId(1);
260
261
        $nodeVersion = new NodeVersion();
262
        $nodeVersion->setType(NodeVersion::PUBLIC_VERSION);
263
        $nodeVersion->setRef($page);
264
265
        $nodeVersion = $this->getMockBuilder(NodeVersion::class)->getMock();
266
        $nodeVersion
267
            ->method('getType')
268
            ->willReturn(NodeVersion::DRAFT_VERSION);
269
        $nodeVersion
270
            ->expects($this->once())
271
            ->method('getRef')
272
            ->willReturn($page);
273
        $nodeVersion
274
            ->method('getUpdated')
275
            ->willReturn((new \DateTime('-1 hour')));
276
277
        $nodeTranslation = new NodeTranslation();
278
        $nodeTranslation->setLang($this->locale);
279
        $nodeTranslation->addNodeVersion($nodeVersion);
280
281
        /** @var \PHPUnit_Framework_MockObject_MockObject|NodeHelper $nodeHelper */
282
        $nodeHelper = $this->getMockBuilder(NodeHelper::class)
283
            ->setConstructorArgs([
284
                $this->em,
285
                $this->nodeAdminPublisher,
286
                $this->tokenStorage,
287
                $this->cloneHelper,
288
                $this->eventDispatcher,
289
            ])
290
            ->setMethods(['createDraftVersion'])
291
            ->getMock();
292
        $nodeHelper
293
            ->expects($this->once())
294
            ->method('createDraftVersion')
295
            ->willReturn(true);
296
297
        $nodeHelper->prepareNodeVersion($nodeVersion, $nodeTranslation, 10, true);
298
    }
299
300
    public function testCreateDraftVersion()
301
    {
302
        /**
303
         * @var TestPage
304
         * @var NodeTranslation $nodeTranslation
305
         */
306
        list($page, $nodeTranslation, $node) = $this->createNodeEntities();
307
        $originalNodeVersion = new NodeVersion();
308
309
        $this->cloneHelper
310
            ->expects($this->once())
311
            ->method('deepCloneAndSave')
312
            ->willReturn($page);
313
314
        $publicNodeVersion = new NodeVersion();
315
        $publicNodeVersion->setRef($page);
316
        $publicNodeVersion->setType(NodeVersion::PUBLIC_VERSION);
317
318
        $nodeVersionRepository = $this->getMockBuilder(NodeVersionRepository::class)
319
            ->disableOriginalConstructor()
320
            ->getMock();
321
        $nodeVersionRepository
322
            ->method('createNodeVersionFor')
323
            ->willReturn($publicNodeVersion);
324
325
        $this->em->method('getRepository')
326
            ->with('KunstmaanNodeBundle:NodeVersion')
327
            ->willReturn($nodeVersionRepository);
328
329
        $this->eventDispatcher
330
            ->expects($this->once())
331
            ->method('dispatch')
332
            ->with($this->equalTo(Events::CREATE_DRAFT_VERSION), $this->equalTo(new NodeEvent($node, $nodeTranslation, $originalNodeVersion, $page)));
333
334
        $result = $this->nodeHelper->createDraftVersion($page, $nodeTranslation, $originalNodeVersion);
335
336
        $this->assertInstanceOf(NodeVersion::class, $result);
337
        $this->assertEquals(NodeVersion::DRAFT_VERSION, $result->getType());
338
        $this->assertEquals($publicNodeVersion, $result->getOrigin());
339
    }
340
341
    public function testGetPageWithNodeInterface()
342
    {
343
        $refId = 10;
344
345
        $page = new TestPage();
346
        $page->setTitle('Test');
347
        $page->setId($refId);
348
349
        $nodeVersion = new NodeVersion();
350
        $nodeVersion->setType(NodeVersion::PUBLIC_VERSION);
351
        $nodeVersion->setRef($page);
352
353
        $nodeTranslation = new NodeTranslation();
354
        $nodeTranslation->setLang($this->locale);
355
        $nodeTranslation->addNodeVersion($nodeVersion);
356
357
        $node = new Node();
358
        $node->addNodeTranslation($nodeTranslation);
359
360
        $repository = $this->getMockBuilder(ObjectRepository::class)->getMock();
361
        $repository
362
            ->expects($this->once())
363
            ->method('find')
364
            ->with($refId)
365
            ->willReturn($page);
366
367
        $this->em
368
            ->expects($this->once())
369
            ->method('getRepository')
370
            ->with($this->equalTo(TestPage::class))
371
            ->willReturn($repository);
372
373
        $this->nodeHelper->getPageWithNodeInterface($node, $this->locale);
374
    }
375
376
    public function testCopyPageFromOtherLanguage()
377
    {
378
        $targetLocale = 'nl';
379
        $targetPage = new TestPage();
380
381
        /**
382
         * @var TestPage
383
         * @var NodeTranslation $sourceNodeTranslation
384
         */
385
        list($sourcePage, $sourceNodeTranslation, $node) = $this->createNodeEntities();
386
        $sourceNodeNodeVersion = $sourceNodeTranslation->getPublicNodeVersion();
387
388
        $this->cloneHelper
389
            ->expects($this->once())
390
            ->method('deepCloneAndSave')
391
            ->with($sourcePage)
392
            ->willReturn($targetPage);
393
394
        $expectedNodeVersion = new NodeVersion();
395
        $expectedNodeVersion->setType(NodeVersion::PUBLIC_VERSION);
396
        $expectedNodeVersion->setRef($targetPage);
397
398
        $expectedNodeTranslation = new NodeTranslation();
399
        $expectedNodeTranslation->setNode($node);
400
        $expectedNodeTranslation->setLang($targetLocale);
401
        $expectedNodeTranslation->setPublicNodeVersion($expectedNodeVersion);
402
403
        $repository = $this->getMockBuilder(NodeTranslationRepository::class)
404
            ->disableOriginalConstructor()
405
            ->getMock();
406
        $repository
407
            ->expects($this->once())
408
            ->method('createNodeTranslationFor')
409
            ->with($this->equalTo($targetPage), $this->equalTo($targetLocale), $this->equalTo($node), $this->equalTo($this->user))
410
            ->willReturn($expectedNodeTranslation);
411
412
        $this->em
413
            ->expects($this->once())
414
            ->method('getRepository')
415
            ->with(NodeTranslation::class)
416
            ->willReturn($repository);
417
418
        $this->eventDispatcher
419
            ->expects($this->once())
420
            ->method('dispatch')
421
            ->with($this->equalTo(Events::COPY_PAGE_TRANSLATION), $this->equalTo(new CopyPageTranslationNodeEvent(
422
                $node,
423
                $expectedNodeTranslation,
424
                $expectedNodeVersion,
425
                $targetPage,
426
                $sourceNodeTranslation,
427
                $sourceNodeNodeVersion,
428
                $sourcePage,
429
                $this->locale)));
430
431
        $result = $this->nodeHelper->copyPageFromOtherLanguage($node, $this->locale, $targetLocale);
432
433
        $this->assertInstanceOf(NodeTranslation::class, $result);
434
        $this->assertEquals($expectedNodeTranslation, $result);
435
    }
436
437
    public function testDuplicatePage()
438
    {
439
        $targetPage = new TestPage();
440
441
        list(, $nodeTranslationHomePage, $nodeHomePage) = $this->createNodeEntities('Homepage');
442
443
        /**
444
         * @var TestPage
445
         * @var NodeTranslation $sourceNodeTranslation
446
         * @var Node            $node
447
         */
448
        list($sourcePage, $sourceNodeTranslation, $node) = $this->createNodeEntities();
449
        $node->setParent($nodeHomePage);
450
451
        $this->cloneHelper
452
            ->expects($this->once())
453
            ->method('deepCloneAndSave')
454
            ->with($sourcePage)
455
            ->willReturn($targetPage);
456
457
        $expectedNodeTranslation = new NodeTranslation();
458
        $expectedNodeTranslation->setLang($this->locale);
459
460
        $expectedNode = new Node();
461
        $expectedNode->addNodeTranslation($expectedNodeTranslation);
462
463
        $repository = $this->getMockBuilder(NodeRepository::class)
464
            ->disableOriginalConstructor()
465
            ->getMock();
466
        $repository
467
            ->expects($this->once())
468
            ->method('createNodeFor')
469
            ->willReturn($expectedNode);
470
471
        $this->em
472
            ->expects($this->once())
473
            ->method('getRepository')
474
            ->with(Node::class)
475
            ->willReturn($repository);
476
477
        $result = $this->nodeHelper->duplicatePage($node, $this->locale);
478
479
        $this->assertInstanceOf(NodeTranslation::class, $result);
480
    }
481
482
    public function testCreatePageDraftFromOtherLanguage()
483
    {
484
        $targetLocale = 'nl';
485
        $targetPage = new TestPage();
486
487
        /**
488
         * @var TestPage
489
         * @var NodeTranslation $sourceNodeTranslation
490
         */
491
        list($sourcePage, $sourceNodeTranslation, $node) = $this->createNodeEntities();
492
        $sourceNodeNodeVersion = $sourceNodeTranslation->getPublicNodeVersion();
493
494
        $this->cloneHelper
495
            ->expects($this->once())
496
            ->method('deepCloneAndSave')
497
            ->with($sourcePage)
498
            ->willReturn($targetPage);
499
500
        $expectedNodeVersion = new NodeVersion();
501
        $expectedNodeVersion->setType(NodeVersion::PUBLIC_VERSION);
502
        $expectedNodeVersion->setRef($targetPage);
503
504
        $expectedNodeTranslation = new NodeTranslation();
505
        $expectedNodeTranslation->setNode($node);
506
        $expectedNodeTranslation->setLang($targetLocale);
507
        $expectedNodeTranslation->setPublicNodeVersion($expectedNodeVersion);
508
509
        $repository = $this->getMockBuilder(NodeTranslationRepository::class)
510
            ->disableOriginalConstructor()
511
            ->getMock();
512
        $repository
513
            ->expects($this->once())
514
            ->method('find')
515
            ->with($this->equalTo(1))
516
            ->willReturn($sourceNodeTranslation);
517
        $repository
518
            ->expects($this->once())
519
            ->method('addDraftNodeVersionFor')
520
            ->with($this->equalTo($targetPage), $this->equalTo($targetLocale), $this->equalTo($node), $this->equalTo($this->user))
521
            ->willReturn($expectedNodeTranslation);
522
523
        $this->em
524
            ->expects($this->exactly(2))
525
            ->method('getRepository')
526
            ->with(NodeTranslation::class)
527
            ->willReturn($repository);
528
529
        $this->eventDispatcher
530
            ->expects($this->once())
531
            ->method('dispatch')
532
            ->with($this->equalTo(Events::RECOPY_PAGE_TRANSLATION), $this->equalTo(new RecopyPageTranslationNodeEvent(
533
                $node,
534
                $expectedNodeTranslation,
535
                $expectedNodeVersion,
536
                $targetPage,
537
                $sourceNodeTranslation,
538
                $sourceNodeNodeVersion,
539
                $sourcePage,
540
                $this->locale)));
541
542
        $result = $this->nodeHelper->createPageDraftFromOtherLanguage($node, 1, $targetLocale);
543
544
        $this->assertInstanceOf(NodeTranslation::class, $result);
545
        $this->assertEquals($expectedNodeTranslation, $result);
546
    }
547
548
    public function testCreateEmptyPage()
549
    {
550
        $targetPage = new TestPage();
551
        $targetPage->setTitle('No title');
552
        $node = new Node();
553
        $node->setRef($targetPage);
554
555
        $expectedNodeVersion = new NodeVersion();
556
        $expectedNodeVersion->setType(NodeVersion::PUBLIC_VERSION);
557
        $expectedNodeVersion->setRef($targetPage);
558
559
        $expectedNodeTranslation = new NodeTranslation();
560
        $expectedNodeTranslation->setNode($node);
561
        $expectedNodeTranslation->setLang($this->locale);
562
        $expectedNodeTranslation->setPublicNodeVersion($expectedNodeVersion);
563
564
        $repository = $this->getMockBuilder(NodeTranslationRepository::class)
565
            ->disableOriginalConstructor()
566
            ->getMock();
567
        $repository
568
            ->expects($this->once())
569
            ->method('createNodeTranslationFor')
570
            ->with($this->equalTo($targetPage), $this->equalTo($this->locale), $this->equalTo($node), $this->equalTo($this->user))
571
            ->willReturn($expectedNodeTranslation);
572
573
        $this->em
574
            ->expects($this->once())
575
            ->method('getRepository')
576
            ->with(NodeTranslation::class)
577
            ->willReturn($repository);
578
579
        $this->eventDispatcher
580
            ->expects($this->once())
581
            ->method('dispatch')
582
            ->with($this->equalTo(Events::ADD_EMPTY_PAGE_TRANSLATION), $this->equalTo(new NodeEvent(
583
                $node,
584
                $expectedNodeTranslation,
585
                $expectedNodeVersion,
586
                $targetPage)));
587
588
        $result = $this->nodeHelper->createEmptyPage($node, $this->locale);
589
590
        $this->assertInstanceOf(NodeTranslation::class, $result);
591
        $this->assertEquals($expectedNodeTranslation, $result);
592
    }
593
594
    private function createORM()
595
    {
596
        $this->repository = $this->getMockBuilder(ObjectRepository::class)
597
            ->disableOriginalConstructor()
598
            ->getMock();
599
600
        $this->em = $this->getMockBuilder(EntityManager::class)
601
            ->disableOriginalConstructor()
602
            ->getMock();
603
    }
604
605
    /**
606
     * @return NodeHelper
607
     */
608
    private function createNodeHelper()
609
    {
610
        $this->user = new User();
611
612
        $token = $this->getMockBuilder(TokenInterface::class)->getMock();
613
        $token->method('getUser')->willReturn($this->user);
614
615
        $this->tokenStorage = $this->getMockBuilder(TokenStorage::class)
616
            ->disableOriginalConstructor()
617
            ->getMock();
618
        $this->tokenStorage->method('getToken')->willReturn($token);
619
        $this->nodeAdminPublisher = $this->getMockBuilder(NodeAdminPublisher::class)
620
            ->disableOriginalConstructor()
621
            ->getMock();
622
        $this->cloneHelper = $this->getMockBuilder(CloneHelper::class)
623
            ->disableOriginalConstructor()
624
            ->getMock();
625
        $this->eventDispatcher = $this->getMockBuilder(EventDispatcher::class)
626
            ->disableOriginalConstructor()
627
            ->getMock();
628
629
        return new NodeHelper(
630
            $this->em,
631
            $this->nodeAdminPublisher,
632
            $this->tokenStorage,
633
            $this->cloneHelper,
634
            $this->eventDispatcher
635
        );
636
    }
637
638
    /**
639
     * @param string $title
640
     *
641
     * @return array
0 ignored issues
show
Consider making the return type a bit more specific; maybe use array<TestPage|NodeTranslation|Node>.

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
642
     */
643
    private function createNodeEntities($title = 'Test page')
644
    {
645
        $testPage = new TestPage();
646
        $testPage->setTitle($title);
647
648
        $nodeVersionNewPage = $this->getMockBuilder(NodeVersion::class)->getMock();
649
        $nodeVersionNewPage
650
            ->method('getRef')
651
            ->with($this->em)
652
            ->willReturn($testPage);
653
        $nodeVersionNewPage
654
            ->method('getType')
655
            ->willReturn(NodeVersion::PUBLIC_VERSION);
656
657
        $nodeTranslationNewPage = new NodeTranslation();
658
        $nodeTranslationNewPage->setTitle($title);
659
        $nodeTranslationNewPage->setLang($this->locale);
660
        $nodeTranslationNewPage->addNodeVersion($nodeVersionNewPage);
661
        $nodeTranslationNewPage->setOnline(true);
662
663
        $nodeNewPage = new Node();
664
        $nodeNewPage->setDeleted(false);
665
        $nodeNewPage->addNodeTranslation($nodeTranslationNewPage);
666
667
        return [$testPage, $nodeTranslationNewPage, $nodeNewPage];
668
    }
669
}
670