/** * @param Order $order * @param array $accountAddresses * @param array $accountUserAddresses * @param array $expected * * @dataProvider groupedAddressDataProvider */ public function testGetGroupedAddresses(Order $order, array $accountAddresses = [], array $accountUserAddresses = [], array $expected = []) { $this->provider->expects($this->any())->method('getAccountAddresses')->willReturn($accountAddresses); $this->provider->expects($this->any())->method('getAccountUserAddresses')->willReturn($accountUserAddresses); $this->manager->addEntity('au', 'OroB2B\\Bundle\\AccountBundle\\Entity\\AccountUserAddress'); $this->manager->addEntity('a', 'OroB2B\\Bundle\\AccountBundle\\Entity\\AccountAddress'); $this->assertEquals($expected, $this->manager->getGroupedAddresses($order, AddressType::TYPE_BILLING)); }
/** * @dataProvider permissionsDataProvider * @SuppressWarnings(PHPMD.ExcessiveParameterList) * * @param string $userClass * @param string $addressType * @param array|null $isGranted * @param bool $hasAccountAddresses * @param bool $hasAccountUserAddresses * @param bool $hasEntity * @param bool $isAddressGranted * @param bool $isAccountAddressGranted * @param bool $isAccountUserAddressGranted */ public function testIsAddressGranted($userClass, $addressType, $isGranted, $hasAccountAddresses, $hasAccountUserAddresses, $hasEntity, $isAddressGranted, $isAccountAddressGranted, $isAccountUserAddressGranted) { $this->orderAddressProvider->expects($this->any())->method('getAccountAddresses')->willReturn($hasAccountAddresses); $this->orderAddressProvider->expects($this->any())->method('getAccountUserAddresses')->willReturn($hasAccountUserAddresses); $this->securityFacade->expects($this->any())->method('getLoggedUser')->willReturn(new $userClass()); $this->securityFacade->expects($this->any())->method('isGranted')->with($this->isType('string'))->will($this->returnValueMap((array) $isGranted)); $order = null; $account = null; $accountUser = null; if ($hasEntity) { $account = new Account(); $accountUser = new AccountUser(); } $order = (new Order())->setAccount($account)->setAccountUser($accountUser); $this->assertEquals($isAddressGranted, $this->provider->isAddressGranted($order, $addressType)); $this->assertEquals($isAccountAddressGranted, $this->provider->isAccountAddressGranted($addressType, $account)); $this->assertEquals($isAccountUserAddressGranted, $this->provider->isAccountUserAddressGranted($addressType, $accountUser)); }
/** * @dataProvider accountUserAddressPermissions * @param string $type * @param array $expectedCalledPermissions * @param string $calledRepositoryMethod * @param array $addresses * @param object $loggedUser */ public function testGetAccountUserAddresses($type, array $expectedCalledPermissions, $calledRepositoryMethod, array $addresses, $loggedUser) { $this->securityFacade->expects($this->any())->method('getLoggedUser')->will($this->returnValue($loggedUser)); $accountUser = new AccountUser(); $permissionsValueMap = []; foreach ($expectedCalledPermissions as $permission => $decision) { $permissionsValueMap[] = [$permission, null, $decision]; } $this->securityFacade->expects($this->exactly(count($expectedCalledPermissions)))->method('isGranted')->will($this->returnValueMap($permissionsValueMap)); $repository = $this->assertAccountUserAddressRepositoryCall(); if ($calledRepositoryMethod) { $repository->expects($this->once())->method($calledRepositoryMethod)->with($accountUser, $type, $this->aclHelper)->will($this->returnValue($addresses)); } else { $repository->expects($this->never())->method($this->anything()); } $this->assertEquals($addresses, $this->provider->getAccountUserAddresses($accountUser, $type)); // cache $this->assertEquals($addresses, $this->provider->getAccountUserAddresses($accountUser, $type)); }
/** * @param Order $order * @param string $type * @return array */ public function getGroupedAddresses(Order $order, $type) { $addresses = []; $account = $order->getAccount(); if ($account) { $accountAddresses = $this->orderAddressProvider->getAccountAddresses($account, $type); foreach ($accountAddresses as $accountAddress) { $addresses[self::ACCOUNT_LABEL][$this->getIdentifier($accountAddress)] = $accountAddress; } } $accountUser = $order->getAccountUser(); if ($accountUser) { $accountUserAddresses = $this->orderAddressProvider->getAccountUserAddresses($accountUser, $type); if ($accountUserAddresses) { foreach ($accountUserAddresses as $accountUserAddress) { $addresses[self::ACCOUNT_USER_LABEL][$this->getIdentifier($accountUserAddress)] = $accountUserAddress; } } } return $addresses; }
/** * @param string $type * @return bool */ public function isManualEditGranted($type) { OrderAddressProvider::assertType($type); $permission = sprintf(self::MANUAL_EDIT_ACTION, $type); return $this->securityFacade->isGranted($this->getPermission($permission)); }