Issues (3877)

CategoriesRestApiResourceTest.php (1 issue)

1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerTest\Glue\CategoriesRestApi;
9
10
use Codeception\Test\Unit;
11
use Generated\Shared\Transfer\CategoryNodeStorageTransfer;
12
use Generated\Shared\Transfer\StoreTransfer;
13
use Spryker\Glue\CategoriesRestApi\CategoriesRestApiDependencyProvider;
14
use Spryker\Glue\CategoriesRestApi\CategoriesRestApiResourceInterface;
15
use Spryker\Glue\CategoriesRestApi\Dependency\Client\CategoriesRestApiToCategoryStorageClientInterface;
16
use Spryker\Glue\CategoriesRestApi\Dependency\Client\CategoriesRestApiToStoreClientInterface;
17
use Spryker\Glue\GlueApplication\Rest\JsonApi\RestResourceBuilder;
18
use Spryker\Glue\GlueApplication\Rest\JsonApi\RestResourceInterface;
19
20
/**
21
 * Auto-generated group annotations
22
 *
23
 * @group SprykerTest
24
 * @group Glue
25
 * @group CategoriesRestApi
26
 * @group CategoriesRestApiResourceTest
27
 * Add your own group annotations below this line
28
 */
29
class CategoriesRestApiResourceTest extends Unit
30
{
31
    /**
32
     * @uses \Spryker\Glue\GlueApplication\Plugin\Application\GlueApplicationApplicationPlugin::SERVICE_RESOURCE_BUILDER
33
     *
34
     * @var string
35
     */
36
    protected const SERVICE_RESOURCE_BUILDER = 'resource_builder';
37
38
    /**
39
     * @uses \Spryker\Glue\CategoriesRestApi\CategoriesRestApiConfig::RESOURCE_CATEGORY_NODES
40
     *
41
     * @var string
42
     */
43
    protected const RESOURCE_CATEGORY_NODES = 'category-nodes';
44
45
    /**
46
     * @var string
47
     */
48
    protected const STORE_NAME = 'DE';
49
50
    /**
51
     * @var \SprykerTest\Glue\CategoriesRestApi\CategoriesRestApiTester
52
     */
53
    protected CategoriesRestApiTester $tester;
54
55
    /**
56
     * @var \Spryker\Glue\CategoriesRestApi\CategoriesRestApiResourceInterface
57
     */
58
    protected CategoriesRestApiResourceInterface $categoriesRestApiResource;
59
60
    /**
61
     * @return void
62
     */
63
    protected function _before(): void
64
    {
65
        parent::_before();
66
67
        $this->tester->getContainer()->set(
68
            static::SERVICE_RESOURCE_BUILDER,
69
            new RestResourceBuilder(),
0 ignored issues
show
Deprecated Code introduced by
The class Spryker\Glue\GlueApplica...Api\RestResourceBuilder has been deprecated: Will be removed without replacement. ( Ignorable by Annotation )

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

69
            /** @scrutinizer ignore-deprecated */ new RestResourceBuilder(),
Loading history...
70
        );
71
    }
72
73
    /**
74
     * @return void
75
     */
76
    protected function setUp(): void
77
    {
78
        parent::setUp();
79
80
        $this->categoriesRestApiResource = $this->tester->getLocator()->categoriesRestApi()->resource();
81
        $this->tester->setDependency(CategoriesRestApiDependencyProvider::CLIENT_STORE, $this->getStoreClientMock());
82
    }
83
84
    /**
85
     * @return void
86
     */
87
    public function testFindCategoryNodeByIdShouldReturnRestResourceOfTypeCategoryNodes(): void
88
    {
89
        // Arrange
90
        $categoryNodeStorageTransfer = (new CategoryNodeStorageTransfer())->setNodeId(1)->setIdCategory(1);
91
        $categoryStorageClientMock = $this->getCategoryStorageClientMock();
92
        $categoryStorageClientMock->method('getCategoryNodeById')->willReturn($categoryNodeStorageTransfer);
93
94
        // Act
95
        $restResource = $this->categoriesRestApiResource->findCategoryNodeById(1, static::STORE_NAME);
96
97
        // Assert
98
        $this->assertInstanceOf(RestResourceInterface::class, $restResource);
99
        $this->assertSame('1', $restResource->getId());
100
        $this->assertSame(static::RESOURCE_CATEGORY_NODES, $restResource->getType());
101
    }
102
103
    /**
104
     * @return void
105
     */
106
    public function testFindCategoryNodeByIdShouldReturnEmptyRestResource(): void
107
    {
108
        // Arrange
109
        $categoryStorageClientMock = $this->getCategoryStorageClientMock();
110
        $categoryStorageClientMock->method('getCategoryNodeById')->willReturn(new CategoryNodeStorageTransfer());
111
112
        // Act
113
        $restResource = $this->categoriesRestApiResource->findCategoryNodeById(2, static::STORE_NAME);
114
115
        // Assert
116
        $this->assertNull($restResource);
117
    }
118
119
    /**
120
     * @return void
121
     */
122
    public function testFindCategoryNodeByIdsShouldReturnTwoFoundCategoryNodesIndexedByNodeId(): void
123
    {
124
        // Arrange
125
        $categoryStorageClientMock = $this->getCategoryStorageClientMock();
126
        $categoryStorageClientMock->method('getCategoryNodeByIds')->willReturn([
127
            (new CategoryNodeStorageTransfer())->setIdCategory(1)->setNodeId(1),
128
            (new CategoryNodeStorageTransfer())->setIdCategory(2)->setNodeId(3),
129
        ]);
130
131
        // Act
132
        $restResource = $this->categoriesRestApiResource->findCategoryNodeByIds([1, 3], static::STORE_NAME);
133
134
        // Assert
135
        $this->assertCount(2, $restResource);
136
        $this->assertArrayHasKey(1, $restResource);
137
        $this->assertArrayHasKey(3, $restResource);
138
    }
139
140
    /**
141
     * @return void
142
     */
143
    public function testFindCategoryNodeByIdsShouldReturnEmptyRestResource(): void
144
    {
145
        // Arrange
146
        $categoryStorageClientMock = $this->getCategoryStorageClientMock();
147
        $categoryStorageClientMock->method('getCategoryNodeByIds')->willReturn([]);
148
149
        // Act
150
        $restResource = $this->categoriesRestApiResource->findCategoryNodeByIds([1, 3], static::STORE_NAME);
151
152
        // Assert
153
        $this->assertCount(0, $restResource);
154
    }
155
156
    /**
157
     * @return \Spryker\Glue\CategoriesRestApi\Dependency\Client\CategoriesRestApiToStoreClientInterface
158
     */
159
    protected function getStoreClientMock(): CategoriesRestApiToStoreClientInterface
160
    {
161
        $storeTransfer = (new StoreTransfer())->setName(static::STORE_NAME);
162
        $storeClientMock = $this->getMockBuilder(CategoriesRestApiToStoreClientInterface::class)->getMock();
163
        $storeClientMock->method('getCurrentStore')->willReturn($storeTransfer);
164
165
        return $storeClientMock;
166
    }
167
168
    /**
169
     * @return \Spryker\Glue\CategoriesRestApi\Dependency\Client\CategoriesRestApiToCategoryStorageClientInterface
170
     */
171
    protected function getCategoryStorageClientMock(): CategoriesRestApiToCategoryStorageClientInterface
172
    {
173
        $categoryStorageClientMock = $this->getMockBuilder(CategoriesRestApiToCategoryStorageClientInterface::class)->getMock();
174
        $this->tester->setDependency(CategoriesRestApiDependencyProvider::CLIENT_CATEGORY_STORAGE, $categoryStorageClientMock);
175
176
        return $categoryStorageClientMock;
177
    }
178
}
179