Code Duplication    Length = 71-72 lines in 2 locations

src/Component/Resource/Tests/Domain/DomainManagerTest.php 2 locations

@@ 488-558 (lines=71) @@
485
        $this->domainManager->create($object);
486
    }
487
488
    public function testUpdateWithManagedObject()
489
    {
490
        $this->resource
491
            ->expects($this->exactly(4))
492
            ->method('getName')
493
            ->will($this->returnValue($name = 'name'));
494
495
        $this->objectManager
496
            ->expects($this->once())
497
            ->method('contains')
498
            ->with($this->identicalTo($object = new \stdClass()))
499
            ->will($this->returnValue(true));
500
501
        $this->objectManager
502
            ->expects($this->never())
503
            ->method('persist');
504
505
        $this->objectManager
506
            ->expects($this->once())
507
            ->method('flush');
508
509
        $this->eventDispatcher
510
            ->expects($this->at(0))
511
            ->method('dispatch')
512
            ->with(
513
                $this->identicalTo('lug.'.$name.'.pre_'.($updateAction = 'update')),
514
                $this->callback(function (DomainEvent $event) use ($updateAction, $object) {
515
                    return $event->getResource() === $this->resource
516
                    && $event->getObject() === $object
517
                    && $event->getAction() === $updateAction;
518
                })
519
            );
520
521
        $this->eventDispatcher
522
            ->expects($this->at(1))
523
            ->method('dispatch')
524
            ->with(
525
                $this->identicalTo('lug.'.$name.'.pre_'.($flushAction = 'flush')),
526
                $this->callback(function (DomainEvent $event) use ($flushAction, $object) {
527
                    return $event->getResource() === $this->resource
528
                    && $event->getObject() === $object
529
                    && $event->getAction() === $flushAction;
530
                })
531
            );
532
533
        $this->eventDispatcher
534
            ->expects($this->at(2))
535
            ->method('dispatch')
536
            ->with(
537
                $this->identicalTo('lug.'.$name.'.post_'.$flushAction),
538
                $this->callback(function (DomainEvent $event) use ($flushAction, $object) {
539
                    return $event->getResource() === $this->resource
540
                    && $event->getObject() === $object
541
                    && $event->getAction() === $flushAction;
542
                })
543
            );
544
545
        $this->eventDispatcher
546
            ->expects($this->at(3))
547
            ->method('dispatch')
548
            ->with(
549
                $this->identicalTo('lug.'.$name.'.post_'.$updateAction),
550
                $this->callback(function (DomainEvent $event) use ($object, $updateAction) {
551
                    return $event->getResource() === $this->resource
552
                    && $event->getObject() === $object
553
                    && $event->getAction() === $updateAction;
554
                })
555
            );
556
557
        $this->domainManager->update($object);
558
    }
559
560
    public function testUpdateWithoutManagedObject()
561
    {
@@ 560-631 (lines=72) @@
557
        $this->domainManager->update($object);
558
    }
559
560
    public function testUpdateWithoutManagedObject()
561
    {
562
        $this->resource
563
            ->expects($this->exactly(4))
564
            ->method('getName')
565
            ->will($this->returnValue($name = 'name'));
566
567
        $this->objectManager
568
            ->expects($this->once())
569
            ->method('contains')
570
            ->with($this->identicalTo($object = new \stdClass()))
571
            ->will($this->returnValue(false));
572
573
        $this->objectManager
574
            ->expects($this->once())
575
            ->method('persist')
576
            ->with($this->identicalTo($object));
577
578
        $this->objectManager
579
            ->expects($this->once())
580
            ->method('flush');
581
582
        $this->eventDispatcher
583
            ->expects($this->at(0))
584
            ->method('dispatch')
585
            ->with(
586
                $this->identicalTo('lug.'.$name.'.pre_'.($updateAction = 'update')),
587
                $this->callback(function (DomainEvent $event) use ($updateAction, $object) {
588
                    return $event->getResource() === $this->resource
589
                    && $event->getObject() === $object
590
                    && $event->getAction() === $updateAction;
591
                })
592
            );
593
594
        $this->eventDispatcher
595
            ->expects($this->at(1))
596
            ->method('dispatch')
597
            ->with(
598
                $this->identicalTo('lug.'.$name.'.pre_'.($flushAction = 'flush')),
599
                $this->callback(function (DomainEvent $event) use ($flushAction, $object) {
600
                    return $event->getResource() === $this->resource
601
                    && $event->getObject() === $object
602
                    && $event->getAction() === $flushAction;
603
                })
604
            );
605
606
        $this->eventDispatcher
607
            ->expects($this->at(2))
608
            ->method('dispatch')
609
            ->with(
610
                $this->identicalTo('lug.'.$name.'.post_'.$flushAction),
611
                $this->callback(function (DomainEvent $event) use ($flushAction, $object) {
612
                    return $event->getResource() === $this->resource
613
                    && $event->getObject() === $object
614
                    && $event->getAction() === $flushAction;
615
                })
616
            );
617
618
        $this->eventDispatcher
619
            ->expects($this->at(3))
620
            ->method('dispatch')
621
            ->with(
622
                $this->identicalTo('lug.'.$name.'.post_'.$updateAction),
623
                $this->callback(function (DomainEvent $event) use ($object, $updateAction) {
624
                    return $event->getResource() === $this->resource
625
                    && $event->getObject() === $object
626
                    && $event->getAction() === $updateAction;
627
                })
628
            );
629
630
        $this->domainManager->update($object);
631
    }
632
633
    public function testUpdateWithoutFlush()
634
    {