Passed
Push — master ( 4327f5...645913 )
by Chris
03:00
created

ImportPurchaseTest::testUpdateDelegateInfo()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 27
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 18
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 27
rs 8.8571
1
<?php
2
3
namespace ConferenceTools\Checkin\Domain\Process;
4
5
use Carnage\Cqrs\Testing\AbstractBusTest;
6
use ConferenceTools\Checkin\Domain\Command\Delegate\RegisterDelegate;
7
use ConferenceTools\Checkin\Domain\Command\Delegate\UpdateDelegateInformation;
8
use ConferenceTools\Checkin\Domain\Event\Delegate\DelegateRegistered;
9
use ConferenceTools\Checkin\Domain\Event\Purchase\TicketAssigned;
10
use ConferenceTools\Checkin\Domain\Event\Purchase\TicketPurchasePaid;
11
use ConferenceTools\Checkin\Domain\ProcessManager\ImportPurchase as ImportPurchaseProcessManager;
12
use ConferenceTools\Checkin\Domain\ValueObject\DelegateInfo;
13
use ConferenceTools\Checkin\Domain\ValueObject\Ticket;
14
15
class ImportPurchaseTest extends AbstractBusTest
16
{
17
    protected $modelClass = ImportPurchase::class;
18
19
    public function testTicketAssignedProducesNoCommands()
20
    {
21
        $sut = new ImportPurchaseProcessManager($this->repository);
22
        $this->setupLogger($sut);
23
24
        $delegate = new DelegateInfo('ted', 'banks', '[email protected]');
25
        $ticket = new Ticket('pid', 'tid');
26
        $message = new TicketAssigned($delegate, $ticket, '[email protected]');
27
        $sut->handle($message);
28
29
        self::assertCount(1, $this->messageBus->messages);
30
        $domainMessage = $this->messageBus->messages[0]->getEvent();
31
32
        self::assertSame($message, $domainMessage);
33
    }
34
35
    public function testTicketPurchasePaidProducesNoCommands()
36
    {
37
        $sut = new ImportPurchaseProcessManager($this->repository);
38
        $this->setupLogger($sut);
39
40
        $message = new TicketPurchasePaid('pid', '[email protected]');
41
        $sut->handle($message);
42
43
        self::assertCount(1, $this->messageBus->messages);
44
        $domainMessage = $this->messageBus->messages[0]->getEvent();
45
46
        self::assertSame($message, $domainMessage);
47
    }
48
49
    public function testTicketAssignedAndPurchasePaidRegistersADelegate()
50
    {
51
        $sut = new ImportPurchaseProcessManager($this->repository);
52
        $this->setupLogger($sut);
53
54
        $delegate = new DelegateInfo('ted', 'banks', '[email protected]');
55
        $ticket = new Ticket('pid', 'tid');
56
        $message = new TicketAssigned($delegate, $ticket, '[email protected]');
57
        $sut->handle($message);
58
59
        $message = new TicketPurchasePaid('pid', '[email protected]');
60
        $sut->handle($message);
61
62
        self::assertCount(3, $this->messageBus->messages);
63
        $domainMessage = $this->messageBus->messages[2]->getEvent();
64
65
        $delegate = new DelegateInfo('ted', 'banks', '[email protected]');
66
        $ticket = new Ticket('pid', 'tid');
67
        $expected = new RegisterDelegate($delegate, $ticket, '[email protected]');
68
69
        self::assertEquals($expected, $domainMessage);
70
    }
71
72
    public function testUpdateDelegateInfo()
73
    {
74
        $sut = new ImportPurchaseProcessManager($this->repository);
75
        $this->setupLogger($sut);
76
77
        $delegate = new DelegateInfo('ted', 'banks', '[email protected]');
78
        $ticket = new Ticket('pid', 'tid');
79
        $message = new TicketAssigned($delegate, $ticket, '[email protected]');
80
        $sut->handle($message);
81
82
        $message = new TicketPurchasePaid('pid', '[email protected]');
83
        $sut->handle($message);
84
85
        $sut->handle(new DelegateRegistered('did', $delegate, $ticket, '[email protected]'));
86
87
        $delegate = new DelegateInfo('ben', 'franks', '[email protected]');
88
        $ticket = new Ticket('pid', 'tid');
89
        $message = new TicketAssigned($delegate, $ticket, '[email protected]');
90
        $sut->handle($message);
91
92
        self::assertCount(5, $this->messageBus->messages);
93
        $domainMessage = $this->messageBus->messages[4]->getEvent();
94
95
        $delegate = new DelegateInfo('ben', 'franks', '[email protected]');
96
        $expected = new UpdateDelegateInformation('did', $delegate);
97
98
        self::assertEquals($expected, $domainMessage);
99
    }
100
}