Passed
Pull Request — master (#213)
by Ruslan
18:45
created

testAssetUpdatedMessageIsSuccessfullyHandled()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 33
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 33
c 0
b 0
f 0
rs 9.584
cc 1
nc 1
nop 0
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace PyzTest\Zed\MessageBroker\MessageHandlers\Asset\Communication;
9
10
use Codeception\Test\Unit;
11
use Generated\Shared\Transfer\AssetAddedTransfer;
12
use Generated\Shared\Transfer\AssetDeletedTransfer;
13
use Generated\Shared\Transfer\AssetUpdatedTransfer;
14
use PyzTest\Zed\MessageBroker\AssetCommunicationTester;
15
use Ramsey\Uuid\Uuid;
16
17
/**
18
 * Auto-generated group annotations
19
 *
20
 * @group PyzTest
21
 * @group Zed
22
 * @group MessageBroker
23
 * @group MessageHandlers
24
 * @group Asset
25
 * @group Communication
26
 * @group AssetMessageTest
27
 * Add your own group annotations below this line
28
 */
29
class AssetMessageTest extends Unit
30
{
31
    /**
32
     * @var \PyzTest\Zed\MessageBroker\AssetCommunicationTester
33
     */
34
    protected AssetCommunicationTester $tester;
35
36
    /**
37
     * @return void
38
     */
39
    public function testAssetAddedMessageIsSuccessfullyHandled(): void
40
    {
41
        // Arrange
42
        $assetUuid = Uuid::uuid4()->toString();
43
        $slotName = 'slt-footer';
44
        $channelName = 'asset-commands';
45
46
        $assetAddedTransfer = $this->tester->generateAssetAddedTransfer([
47
            AssetAddedTransfer::ASSET_SLOT => $slotName,
48
            AssetAddedTransfer::ASSET_IDENTIFIER => $assetUuid,
49
        ]);
50
51
        // Act
52
        $this->tester->setupMessageBroker($assetAddedTransfer::class, $channelName);
53
        $messageBrokerFacade = $this->tester->getLocator()->messageBroker()->facade();
54
        $messageBrokerFacade->sendMessage($assetAddedTransfer);
55
        $messageBrokerFacade->startWorker($this->tester->buildMessageBrokerWorkerConfigTransfer([$channelName], 1));
56
57
        // Assert
58
        $asset = $this->tester->findAssetByUuid($assetUuid);
59
        $this->tester->assertNotNull($asset);
60
        $this->tester->assertSame($slotName, $asset->getAssetSlot());
61
    }
62
63
    /**
64
     * @return void
65
     */
66
    public function testAssetUpdatedMessageIsSuccessfullyHandled(): void
67
    {
68
        // Arrange
69
        $channelName = 'asset-commands';
70
        $assetUuid = Uuid::uuid4()->toString();
71
        $slotName = 'header-top';
72
73
        $this->tester->setupMessageBroker(AssetAddedTransfer::class, $channelName);
74
        $messageBrokerFacade = $this->tester->getLocator()->messageBroker()->facade();
75
        $messageBrokerWorkerConfigTransfer = $this->tester->buildMessageBrokerWorkerConfigTransfer([$channelName], 1);
76
        $messageBrokerFacade->sendMessage(
77
            $this->tester->generateAssetAddedTransfer([
78
                AssetAddedTransfer::ASSET_SLOT => 'slt-footer',
79
                AssetAddedTransfer::ASSET_IDENTIFIER => $assetUuid,
80
            ]),
81
        );
82
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
83
        $this->tester->resetInMemoryMessages();
84
85
        // Act
86
        $this->tester->setupMessageBroker(AssetUpdatedTransfer::class, $channelName);
87
        $messageBrokerFacade->sendMessage(
88
            $this->tester->generateAssetUpdatedTransfer([
89
                AssetUpdatedTransfer::ASSET_SLOT => $slotName,
90
                AssetUpdatedTransfer::ASSET_IDENTIFIER => $assetUuid,
91
            ]),
92
        );
93
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
94
95
        // Assert
96
        $asset = $this->tester->findAssetByUuid($assetUuid);
97
        $this->tester->assertNotNull($asset);
98
        $this->tester->assertSame($slotName, $asset->getAssetSlot());
99
    }
100
101
    /**
102
     * @return void
103
     */
104
    public function testAssetDeletedMessageIsSuccessfullyHandled(): void
105
    {
106
        // Arrange
107
        $channelName = 'asset-commands';
108
        $assetUuid = Uuid::uuid4()->toString();
109
110
        $this->tester->setupMessageBroker(AssetAddedTransfer::class, $channelName);
111
        $messageBrokerFacade = $this->tester->getLocator()->messageBroker()->facade();
112
        $messageBrokerWorkerConfigTransfer = $this->tester->buildMessageBrokerWorkerConfigTransfer([$channelName], 1);
113
        $messageBrokerFacade->sendMessage(
114
            $this->tester->generateAssetAddedTransfer([
115
                AssetAddedTransfer::ASSET_IDENTIFIER => $assetUuid,
116
            ]),
117
        );
118
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
119
        $this->tester->resetInMemoryMessages();
120
121
        // Act
122
        $this->tester->setupMessageBroker(AssetDeletedTransfer::class, $channelName);
123
        $messageBrokerFacade->sendMessage(
124
            $this->tester->generateAssetDeletedTransfer([
125
                AssetDeletedTransfer::ASSET_IDENTIFIER => $assetUuid,
126
            ]),
127
        );
128
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
129
130
        // Assert
131
        $this->tester->assertFalse($this->tester->findAssetByUuid($assetUuid)->getIsActive());
132
    }
133
}
134