GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Test Failed
Pull Request — master (#6)
by Fábio Tadeu da
03:22
created

OutboxOrderedDoctrineEventsTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 118
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 51
dl 0
loc 118
c 0
b 0
f 0
rs 10

13 Methods

Rating   Name   Duplication   Size   Complexity  
A hp$0 ➔ getAggregateType() 0 3 1
A hp$0 ➔ getName() 0 3 1
A hp$0 ➔ __construct() 0 3 1
A hp$1 ➔ trigger() 0 3 1
A hp$0 ➔ getRoute() 0 3 1
A hp$0 ➔ getAggregateId() 0 3 1
getEntityClass() 0 8 ?
A hp$0 ➔ getEventClass() 0 33 1
A setUpDependencies() 0 5 1
getEventClass() 0 33 ?
A hp$0 ➔ getPayloadType() 0 3 1
A hp$1 ➔ getEntityClass() 0 8 1
A testOnFlushOperations() 0 50 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Dsantang\DomainEventsDoctrine\Tests\Unit;
6
7
use Doctrine\ORM\EntityManagerInterface;
8
use Doctrine\ORM\Event\OnFlushEventArgs;
9
use Doctrine\ORM\UnitOfWork;
10
use Dsantang\DomainEvents\Counter;
11
use Dsantang\DomainEvents\EventAware;
12
use Dsantang\DomainEvents\Registry\OrderedEventRegistry;
13
use Dsantang\DomainEventsDoctrine\OutboxEvents\OutboxEntityPersistence;
14
use Dsantang\DomainEventsDoctrine\OutboxEvents\OutboxEvent;
15
use Dsantang\DomainEventsDoctrine\OutboxEvents\OutboxOrderedDoctrineEvents;
16
use Dsantang\DomainEventsDoctrine\OutboxEvents\OutboxTransformer;
17
use Dsantang\DomainEventsDoctrine\Tests\OutboxSubClass;
18
use PHPUnit\Framework\MockObject\MockObject;
19
use PHPUnit\Framework\TestCase;
20
use Ramsey\Uuid\Uuid;
21
use Ramsey\Uuid\UuidInterface;
22
23
final class OutboxOrderedDoctrineEventsTest extends TestCase
24
{
25
    /** @var OutboxTransformer */
26
    private $transformer;
27
28
    /** @var OutboxEntityPersistence|MockObject */
29
    private $entityPersistence;
30
31
    /** @var OutboxOrderedDoctrineEvents */
32
    private $recorder;
33
34
    /**
35
     * @before
36
     */
37
    public function setUpDependencies() : void
38
    {
39
        $this->transformer       = new OutboxTransformer(new OutboxSubClass());
40
        $this->entityPersistence = $this->createMock(OutboxEntityPersistence::class);
41
        $this->recorder          = new OutboxOrderedDoctrineEvents($this->transformer, $this->entityPersistence);
42
    }
43
44
    public function testOnFlushOperations() : void
45
    {
46
        Counter::reset();
47
48
        $event1 = $this->getEventClass('first');
49
        $event2 = $this->getEventClass('second');
50
        $event3 = $this->getEventClass('third');
51
52
        $entity1 = $this->getEntityClass();
53
        $entity2 = $this->getEntityClass();
54
        $entity3 = $this->getEntityClass();
55
56
        $entity1->trigger($event1);
57
        $entity2->trigger($event2);
58
        $entity3->trigger($event3);
59
60
        $unitOfWork = $this->createMock(UnitOfWork::class);
61
62
        $unitOfWork->expects(self::once())
63
            ->method('getScheduledEntityInsertions')
64
            ->willReturn([$entity1]);
65
66
        $unitOfWork->expects(self::once())
67
            ->method('getScheduledEntityUpdates')
68
            ->willReturn([]);
69
70
        $unitOfWork->expects(self::once())
71
            ->method('getScheduledEntityDeletions')
72
            ->willReturn([$entity2, $entity3]);
73
74
        $entityManager = $this->createMock(EntityManagerInterface::class);
75
76
        $entityManager->expects(self::once())->method('getUnitOfWork')->willReturn($unitOfWork);
77
78
        $eventArgs = $this->createMock(OnFlushEventArgs::class);
79
        $eventArgs->expects(self::once())->method('getEntityManager')->willReturn($entityManager);
80
81
        self::assertEquals(3, Counter::getNext());
82
83
        $this->entityPersistence->expects(self::exactly(3))
0 ignored issues
show
Bug introduced by
The method expects() does not exist on Dsantang\DomainEventsDoc...OutboxEntityPersistence. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

83
        $this->entityPersistence->/** @scrutinizer ignore-call */ 
84
                                  expects(self::exactly(3))

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
84
            ->method('persist')
85
            ->withConsecutive(
86
                [$this->transformer->transform($event1)],
87
                [$this->transformer->transform($event2)],
88
                [$this->transformer->transform($event3)]
89
            );
90
91
        $this->recorder->onFlush($eventArgs);
92
93
        self::assertEquals(0, Counter::getNext());
94
    }
95
96
    private function getEventClass(string $reference) : OutboxEvent
97
    {
98
        return new class($reference) implements OutboxEvent {
99
            private $reference;
100
101
            public function __construct(string $reference)
102
            {
103
                $this->reference = $reference;
104
            }
105
106
            public function getName() : string
107
            {
108
                return $this->reference;
109
            }
110
111
            public function getRoute() : string
112
            {
113
                return 'route' . $this->reference;
114
            }
115
116
            public function getAggregateId() : UuidInterface
117
            {
118
                return Uuid::uuid4();
119
            }
120
121
            public function getAggregateType() : string
122
            {
123
                return $this->reference;
124
            }
125
126
            public function getPayloadType() : string
127
            {
128
                return $this->reference;
129
            }
130
        };
131
    }
132
133
    private function getEntityClass()
134
    {
135
        return new class() implements EventAware {
136
            use OrderedEventRegistry;
137
138
            public function trigger(OutboxEvent $event) : void
139
            {
140
                $this->triggeredA($event);
141
            }
142
        };
143
    }
144
}
145