AssetMessageTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 106
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 55
c 0
b 0
f 0
dl 0
loc 106
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testAssetUpdatedMessageIsSuccessfullyHandled() 0 34 1
A testAssetDeletedMessageIsSuccessfullyHandled() 0 29 1
A testAssetAddedMessageIsSuccessfullyHandled() 0 23 1
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
declare(strict_types = 1);
9
10
namespace PyzTest\Zed\MessageBroker\MessageHandlers\Asset\Communication;
11
12
use Codeception\Test\Unit;
13
use Generated\Shared\Transfer\AssetAddedTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\AssetAddedTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
14
use Generated\Shared\Transfer\AssetDeletedTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\AssetDeletedTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
use Generated\Shared\Transfer\AssetUpdatedTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\AssetUpdatedTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
16
use PyzTest\Zed\MessageBroker\AssetCommunicationTester;
17
use Ramsey\Uuid\Uuid;
18
19
/**
20
 * Auto-generated group annotations
21
 *
22
 * @group PyzTest
23
 * @group Zed
24
 * @group MessageBroker
25
 * @group MessageHandlers
26
 * @group Asset
27
 * @group Communication
28
 * @group AssetMessageTest
29
 * Add your own group annotations below this line
30
 */
31
class AssetMessageTest extends Unit
32
{
33
    /**
34
     * @var \PyzTest\Zed\MessageBroker\AssetCommunicationTester
35
     */
36
    protected AssetCommunicationTester $tester;
37
38
    /**
39
     * @return void
40
     */
41
    public function testAssetAddedMessageIsSuccessfullyHandled(): void
42
    {
43
        // Arrange
44
        $assetUuid = Uuid::uuid4()->toString();
45
        $slotName = 'slt-footer';
46
        $channelName = 'asset-commands';
47
48
        $assetAddedTransfer = $this->tester->generateAssetAddedTransfer([
49
            AssetAddedTransfer::ASSET_SLOT => $slotName,
50
            AssetAddedTransfer::ASSET_IDENTIFIER => $assetUuid,
51
        ]);
52
53
        // Act
54
        $this->tester->setupMessageBroker($assetAddedTransfer::class, $channelName);
55
        $this->tester->setupMessageBrokerPlugins();
56
        $messageBrokerFacade = $this->tester->getLocator()->messageBroker()->facade();
57
        $messageBrokerFacade->sendMessage($assetAddedTransfer);
58
        $messageBrokerFacade->startWorker($this->tester->buildMessageBrokerWorkerConfigTransfer([$channelName], 1));
59
60
        // Assert
61
        $asset = $this->tester->findAssetByUuid($assetUuid);
62
        $this->tester->assertNotNull($asset);
63
        $this->tester->assertSame($slotName, $asset->getAssetSlot());
64
    }
65
66
    /**
67
     * @return void
68
     */
69
    public function testAssetUpdatedMessageIsSuccessfullyHandled(): void
70
    {
71
        // Arrange
72
        $channelName = 'asset-commands';
73
        $assetUuid = Uuid::uuid4()->toString();
74
        $slotName = 'header-top';
75
76
        $this->tester->setupMessageBroker(AssetAddedTransfer::class, $channelName);
77
        $this->tester->setupMessageBrokerPlugins();
78
        $messageBrokerFacade = $this->tester->getLocator()->messageBroker()->facade();
79
        $messageBrokerWorkerConfigTransfer = $this->tester->buildMessageBrokerWorkerConfigTransfer([$channelName], 1);
80
        $messageBrokerFacade->sendMessage(
81
            $this->tester->generateAssetAddedTransfer([
82
                AssetAddedTransfer::ASSET_SLOT => 'slt-footer',
83
                AssetAddedTransfer::ASSET_IDENTIFIER => $assetUuid,
84
            ]),
85
        );
86
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
87
        $this->tester->resetInMemoryMessages();
88
89
        // Act
90
        $this->tester->setupMessageBroker(AssetUpdatedTransfer::class, $channelName);
91
        $messageBrokerFacade->sendMessage(
92
            $this->tester->generateAssetUpdatedTransfer([
93
                AssetUpdatedTransfer::ASSET_SLOT => $slotName,
94
                AssetUpdatedTransfer::ASSET_IDENTIFIER => $assetUuid,
95
            ]),
96
        );
97
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
98
99
        // Assert
100
        $asset = $this->tester->findAssetByUuid($assetUuid);
101
        $this->tester->assertNotNull($asset);
102
        $this->tester->assertSame($slotName, $asset->getAssetSlot());
103
    }
104
105
    /**
106
     * @return void
107
     */
108
    public function testAssetDeletedMessageIsSuccessfullyHandled(): void
109
    {
110
        // Arrange
111
        $channelName = 'asset-commands';
112
        $assetUuid = Uuid::uuid4()->toString();
113
114
        $this->tester->setupMessageBroker(AssetAddedTransfer::class, $channelName);
115
        $this->tester->setupMessageBrokerPlugins();
116
        $messageBrokerFacade = $this->tester->getLocator()->messageBroker()->facade();
117
        $messageBrokerWorkerConfigTransfer = $this->tester->buildMessageBrokerWorkerConfigTransfer([$channelName], 1);
118
        $messageBrokerFacade->sendMessage(
119
            $this->tester->generateAssetAddedTransfer([
120
                AssetAddedTransfer::ASSET_IDENTIFIER => $assetUuid,
121
            ]),
122
        );
123
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
124
        $this->tester->resetInMemoryMessages();
125
126
        // Act
127
        $this->tester->setupMessageBroker(AssetDeletedTransfer::class, $channelName);
128
        $messageBrokerFacade->sendMessage(
129
            $this->tester->generateAssetDeletedTransfer([
130
                AssetDeletedTransfer::ASSET_IDENTIFIER => $assetUuid,
131
            ]),
132
        );
133
        $messageBrokerFacade->startWorker($messageBrokerWorkerConfigTransfer);
134
135
        // Assert
136
        $this->tester->assertFalse($this->tester->findAssetByUuid($assetUuid)->getIsActive());
137
    }
138
}
139