/** * @Transform :customer */ public function getOrCreateCustomerByEmail($email) { /** @var CustomerInterface $customer */ $customer = $this->customerRepository->findOneBy(['email' => $email]); if (null === $customer) { $customer = $this->customerFactory->createNew(); $customer->setEmail($email); $this->customerRepository->add($customer); } return $customer; }
function it_creates_new_customer_if_it_does_not_exist(CustomerInterface $customer, FactoryInterface $customerFactory, CustomerRepositoryInterface $customerRepository) { $customerRepository->findOneBy(['email' => '*****@*****.**'])->willReturn(null); $customerFactory->createNew()->willReturn($customer); $customer->setEmail('*****@*****.**')->shouldBeCalled(); $customerRepository->add($customer)->shouldBeCalled(); $this->getOrCreateCustomerByEmail('*****@*****.**')->shouldReturn($customer); }
/** * @param string $email * @param string $password * @param bool $enabled * @param string|null $firstName * @param string|null $lastName */ private function createCustomerWithUserAccount($email, $password, $enabled = true, $firstName = null, $lastName = null) { $user = $this->userFactory->createNew(); /** @var CustomerInterface $customer */ $customer = $this->customerFactory->createNew(); $customer->setFirstName($firstName); $customer->setLastName($lastName); $customer->setEmail($email); $user->setUsername($email); $user->setPlainPassword($password); $user->setEnabled($enabled); $customer->setUser($user); $this->sharedStorage->set('customer', $customer); $this->customerRepository->add($customer); }