Passed
Pull Request — master (#809)
by Denys
06:35
created

SspAssetsRestApiFixtures   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 149
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 1
Metric Value
wmc 12
eloc 73
c 1
b 1
f 1
dl 0
loc 149
rs 10

11 Methods

Rating   Name   Duplication   Size   Complexity  
A buildFixtures() 0 9 1
A getAssetTransfer() 0 3 1
A createCompanyBusinessUnit() 0 9 1
A getCustomerTransfer() 0 3 1
A createCompany() 0 10 1
A createAssets() 0 19 1
A getCompanyUserTransfer() 0 3 1
A createCompanyUser() 0 25 2
A createCustomer() 0 9 1
A getCompanyTransfer() 0 3 1
A getSecondAssetTransfer() 0 3 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\Glue\SelfServicePortal\RestApi\Fixtures;
11
12
use Generated\Shared\DataBuilder\CompanyRoleCollectionBuilder;
13
use Generated\Shared\DataBuilder\PermissionCollectionBuilder;
14
use Generated\Shared\Transfer\CompanyBusinessUnitTransfer;
15
use Generated\Shared\Transfer\CompanyRoleTransfer;
16
use Generated\Shared\Transfer\CompanyTransfer;
17
use Generated\Shared\Transfer\CompanyUnitAddressCollectionTransfer;
18
use Generated\Shared\Transfer\CompanyUnitAddressTransfer;
19
use Generated\Shared\Transfer\CompanyUserTransfer;
20
use Generated\Shared\Transfer\CustomerTransfer;
21
use Generated\Shared\Transfer\PermissionCollectionTransfer;
22
use Generated\Shared\Transfer\SspAssetBusinessUnitAssignmentTransfer;
23
use Generated\Shared\Transfer\SspAssetTransfer;
24
use PyzTest\Glue\SelfServicePortal\SelfServicePortalApiTester;
25
use SprykerFeature\Shared\SelfServicePortal\Plugin\Permission\CreateSspAssetPermissionPlugin;
26
use SprykerFeature\Shared\SelfServicePortal\Plugin\Permission\ViewBusinessUnitSspAssetPermissionPlugin;
27
use SprykerFeature\Shared\SelfServicePortal\Plugin\Permission\ViewCompanySspAssetPermissionPlugin;
28
use SprykerTest\Shared\Testify\Fixtures\FixturesBuilderInterface;
29
use SprykerTest\Shared\Testify\Fixtures\FixturesContainerInterface;
30
31
class SspAssetsRestApiFixtures implements FixturesBuilderInterface, FixturesContainerInterface
32
{
33
    protected const TEST_USERNAME = 'SspAssetsRestApiFixtures';
34
35
    protected const TEST_PASSWORD = 'change123';
36
37
    protected const TEST_COMPANY_NAME = 'Test Company';
38
39
    protected const TEST_ASSET_URL = 'https://example.com/asset.pdf';
40
41
    public const PERMISSION_PLUGINS = [
42
        ViewBusinessUnitSspAssetPermissionPlugin::class,
43
        ViewCompanySspAssetPermissionPlugin::class,
44
        CreateSspAssetPermissionPlugin::class,
45
    ];
46
47
    protected CustomerTransfer $customerTransfer;
48
49
    protected CompanyTransfer $companyTransfer;
50
51
    protected CompanyUserTransfer $companyUserTransfer;
52
53
    protected SspAssetTransfer $assetTransfer;
54
55
    protected SspAssetTransfer $secondAssetTransfer;
56
57
    protected CompanyBusinessUnitTransfer $companyBusinessUnitTransfer;
58
59
    protected CompanyUnitAddressTransfer $companyUnitAddressTransfer;
60
61
    protected PermissionCollectionTransfer $permissionCollectionTransfer;
62
63
    public function buildFixtures(SelfServicePortalApiTester $I): FixturesContainerInterface
64
    {
65
        $this->createCompany($I);
66
        $this->createCustomer($I);
67
        $this->createCompanyBusinessUnit($I);
68
        $this->createCompanyUser($I);
69
        $this->createAssets($I);
70
71
        return $this;
72
    }
73
74
    public function getCustomerTransfer(): CustomerTransfer
75
    {
76
        return $this->customerTransfer;
77
    }
78
79
    public function getCompanyTransfer(): CompanyTransfer
80
    {
81
        return $this->companyTransfer;
82
    }
83
84
    public function getCompanyUserTransfer(): CompanyUserTransfer
85
    {
86
        return $this->companyUserTransfer;
87
    }
88
89
    public function getAssetTransfer(): SspAssetTransfer
90
    {
91
        return $this->assetTransfer;
92
    }
93
94
    public function getSecondAssetTransfer(): SspAssetTransfer
95
    {
96
        return $this->secondAssetTransfer;
97
    }
98
99
    protected function createCompany(SelfServicePortalApiTester $I): void
100
    {
101
        $this->companyTransfer = $I->haveCompany([
102
            CompanyTransfer::NAME => static::TEST_COMPANY_NAME,
103
            CompanyTransfer::STATUS => 'approved',
104
            CompanyTransfer::IS_ACTIVE => true,
105
        ]);
106
107
        $this->companyUnitAddressTransfer = $I->haveCompanyUnitAddress([
108
            CompanyUnitAddressTransfer::FK_COMPANY => $this->companyTransfer->getIdCompany(),
109
        ]);
110
    }
111
112
    protected function createCustomer(SelfServicePortalApiTester $I): void
113
    {
114
        $customerTransfer = $I->haveCustomer([
115
            CustomerTransfer::USERNAME => static::TEST_USERNAME,
116
            CustomerTransfer::PASSWORD => static::TEST_PASSWORD,
117
            CustomerTransfer::NEW_PASSWORD => static::TEST_PASSWORD,
118
        ]);
119
120
        $this->customerTransfer = $I->confirmCustomer($customerTransfer);
121
    }
122
123
    protected function createCompanyUser(SelfServicePortalApiTester $I): void
124
    {
125
        $this->companyUserTransfer = $I->haveCompanyUser([
126
            CompanyUserTransfer::CUSTOMER => $this->customerTransfer,
127
            CompanyUserTransfer::FK_COMPANY => $this->companyTransfer->getIdCompany(),
128
            CompanyUserTransfer::FK_COMPANY_BUSINESS_UNIT => $this->companyBusinessUnitTransfer->getIdCompanyBusinessUnit(),
129
        ]);
130
131
        $this->permissionCollectionTransfer = (new PermissionCollectionBuilder())->build();
132
        foreach (static::PERMISSION_PLUGINS as $permissionPlugin) {
133
            $permissionTransfer = $I->havePermission(new $permissionPlugin());
134
            $this->permissionCollectionTransfer->addPermission($permissionTransfer);
135
        }
136
137
        $companyRoleTransfer = $I->haveCompanyRole([
138
            CompanyRoleTransfer::FK_COMPANY => $this->companyTransfer->getIdCompany(),
139
            CompanyRoleTransfer::PERMISSION_COLLECTION => $this->permissionCollectionTransfer,
140
        ]);
141
142
        $companyRoleCollectionTransfer = (new CompanyRoleCollectionBuilder())->build()
143
            ->addRole($companyRoleTransfer);
144
145
        $this->companyUserTransfer->setCompanyRoleCollection($companyRoleCollectionTransfer);
146
147
        $I->assignCompanyRolesToCompanyUser($this->companyUserTransfer);
148
    }
149
150
    protected function createCompanyBusinessUnit(SelfServicePortalApiTester $I): void
151
    {
152
        $this->companyBusinessUnitTransfer = $I->haveCompanyBusinessUnit([
153
            CompanyBusinessUnitTransfer::FK_COMPANY => $this->companyTransfer->getIdCompany(),
154
            CompanyBusinessUnitTransfer::ADDRESS_COLLECTION => (new CompanyUnitAddressCollectionTransfer())
155
                ->addCompanyUnitAddress($this->companyUnitAddressTransfer),
156
        ]);
157
158
        $I->haveCompanyUnitAddressToCompanyBusinessUnitRelation($this->companyBusinessUnitTransfer);
159
    }
160
161
    protected function createAssets(SelfServicePortalApiTester $I): void
162
    {
163
        $this->assetTransfer = $I->haveAsset([
164
            SspAssetTransfer::REFERENCE => 'ASSET-00100001123',
165
            SspAssetTransfer::EXTERNAL_IMAGE_URL => static::TEST_ASSET_URL,
166
            SspAssetTransfer::COMPANY_BUSINESS_UNIT => $this->companyBusinessUnitTransfer,
167
            SspAssetTransfer::SERIAL_NUMBER => 'qweqwe12432rwef34f343f34',
168
            SspAssetTransfer::NOTE => 'This is a test asset. Note field.',
169
            SspAssetTransfer::BUSINESS_UNIT_ASSIGNMENTS => [
170
                [SspAssetBusinessUnitAssignmentTransfer::COMPANY_BUSINESS_UNIT => $this->companyBusinessUnitTransfer],
171
            ],
172
        ]);
173
174
        $this->secondAssetTransfer = $I->haveAsset([
175
            SspAssetTransfer::REFERENCE => 'ASSET-00123123123123123',
176
            SspAssetTransfer::EXTERNAL_IMAGE_URL => 'https://example.com/asset2.pdf',
177
            SspAssetTransfer::COMPANY_BUSINESS_UNIT => $this->companyBusinessUnitTransfer,
178
            SspAssetTransfer::SERIAL_NUMBER => 'qweqwe12432rwef34f343f34',
179
            SspAssetTransfer::NOTE => 'This is a test asset. Note field.',
180
        ]);
181
    }
182
}
183