Issues (3641)

...yUserInvitationFacadeWithUserPermissionTest.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\Zed\CompanyUserInvitation\Business;
9
10
use Codeception\Test\Unit;
11
use Generated\Shared\DataBuilder\CompanyRoleCollectionBuilder;
12
use Generated\Shared\DataBuilder\PermissionCollectionBuilder;
13
use Generated\Shared\Transfer\CompanyBusinessUnitTransfer;
14
use Generated\Shared\Transfer\CompanyRoleTransfer;
15
use Generated\Shared\Transfer\CompanyUserInvitationCollectionTransfer;
16
use Generated\Shared\Transfer\CompanyUserInvitationCreateRequestTransfer;
17
use Generated\Shared\Transfer\CompanyUserInvitationCriteriaFilterTransfer;
18
use Generated\Shared\Transfer\CompanyUserInvitationDeleteRequestTransfer;
19
use Generated\Shared\Transfer\CompanyUserInvitationGetCollectionRequestTransfer;
20
use Generated\Shared\Transfer\CompanyUserInvitationImportRequestTransfer;
21
use Generated\Shared\Transfer\CompanyUserInvitationSendRequestTransfer;
22
use Generated\Shared\Transfer\CompanyUserInvitationTransfer;
23
use Generated\Shared\Transfer\CompanyUserInvitationUpdateStatusRequestTransfer;
24
use Generated\Shared\Transfer\CompanyUserTransfer;
25
use Spryker\Shared\CompanyUserInvitation\CompanyUserInvitationConfig;
26
use Spryker\Zed\CompanyRole\Communication\Plugin\PermissionStoragePlugin;
27
use Spryker\Zed\CompanyUserInvitation\Communication\Plugin\Permission\ManageCompanyUserInvitationPermissionPlugin;
28
use Spryker\Zed\Permission\PermissionDependencyProvider;
29
30
/**
31
 * Auto-generated group annotations
32
 *
33
 * @group SprykerTest
34
 * @group Zed
35
 * @group CompanyUserInvitation
36
 * @group Business
37
 * @group Facade
38
 * @group CompanyUserInvitationFacadeWithUserPermissionTest
39
 * Add your own group annotations below this line
40
 */
41
class CompanyUserInvitationFacadeWithUserPermissionTest extends Unit
42
{
43
    /**
44
     * @var array
45
     */
46
    public const PERMISSION_PLUGINS = [
47
        ManageCompanyUserInvitationPermissionPlugin::class,
48
    ];
49
50
    /**
51
     * @var \SprykerTest\Zed\CompanyUserInvitation\CompanyUserInvitationBusinessTester
52
     */
53
    protected $tester;
54
55
    /**
56
     * @var \Generated\Shared\Transfer\CustomerTransfer
57
     */
58
    protected $customerTransfer;
59
60
    /**
61
     * @var \Generated\Shared\Transfer\CompanyTransfer
62
     */
63
    protected $companyTransfer;
64
65
    /**
66
     * @var \Generated\Shared\Transfer\CompanyBusinessUnitTransfer
67
     */
68
    protected $companyBusinessUnitTransfer;
69
70
    /**
71
     * @var \Generated\Shared\Transfer\CompanyUserTransfer
72
     */
73
    protected $companyUserTransfer;
74
75
    /**
76
     * @var \Generated\Shared\Transfer\PermissionCollectionTransfer
77
     */
78
    protected $permissionCollectionTransfer;
79
80
    /**
81
     * @return void
82
     */
83
    public function setUp(): void
84
    {
85
        parent::setUp();
86
87
        $this->getFacade()->install();
0 ignored issues
show
The method install() does not exist on Spryker\Zed\Kernel\Business\AbstractFacade. It seems like you code against a sub-type of Spryker\Zed\Kernel\Business\AbstractFacade such as Spryker\Zed\Country\Business\CountryFacade or Spryker\Zed\CompanyUserI...anyUserInvitationFacade or Spryker\Zed\SearchElasti...archElasticsearchFacade or Spryker\Zed\Search\Business\SearchFacade or Spryker\Zed\Locale\Business\LocaleFacade or Spryker\Zed\CustomerAcce...ss\CustomerAccessFacade or Spryker\Zed\User\Business\UserFacade or Spryker\Zed\Acl\Business\AclFacade or Spryker\Zed\Glossary\Business\GlossaryFacade or Spryker\Zed\Newsletter\Business\NewsletterFacade or Spryker\Zed\DynamicEntit...ess\DynamicEntityFacade or Spryker\Zed\PriceProduct...ness\PriceProductFacade. ( Ignorable by Annotation )

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

87
        $this->getFacade()->/** @scrutinizer ignore-call */ install();
Loading history...
88
89
        $this->tester->addDependency(PermissionDependencyProvider::PLUGINS_PERMISSION_STORAGE, [
90
            new PermissionStoragePlugin(),
91
        ]);
92
93
        $this->customerTransfer = $this->tester->haveCustomer();
94
        $this->companyTransfer = $this->tester->haveCompany();
95
        $this->companyBusinessUnitTransfer = $this->tester->haveCompanyBusinessUnit([
96
            CompanyBusinessUnitTransfer::FK_COMPANY => $this->companyTransfer->getIdCompany(),
97
        ]);
98
99
        $this->companyUserTransfer = $this->tester->haveCompanyUser([
100
            CompanyUserTransfer::FK_COMPANY_BUSINESS_UNIT => $this->companyBusinessUnitTransfer->getIdCompanyBusinessUnit(),
101
            CompanyUserTransfer::FK_COMPANY => $this->companyTransfer->getIdCompany(),
102
            CompanyUserTransfer::CUSTOMER => $this->customerTransfer,
103
        ]);
104
105
        $this->permissionCollectionTransfer = (new PermissionCollectionBuilder())->build();
106
        foreach (static::PERMISSION_PLUGINS as $permissionPlugin) {
107
            $permissionTransfer = $this->tester->havePermission(new $permissionPlugin());
108
            $this->permissionCollectionTransfer->addPermission($permissionTransfer);
109
        }
110
111
        $companyRoleTransfer = $this->tester->haveCompanyRole([
112
            CompanyRoleTransfer::FK_COMPANY => $this->companyTransfer->getIdCompany(),
113
            CompanyRoleTransfer::PERMISSION_COLLECTION => $this->permissionCollectionTransfer,
114
        ]);
115
        $companyRoleCollectionTransfer = (new CompanyRoleCollectionBuilder())->build()
116
            ->addRole($companyRoleTransfer);
117
118
        $this->companyUserTransfer->setCompanyRoleCollection($companyRoleCollectionTransfer);
119
120
        $this->tester->assignCompanyRolesToCompanyUser($this->companyUserTransfer);
121
    }
122
123
    /**
124
     * @return void
125
     */
126
    public function testImportCompanyUserInvitationsShouldReturnNoErrorsWhenEmailsDoNotExist(): void
127
    {
128
        $companyUserInvitationCollection = (new CompanyUserInvitationCollectionTransfer())
129
            ->addCompanyUserInvitation($this->createCompanyUserInvitationTransfer())
130
            ->addCompanyUserInvitation($this->createCompanyUserInvitationTransfer());
131
        $companyUserInvitationImportRequestTransfer = (new CompanyUserInvitationImportRequestTransfer())
132
            ->setCompanyUserInvitationCollection($companyUserInvitationCollection)
133
            ->setIdCompanyUser($this->companyUserTransfer->getIdCompanyUser());
134
135
        $companyUserInvitationImportResponseTransfer = $this->getFacade()
136
            ->importCompanyUserInvitations($companyUserInvitationImportRequestTransfer);
137
138
        $this->assertTrue($companyUserInvitationImportResponseTransfer->getIsSuccess());
139
        $this->assertEmpty($companyUserInvitationImportResponseTransfer->getErrors());
140
    }
141
142
    /**
143
     * @return void
144
     */
145
    public function testImportCompanyUserInvitationsShouldReturnErrorsWhenEmailsExist(): void
146
    {
147
        $companyUserInvitationTransfer = $this->createCompanyUserInvitationTransfer();
148
        $this->haveCompanyUserInvitation(['email' => $companyUserInvitationTransfer->getEmail()]);
149
        $companyUserInvitationCollection = (new CompanyUserInvitationCollectionTransfer())
150
            ->addCompanyUserInvitation($companyUserInvitationTransfer);
151
        $companyUserInvitationImportRequestTransfer = (new CompanyUserInvitationImportRequestTransfer())
152
            ->setCompanyUserInvitationCollection($companyUserInvitationCollection)
153
            ->setIdCompanyUser($this->companyUserTransfer->getIdCompanyUser());
154
155
        $companyUserInvitationImportResponseTransfer = $this->getFacade()
156
            ->importCompanyUserInvitations($companyUserInvitationImportRequestTransfer);
157
158
        $this->assertTrue($companyUserInvitationImportResponseTransfer->getIsSuccess());
159
        $this->assertNotEmpty($companyUserInvitationImportResponseTransfer->getErrors());
160
    }
161
162
    /**
163
     * @return void
164
     */
165
    public function testGetCompanyUserInvitationCollectionShouldReturnCorrectData(): void
166
    {
167
        $this->haveCompanyUserInvitation();
168
        $this->haveCompanyUserInvitation();
169
        $criteriaFilterTransfer = (new CompanyUserInvitationCriteriaFilterTransfer())
170
            ->setFkCompanyUser($this->companyUserTransfer->getFkCompany())
171
            ->setFkCompanyUser($this->companyUserTransfer->getIdCompanyUser())
172
            ->setCompanyUserInvitationStatusKeyIn([CompanyUserInvitationConfig::INVITATION_STATUS_NEW]);
173
        $companyUserInvitationGetCollectionRequestTransfer = (new CompanyUserInvitationGetCollectionRequestTransfer())
174
            ->setIdCompanyUser($this->companyUserTransfer->getIdCompanyUser())
175
            ->setCriteriaFilter($criteriaFilterTransfer);
176
177
        $companyUserInvitationCollectionTransfer = $this->getFacade()
178
            ->getCompanyUserInvitationCollection($companyUserInvitationGetCollectionRequestTransfer);
179
180
        $this->assertNotEmpty($companyUserInvitationCollectionTransfer->getCompanyUserInvitations()->count());
181
    }
182
183
    /**
184
     * @return void
185
     */
186
    public function testSendCompanyUserInvitationShouldReturnSuccess(): void
187
    {
188
        $companyUserInvitationSendRequestTransfer = (new CompanyUserInvitationSendRequestTransfer())
189
            ->setIdCompanyUser($this->companyUserTransfer->getIdCompanyUser())
190
            ->setCompanyUserInvitation($this->haveCompanyUserInvitation());
191
192
        $companyUserInvitationSendResponseTransfer = $this->getFacade()
193
            ->sendCompanyUserInvitation($companyUserInvitationSendRequestTransfer);
194
195
        $this->assertTrue($companyUserInvitationSendResponseTransfer->getIsSuccess());
196
    }
197
198
    /**
199
     * @return void
200
     */
201
    public function testSendCompanyUserInvitationsShouldReturnSuccess(): void
202
    {
203
        $this->haveCompanyUserInvitation();
204
        $this->haveCompanyUserInvitation();
205
206
        $companyUserInvitationSendBatchResponseTransfer = $this->getFacade()
207
            ->sendCompanyUserInvitations($this->companyUserTransfer);
208
209
        $this->assertTrue($companyUserInvitationSendBatchResponseTransfer->getIsSuccess());
210
        $this->assertEmpty(0, $companyUserInvitationSendBatchResponseTransfer->getInvitationsFailed());
211
    }
212
213
    /**
214
     * @return void
215
     */
216
    public function testUpdateCompanyUserInvitationStatusShouldReturnSuccess(): void
217
    {
218
        $companyUserInvitationTransfer = $this->haveCompanyUserInvitation();
219
        $companyUserInvitationUpdateStatusRequestTransfer = (new CompanyUserInvitationUpdateStatusRequestTransfer())
220
            ->setIdCompanyUser($this->companyUserTransfer->getIdCompanyUser())
221
            ->setStatusKey(CompanyUserInvitationConfig::INVITATION_STATUS_ACCEPTED)
222
            ->setCompanyUserInvitation($companyUserInvitationTransfer);
223
224
        $companyUserInvitationUpdateStatusResponseTransfer = $this->getFacade()
225
            ->updateCompanyUserInvitationStatus($companyUserInvitationUpdateStatusRequestTransfer);
226
227
        $this->assertTrue($companyUserInvitationUpdateStatusResponseTransfer->getIsSuccess());
228
    }
229
230
    /**
231
     * @return void
232
     */
233
    public function testCreateCompanyUserInvitationShouldReturnSuccess(): void
234
    {
235
        $companyUserInvitationCreateRequestTransfer = (new CompanyUserInvitationCreateRequestTransfer())
236
            ->setIdCompanyUser($this->companyUserTransfer->getIdCompanyUser())
237
            ->setCompanyUserInvitation($this->createCompanyUserInvitationTransfer());
238
239
        $companyUserInvitationCreateResponseTransfer = $this->getFacade()
240
            ->createCompanyUserInvitation($companyUserInvitationCreateRequestTransfer);
241
242
        $this->assertTrue($companyUserInvitationCreateResponseTransfer->getIsSuccess());
243
    }
244
245
    /**
246
     * @return void
247
     */
248
    public function testDeleteCompanyUserInvitationShouldReturnSuccess(): void
249
    {
250
        $companyUserInvitationDeleteRequestTransfer = (new CompanyUserInvitationDeleteRequestTransfer())
251
            ->setIdCompanyUser($this->companyUserTransfer->getIdCompanyUser())
252
            ->setCompanyUserInvitation($this->haveCompanyUserInvitation());
253
254
        $companyUserInvitationDeleteResponseTransfer = $this->getFacade()
255
            ->deleteCompanyUserInvitation($companyUserInvitationDeleteRequestTransfer);
256
257
        $this->assertTrue($companyUserInvitationDeleteResponseTransfer->getIsSuccess());
258
    }
259
260
    /**
261
     * @param array $seedData
262
     *
263
     * @return \Generated\Shared\Transfer\CompanyUserInvitationTransfer
264
     */
265
    protected function createCompanyUserInvitationTransfer(array $seedData = []): CompanyUserInvitationTransfer
266
    {
267
        $seedData = $seedData + [
268
            CompanyUserInvitationTransfer::FK_COMPANY_USER => $this->companyUserTransfer->getIdCompanyUser(),
269
            CompanyUserInvitationTransfer::COMPANY_BUSINESS_UNIT_NAME => $this->companyBusinessUnitTransfer->getName(),
270
        ];
271
272
        return $this->tester->createCompanyUserInvitationTransfer($seedData);
273
    }
274
275
    /**
276
     * @param array $seedData
277
     *
278
     * @return \Generated\Shared\Transfer\CompanyUserInvitationTransfer
279
     */
280
    protected function haveCompanyUserInvitation(array $seedData = []): CompanyUserInvitationTransfer
281
    {
282
        $seedData = $seedData + [
283
            CompanyUserInvitationTransfer::FK_COMPANY_USER => $this->companyUserTransfer->getIdCompanyUser(),
284
            CompanyUserInvitationTransfer::COMPANY_BUSINESS_UNIT_NAME => $this->companyBusinessUnitTransfer->getName(),
285
        ];
286
287
        return $this->tester->haveCompanyUserInvitation($seedData);
288
    }
289
290
    /**
291
     * @return \Spryker\Zed\CompanyUserInvitation\Business\CompanyUserInvitationFacadeInterface|\Spryker\Zed\Kernel\Business\AbstractFacade
292
     */
293
    protected function getFacade()
294
    {
295
        return $this->tester->getFacade();
296
    }
297
}
298