Issues (3641)

MerchantUser/Business/MerchantUserFacadeTest.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 Spryker Marketplace License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerTest\Zed\MerchantUser\Business;
9
10
use Codeception\Test\Unit;
11
use Generated\Shared\DataBuilder\UserBuilder;
12
use Generated\Shared\Transfer\MerchantTransfer;
13
use Generated\Shared\Transfer\MerchantUserCriteriaTransfer;
14
use Generated\Shared\Transfer\MerchantUserTransfer;
15
use Generated\Shared\Transfer\UserCollectionTransfer;
16
use Generated\Shared\Transfer\UserCriteriaTransfer;
17
use Generated\Shared\Transfer\UserPasswordResetRequestTransfer;
18
use Generated\Shared\Transfer\UserTransfer;
19
use Orm\Zed\MerchantUser\Persistence\SpyMerchantUser;
20
use Spryker\Zed\MerchantUser\Dependency\Facade\MerchantUserToUserFacadeInterface;
21
use Spryker\Zed\MerchantUser\Dependency\Facade\MerchantUserToUserPasswordResetFacadeInterface;
22
use Spryker\Zed\MerchantUser\MerchantUserDependencyProvider;
23
use Spryker\Zed\MerchantUserExtension\Dependency\Plugin\MerchantUserRoleFilterPreConditionPluginInterface;
24
25
/**
26
 * Auto-generated group annotations
27
 *
28
 * @group SprykerTest
29
 * @group Zed
30
 * @group MerchantUser
31
 * @group Business
32
 * @group Facade
33
 * @group MerchantUserFacadeTest
34
 *
35
 * Add your own group annotations below this line
36
 */
37
class MerchantUserFacadeTest extends Unit
38
{
39
    /**
40
     * @see \Orm\Zed\User\Persistence\Map\SpyUserTableMap::COL_STATUS_BLOCKED
41
     *
42
     * @var string
43
     */
44
    protected const USER_STATUS_BLOCKED = 'blocked';
45
46
    /**
47
     * @var string
48
     */
49
    protected const USER_AUTHENTICATION_TOKEN = 'token';
50
51
    /**
52
     * @var string
53
     */
54
    protected const USER_PASSWORD = 'password';
55
56
    /**
57
     * @var \Generated\Shared\Transfer\MerchantUserTransfer
58
     */
59
    protected $merchantUserTransfer;
60
61
    /**
62
     * @var \PHPUnit\Framework\MockObject\MockObject|\Spryker\Zed\User\Business\UserFacadeInterface
63
     */
64
    protected $userFacadeMock;
65
66
    /**
67
     * @var \PHPUnit\Framework\MockObject\MockObject|\Spryker\Zed\UserPasswordReset\Business\UserPasswordResetFacadeInterface
68
     */
69
    protected $userPasswordResetFacadeMock;
70
71
    /**
72
     * @var \SprykerTest\Zed\MerchantUser\MerchantUserBusinessTester
73
     */
74
    protected $tester;
75
76
    /**
77
     * @return void
78
     */
79
    public function setUp(): void
80
    {
81
        parent::setUp();
82
83
        $this->userPasswordResetFacadeMock = $this->getMockBuilder(MerchantUserToUserPasswordResetFacadeInterface::class)
84
            ->disableOriginalConstructor()
85
            ->onlyMethods(['requestPasswordReset', 'isValidPasswordResetToken', 'setNewPassword'])
86
            ->getMockForAbstractClass();
87
88
        $this->userFacadeMock = $this->getMockBuilder(MerchantUserToUserFacadeInterface::class)
89
            ->disableOriginalConstructor()
90
            ->onlyMethods([
91
                'updateUser',
92
                'createUser',
93
                'getCurrentUser',
94
                'setCurrentUser',
95
                'isValidPassword',
96
                'getUserCollection',
97
            ])
98
            ->getMockForAbstractClass();
99
    }
100
101
    /**
102
     * @return void
103
     */
104
    public function testCreateReturnsTrueIfUserDoesNotExist(): void
105
    {
106
        // Arrange
107
        $userTransfer = (new UserBuilder())->build();
108
        $merchantTransfer = $this->tester->haveMerchant();
109
        $merchantUserTransfer = new MerchantUserTransfer();
110
        $merchantUserTransfer->setIdMerchant($merchantTransfer->getIdMerchant())->setUser($userTransfer);
111
112
        // Act
113
        $merchantUserResponseTransfer = $this->tester->getFacade()->createMerchantUser($merchantUserTransfer);
114
        $merchantUserEntity = $this->tester->findMerchantUser(
115
            (new MerchantUserCriteriaTransfer())->setIdMerchantUser($merchantUserTransfer->getIdMerchantUser()),
116
        );
117
118
        // Assert
119
        $this->assertTrue($merchantUserResponseTransfer->getIsSuccessful());
120
        $this->assertInstanceOf(SpyMerchantUser::class, $merchantUserEntity);
121
    }
122
123
    /**
124
     * @return void
125
     */
126
    public function testCreateReturnsTrueIfUserExist(): void
127
    {
128
        // Arrange
129
        $userTransfer = (new UserBuilder())->build();
130
        $merchantTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
131
        $merchantUserTransfer = new MerchantUserTransfer();
132
133
        $merchantUserTransfer->setIdMerchant($merchantTransfer->getIdMerchant())
134
            ->setUser($userTransfer);
135
136
        // Act
137
        $merchantUserResponseTransfer = $this->tester->getFacade()->createMerchantUser($merchantUserTransfer);
138
        $merchantUserEntity = $this->tester->findMerchantUser(
139
            (new MerchantUserCriteriaTransfer())->setIdMerchantUser($merchantUserTransfer->getIdMerchantUser()),
140
        );
141
142
        // Assert
143
        $this->assertTrue($merchantUserResponseTransfer->getIsSuccessful());
144
        $this->assertInstanceOf(SpyMerchantUser::class, $merchantUserEntity);
145
    }
146
147
    /**
148
     * @return void
149
     */
150
    public function testCreateReturnsFalseIfUserAlreadyHasMerchant(): void
151
    {
152
        // Arrange
153
        $newUserTransfer = (new UserBuilder())->build();
154
        $userTransfer = $this->tester->haveUser([
155
            UserTransfer::USERNAME => $newUserTransfer->getUsername(),
156
        ]);
157
        $merchantUserTransfer = new MerchantUserTransfer();
158
159
        $merchantOneTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
160
        $merchantTwoTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
161
162
        $this->tester->haveMerchantUser($merchantOneTransfer, $userTransfer);
163
164
        $merchantUserTransfer->setIdMerchant($merchantTwoTransfer->getIdMerchant())
165
            ->setUser($newUserTransfer);
166
167
        // Act
168
        $merchantUserResponseTransfer = $this->tester->getFacade()->createMerchantUser($merchantUserTransfer);
169
170
        // Assert
171
        $this->assertFalse($merchantUserResponseTransfer->getIsSuccessful());
172
        $this->assertSame(
173
            'A user with the same email is already connected to another merchant.',
174
            $merchantUserResponseTransfer->getErrors()[0]->getMessage(),
175
        );
176
    }
177
178
    /**
179
     * @return void
180
     */
181
    public function testUpdate(): void
182
    {
183
        // Arrange
184
        $this->initializeFacadeMocks();
185
186
        $userTransfer = $this->tester->haveUser([
187
            UserTransfer::USERNAME => '[email protected]',
188
        ]);
189
190
        $merchantTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
191
        $merchantUserTransfer = $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
192
        $merchantUserTransfer->setUser($userTransfer);
193
194
        $this->userFacadeMock->expects($this->once())->method('getUserCollection')
195
            ->willReturn((new UserCollectionTransfer())->addUser($userTransfer));
196
197
        $this->userFacadeMock->expects($this->once())->method('updateUser')
198
            ->with($userTransfer)
199
            ->willReturn($userTransfer);
200
201
        // Act
202
        $merchantUserResponseTransfer = $this->tester->getFacade()->updateMerchantUser($merchantUserTransfer);
203
204
        // Assert
205
        $this->assertTrue($merchantUserResponseTransfer->getIsSuccessful());
206
    }
207
208
    /**
209
     * @return void
210
     */
211
    public function testUpdateWithNewActiveStatus(): void
212
    {
213
        // Arrange
214
        $newUserTransfer = (new UserBuilder())->build();
215
        $this->initializeFacadeMocks();
216
217
        $userTransfer = $this->tester->haveUser([
218
            UserTransfer::USERNAME => '[email protected]',
219
        ])->setStatus('blocked');
220
221
        $merchantTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
222
        $merchantUserTransfer = $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
223
        $merchantUserTransfer->setUser($userTransfer);
224
225
        $this->userFacadeMock->expects($this->once())->method('getUserCollection')
226
            ->willReturn((new UserCollectionTransfer())->addUser($userTransfer));
227
228
        $this->userFacadeMock->expects($this->once())->method('updateUser')
229
            ->with($userTransfer)
230
            ->willReturn($newUserTransfer->setStatus('active'));
231
232
        $this->userPasswordResetFacadeMock->expects($this->once())->method('requestPasswordReset');
233
234
        // Act
235
        $merchantUserResponseTransfer = $this->tester->getFacade()->updateMerchantUser($merchantUserTransfer);
236
237
        // Assert
238
        $this->assertTrue($merchantUserResponseTransfer->getIsSuccessful());
239
    }
240
241
    /**
242
     * @return void
243
     */
244
    public function testUpdateWithNewBlockedStatus(): void
245
    {
246
        // Arrange
247
        $newUserTransfer = (new UserBuilder())->build();
248
        $this->initializeFacadeMocks();
249
250
        $userTransfer = $this->tester->haveUser([
251
            UserTransfer::USERNAME => '[email protected]',
252
        ])->setStatus('blocked');
253
254
        $merchantTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
255
        $merchantUserTransfer = $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
256
        $merchantUserTransfer->setUser($userTransfer);
257
258
        $this->userFacadeMock->expects($this->once())->method('getUserCollection')
259
            ->willReturn((new UserCollectionTransfer())->addUser($userTransfer));
260
261
        $this->userFacadeMock->expects($this->once())->method('updateUser')
262
            ->with($userTransfer)
263
            ->willReturn($newUserTransfer->setStatus('active'));
264
265
        $this->userPasswordResetFacadeMock->expects($this->once())->method('requestPasswordReset');
266
267
        // Act
268
        $merchantUserResponseTransfer = $this->tester->getFacade()->updateMerchantUser($merchantUserTransfer);
269
270
        // Assert
271
        $this->assertTrue($merchantUserResponseTransfer->getIsSuccessful());
272
    }
273
274
    /**
275
     * @dataProvider getMerchantUserPositiveScenarioDataProvider
276
     *
277
     * @param array<string> $merchantUserCriteriaKeys
278
     * @param bool $isUserInCriteria
279
     *
280
     * @return void
281
     */
282
    public function testFindMerchantUserReturnsTransferWithCorrectCriteria(
283
        array $merchantUserCriteriaKeys,
284
        bool $isUserInCriteria
285
    ): void {
286
        // Arrange
287
        $userTransfer = $this->tester->haveUser([
288
            UserTransfer::USERNAME => '[email protected]',
289
        ]);
290
        $merchantTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
291
        $merchantUserTransfer = $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
292
293
        $merchantUserCriteriaData = [
294
            MerchantUserCriteriaTransfer::ID_MERCHANT_USER => $merchantUserTransfer->getIdMerchantUser(),
295
            MerchantUserCriteriaTransfer::ID_MERCHANT => $merchantTransfer->getIdMerchant(),
296
            MerchantUserCriteriaTransfer::ID_USER => $userTransfer->getIdUser(),
297
            MerchantUserCriteriaTransfer::WITH_USER => true,
298
        ];
299
        $merchantUserCriteriaData = array_intersect_key(
300
            $merchantUserCriteriaData,
301
            array_flip($merchantUserCriteriaKeys),
302
        );
303
304
        $merchantUserCriteriaTransfer = (new MerchantUserCriteriaTransfer())
305
            ->fromArray($merchantUserCriteriaData);
306
307
        // Act
308
        $foundMerchantUserTransfer = $this->tester
309
            ->getFacade()
310
            ->findMerchantUser($merchantUserCriteriaTransfer);
311
312
        // Assert
313
        $this->assertSame(
314
            $merchantUserTransfer->getIdMerchantUser(),
315
            $foundMerchantUserTransfer->getIdMerchantUser(),
316
        );
317
318
        if ($isUserInCriteria) {
319
            $this->assertInstanceOf(UserTransfer::class, $foundMerchantUserTransfer->getUser());
320
        }
321
    }
322
323
    /**
324
     * @dataProvider getMerchantUserNegativeScenarioDataProvider
325
     *
326
     * @param array $merchantUserCriteriaData
327
     *
328
     * @return void
329
     */
330
    public function testFindMerchantUserReturnsNullWithWrongCriteria(
331
        array $merchantUserCriteriaData
332
    ): void {
333
        // Arrange
334
        $userTransfer = $this->tester->haveUser([
335
            UserTransfer::USERNAME => '[email protected]',
336
        ]);
337
        $merchantTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
338
        $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
339
340
        $merchantUserCriteriaTransfer = (new MerchantUserCriteriaTransfer())
341
            ->fromArray($merchantUserCriteriaData);
342
343
        // Act
344
        $foundMerchantUserTransfer = $this->tester
345
            ->getFacade()
346
            ->findMerchantUser($merchantUserCriteriaTransfer);
347
348
        // Assert
349
        $this->assertNull($foundMerchantUserTransfer);
350
    }
351
352
    /**
353
     * @return void
354
     */
355
    public function testDisableMerchantUsersByMerchantId(): void
356
    {
357
        // Arrange
358
        $this->initializeFacadeMocks();
359
360
        $userOneTransfer = $this->tester->haveUser([
361
            UserTransfer::USERNAME => 'test_merchant_user@spryker_one.com',
362
        ]);
363
364
        $userTwoTransfer = $this->tester->haveUser([
365
            UserTransfer::USERNAME => 'test_merchant_user@spryker_two.com',
366
        ]);
367
368
        $merchantTransfer = $this->tester->haveMerchant([MerchantTransfer::EMAIL => '[email protected]']);
369
370
        $this->tester->haveMerchantUser($merchantTransfer, $userOneTransfer);
371
        $this->tester->haveMerchantUser($merchantTransfer, $userTwoTransfer);
372
373
        $this->userFacadeMock->expects($this->exactly(2))->method('deactivateUser');
374
375
        // Act
376
        $this->tester->getFacade()->disableMerchantUsers(
377
            (new MerchantUserCriteriaTransfer())->setIdMerchant($merchantTransfer->getIdMerchant()),
378
        );
379
    }
380
381
    /**
382
     * @return void
383
     */
384
    public function testGetCurrentMerchantUserReturnsCorrectMerchantUser(): void
385
    {
386
        // Arrange
387
        $this->initializeFacadeMocks();
388
389
        $merchantTransfer = $this->tester->haveMerchant();
390
        $userTransfer = $this->tester->haveUser();
391
        $merchantUserTransfer = $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
392
        $merchantUserTransfer->setUser($userTransfer);
393
        $this->userFacadeMock->method('getCurrentUser')->willReturn($userTransfer);
0 ignored issues
show
The method method() does not exist on Spryker\Zed\User\Business\UserFacadeInterface. ( Ignorable by Annotation )

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

393
        $this->userFacadeMock->/** @scrutinizer ignore-call */ 
394
                               method('getCurrentUser')->willReturn($userTransfer);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
394
395
        // Act
396
        $currentMerchantUserTransfer = $this->tester->getFacade()->getCurrentMerchantUser();
397
398
        // Assert
399
        $this->assertEquals($merchantUserTransfer, $currentMerchantUserTransfer);
400
    }
401
402
    /**
403
     * @return void
404
     */
405
    public function testAuthenticateMerchantUserMerchantUserCallUserFacade(): void
406
    {
407
        // Arrange
408
        $this->initializeFacadeMocks();
409
        $userTransfer = $this->tester->haveUser();
410
        $merchantUserTransfer = $this->tester->haveMerchantUser(
411
            $this->tester->haveMerchant(),
412
            $userTransfer,
413
        );
414
415
        // Assert
416
        $this->userFacadeMock->expects($this->once())->method('setCurrentUser');
417
        $this->userFacadeMock->expects($this->once())->method('updateUser');
418
419
        // Act
420
        $this->tester->getFacade()->authenticateMerchantUser($merchantUserTransfer->setUser($userTransfer));
421
    }
422
423
    /**
424
     * @return void
425
     */
426
    public function testFindUserForwardsToUserFacade(): void
427
    {
428
        // Arrange
429
        $this->initializeFacadeMocks();
430
        $userTransfer = $this->tester->haveUser();
431
        $this->userFacadeMock->method('getUserCollection')->willReturn((new UserCollectionTransfer()));
432
433
        // Assert
434
        $this->userFacadeMock->expects($this->once())->method('getUserCollection');
435
436
        // Act
437
        $this->tester->getFacade()->findUser((new UserCriteriaTransfer())->setIdUser($userTransfer->getIdUser()));
438
    }
439
440
    /**
441
     * @return void
442
     */
443
    public function testRequestPasswordResetForwardsToUserPasswordResetFacade(): void
444
    {
445
        // Arrange
446
        $this->initializeFacadeMocks();
447
        $userTransfer = $this->tester->haveUser();
448
449
        // Assert
450
        $this->userPasswordResetFacadeMock->expects($this->once())->method('requestPasswordReset');
451
452
        // Act
453
        $this->tester->getFacade()->requestPasswordReset(
454
            (new UserPasswordResetRequestTransfer())
455
                ->setEmail($userTransfer->getUsername()),
456
        );
457
    }
458
459
    /**
460
     * @return void
461
     */
462
    public function testIsValidPasswordResetTokenForwardsToUserPasswordResetFacade(): void
463
    {
464
        /// Arrange
465
        $this->initializeFacadeMocks();
466
467
        // Assert
468
        $this->userPasswordResetFacadeMock->expects($this->once())->method('isValidPasswordResetToken');
469
470
        // Act
471
        $this->tester->getFacade()->isValidPasswordResetToken(static::USER_AUTHENTICATION_TOKEN);
472
    }
473
474
    /**
475
     * @return void
476
     */
477
    public function testSetNewPasswordForwardsToUserPasswordResetFacade(): void
478
    {
479
        /// Arrange
480
        $this->initializeFacadeMocks();
481
482
        // Assert
483
        $this->userPasswordResetFacadeMock->expects($this->once())->method('setNewPassword');
484
485
        // Act
486
        $this->tester->getFacade()->setNewPassword(static::USER_AUTHENTICATION_TOKEN, static::USER_PASSWORD);
487
    }
488
489
    /**
490
     * @return void
491
     */
492
    public function testSetCurrentMerchantUserCallsUserFacade(): void
493
    {
494
        // Arrange
495
        $this->initializeFacadeMocks();
496
497
        $userTransfer = new UserTransfer();
498
        $merchantUserTransfer = (new MerchantUserTransfer())->setUser($userTransfer);
499
500
        // Check call is proxied to UserFacade
501
        $this->userFacadeMock->expects($this->once())->method('setCurrentUser')
502
            ->with($userTransfer)
503
            ->willReturn(null);
504
505
        // Act
506
        $this->tester->getFacade()->setCurrentMerchantUser($merchantUserTransfer);
507
    }
508
509
    /**
510
     * @return void
511
     */
512
    public function testIsValidPasswordCallsUserFacade(): void
513
    {
514
        // Arrange
515
        $this->initializeFacadeMocks();
516
517
        $password = 'foo';
518
        $hash = '$2y$10$y3HMfu3Dv0AyOlkILUt21O0mH3A3Tk0BPzUFqZab67zFpEMZIgx2K';
519
520
        // Check call is proxied to UserFacade
521
        $this->userFacadeMock->expects($this->once())->method('isValidPassword')
522
            ->with($password, $hash)
523
            ->willReturn(true);
524
525
        // Act
526
        $this->tester->getFacade()->isValidPassword($password, $hash);
527
    }
528
529
    /**
530
     * @return void
531
     */
532
    public function testFilterUserRolesWithMetPreconditions(): void
533
    {
534
        // Arrange
535
        $preConditionPlugin = $this->getMockBuilder(MerchantUserRoleFilterPreConditionPluginInterface::class)
536
            ->disableOriginalConstructor()
537
            ->onlyMethods(['checkCondition'])
538
            ->getMock();
539
        $preConditionPlugin->expects($this->once())->method('checkCondition')
540
            ->willReturn(true);
541
542
        $this->tester->setDependency(MerchantUserDependencyProvider::PLUGINS_MERCHANT_USER_ROLE_FILTER_PRE_CONDITION, function () use ($preConditionPlugin) {
543
            return [
544
                $preConditionPlugin,
545
            ];
546
        });
547
548
        $merchantTransfer = $this->tester->haveMerchant();
549
        $userTransfer = $this->tester->haveUser();
550
        $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
551
552
        // Act
553
        $roles = $this->tester->getFacade()->filterUserRoles(
554
            $userTransfer,
555
            ['ROLE_BACK_OFFICE_USER'],
556
        );
557
558
        // Assert
559
        $this->assertSame($roles, []);
560
    }
561
562
    /**
563
     * @return void
564
     */
565
    public function testFilterUserRolesWithUnmetPrecondition(): void
566
    {
567
        // Arrange
568
        $preConditionPlugin = $this->getMockBuilder(MerchantUserRoleFilterPreConditionPluginInterface::class)
569
            ->disableOriginalConstructor()
570
            ->onlyMethods(['checkCondition'])
571
            ->getMock();
572
        $preConditionPlugin->expects($this->once())->method('checkCondition')
573
            ->willReturn(false);
574
575
        $this->tester->setDependency(MerchantUserDependencyProvider::PLUGINS_MERCHANT_USER_ROLE_FILTER_PRE_CONDITION, function () use ($preConditionPlugin) {
576
            return [
577
                $preConditionPlugin,
578
            ];
579
        });
580
581
        $merchantTransfer = $this->tester->haveMerchant();
582
        $userTransfer = $this->tester->haveUser();
583
        $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
584
585
        // Act
586
        $roles = $this->tester->getFacade()->filterUserRoles(
587
            $userTransfer,
588
            ['ROLE_BACK_OFFICE_USER'],
589
        );
590
591
        // Assert
592
        $this->assertSame($roles, ['ROLE_BACK_OFFICE_USER']);
593
    }
594
595
    /**
596
     * @return void
597
     */
598
    public function testFilterUserRolesWithNoPreconditionPlugins(): void
599
    {
600
        // Arrange
601
        $merchantTransfer = $this->tester->haveMerchant();
602
        $userTransfer = $this->tester->haveUser();
603
        $this->tester->haveMerchantUser($merchantTransfer, $userTransfer);
604
605
        // Act
606
        $roles = $this->tester->getFacade()->filterUserRoles(
607
            $userTransfer,
608
            ['ROLE_BACK_OFFICE_USER'],
609
        );
610
611
        // Assert
612
        $this->assertSame($roles, []);
613
    }
614
615
    /**
616
     * @return void
617
     */
618
    protected function initializeFacadeMocks(): void
619
    {
620
        $this->tester->setDependency(
621
            MerchantUserDependencyProvider::FACADE_USER_PASSWORD_RESET,
622
            $this->userPasswordResetFacadeMock,
623
        );
624
        $this->tester->setDependency(
625
            MerchantUserDependencyProvider::FACADE_USER,
626
            $this->userFacadeMock,
627
        );
628
    }
629
630
    /**
631
     * @return array
632
     */
633
    public function getMerchantUserPositiveScenarioDataProvider(): array
634
    {
635
        return [
636
            'by id merchant user' => [
637
                'merchantUserCriteriaDataKeys' => [
638
                    MerchantUserCriteriaTransfer::ID_MERCHANT_USER,
639
                ],
640
                'isUserInCriteria' => false,
641
            ],
642
            'by id merchant' => [
643
                'merchantUserCriteriaDataKeys' => [
644
                    MerchantUserCriteriaTransfer::ID_MERCHANT,
645
                ],
646
                'isUserInCriteria' => false,
647
            ],
648
            'by id user' => [
649
                'merchantUserCriteriaDataKeys' => [
650
                    MerchantUserCriteriaTransfer::ID_USER,
651
                ],
652
                'isUserInCriteria' => false,
653
            ],
654
            'with user' => [
655
                'merchantUserCriteriaDataKeys' => [
656
                    MerchantUserCriteriaTransfer::ID_MERCHANT_USER,
657
                    MerchantUserCriteriaTransfer::ID_USER,
658
                    MerchantUserCriteriaTransfer::WITH_USER,
659
                ],
660
                'isUserInCriteria' => true,
661
            ],
662
        ];
663
    }
664
665
    /**
666
     * @return array
667
     */
668
    public function getMerchantUserNegativeScenarioDataProvider(): array
669
    {
670
        return [
671
            'by id merchant user' => [
672
                'merchantUserCriteriaData' => [
673
                    MerchantUserCriteriaTransfer::ID_MERCHANT_USER => 0,
674
                ],
675
            ],
676
            'by id merchant' => [
677
                'merchantUserCriteriaData' => [
678
                    MerchantUserCriteriaTransfer::ID_MERCHANT => 0,
679
                ],
680
            ],
681
            'by id user' => [
682
                'merchantUserCriteriaData' => [
683
                    MerchantUserCriteriaTransfer::ID_USER => 0,
684
                ],
685
            ],
686
        ];
687
    }
688
}
689