/**
  * @param EntityManager $manager
  * @param array $address
  * @return OrderAddress
  */
 protected function createOrderAddress(EntityManager $manager, array $address)
 {
     $orderAddress = new OrderAddress();
     $orderAddress->setLabel($address['label'])->setCountry($this->getCountryByIso2Code($manager, $address['country']))->setCity($address['city'])->setRegion($this->getRegionByIso2Code($manager, $address['region']))->setStreet($address['street'])->setPostalCode($address['postalCode']);
     $manager->persist($orderAddress);
     return $orderAddress;
 }
 /**
  * @param ObjectManager $manager
  * @param string $name
  * @param array $address
  * @return OrderAddress
  */
 protected function createOrderAddress(ObjectManager $manager, $name, array $address)
 {
     /** @var Country $country */
     $country = $manager->getReference('OroAddressBundle:Country', $address['country']);
     if (!$country) {
         throw new \RuntimeException('Can\'t find country with ISO ' . $address['country']);
     }
     /** @var Region $region */
     $region = $manager->getReference('OroAddressBundle:Region', $address['region']);
     if (!$region) {
         throw new \RuntimeException(sprintf('Can\'t find region with code %s', $address['country']));
     }
     $orderAddress = new OrderAddress();
     $orderAddress->setCountry($country)->setCity($address['city'])->setRegion($region)->setStreet($address['street'])->setPostalCode($address['postalCode']);
     $manager->persist($orderAddress);
     $this->addReference($name, $orderAddress);
     return $orderAddress;
 }
 /**
  * @param bool $isValid
  * @param array $submittedData
  * @param mixed $expectedData
  * @param mixed $defaultData
  * @param array $formErrors
  * @param array $groupedAddresses
  * @dataProvider submitWithPermissionProvider
  */
 public function testSubmitWithoutManualPermission($isValid, $submittedData, $expectedData, $defaultData, array $formErrors = [], array $groupedAddresses = [])
 {
     $this->serializer->expects($this->any())->method('normalize')->willReturn(['a_1' => ['street' => 'street']]);
     $this->orderAddressManager->expects($this->once())->method('getGroupedAddresses')->willReturn($groupedAddresses);
     $this->orderAddressManager->expects($this->any())->method('getEntityByIdentifier')->will($this->returnCallback(function ($identifier) use($groupedAddresses) {
         foreach ($groupedAddresses as $groupedAddressesGroup) {
             if (array_key_exists($identifier, $groupedAddressesGroup)) {
                 return $groupedAddressesGroup[$identifier];
             }
         }
         return null;
     }));
     $this->orderAddressManager->expects($this->any())->method('updateFromAbstract')->will($this->returnCallback(function (AccountAddress $address) {
         $orderAddress = new OrderAddress();
         $orderAddress->setCountry($address->getCountry());
         $orderAddress->setStreet($address->getStreet());
         return $orderAddress;
     }));
     $this->orderAddressSecurityProvider->expects($this->once())->method('isManualEditGranted')->willReturn(false);
     $this->checkForm($isValid, $submittedData, $expectedData, $defaultData, $formErrors);
 }