123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Newsletter\Model\Plugin;
- use Magento\TestFramework\Helper\Bootstrap;
- /**
- * @magentoAppIsolation enabled
- */
- class PluginTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * Customer Account Service
- *
- * @var \Magento\Customer\Api\AccountManagementInterface
- */
- protected $accountManagement;
- /**
- * @var \Magento\Customer\Api\CustomerRepositoryInterface
- */
- protected $customerRepository;
- public function setUp()
- {
- $this->accountManagement = Bootstrap::getObjectManager()->get(
- \Magento\Customer\Api\AccountManagementInterface::class
- );
- $this->customerRepository = Bootstrap::getObjectManager()->get(
- \Magento\Customer\Api\CustomerRepositoryInterface::class
- );
- }
- public function tearDown()
- {
- /** @var \Magento\Customer\Model\CustomerRegistry $customerRegistry */
- $customerRegistry = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
- ->get(\Magento\Customer\Model\CustomerRegistry::class);
- //Cleanup customer from registry
- $customerRegistry->remove(1);
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoDataFixture Magento/Newsletter/_files/subscribers.php
- */
- public function testCustomerCreated()
- {
- $objectManager = Bootstrap::getObjectManager();
- /** @var \Magento\Newsletter\Model\Subscriber $subscriber */
- $subscriber = $objectManager->create(\Magento\Newsletter\Model\Subscriber::class);
- $subscriber->loadByEmail('customer_two@example.com');
- $this->assertTrue($subscriber->isSubscribed());
- $this->assertEquals(0, (int)$subscriber->getCustomerId());
- /** @var \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory */
- $customerFactory = $objectManager->get(\Magento\Customer\Api\Data\CustomerInterfaceFactory::class);
- $customerDataObject = $customerFactory->create()
- ->setFirstname('Firstname')
- ->setLastname('Lastname')
- ->setEmail('customer_two@example.com');
- $createdCustomer = $this->customerRepository->save(
- $customerDataObject,
- $this->accountManagement->getPasswordHash('password')
- );
- $subscriber->loadByEmail('customer_two@example.com');
- $this->assertTrue($subscriber->isSubscribed());
- $this->assertEquals((int)$createdCustomer->getId(), (int)$subscriber->getCustomerId());
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoDbIsolation enabled
- */
- public function testCustomerCreatedNotSubscribed()
- {
- $this->verifySubscriptionNotExist('customer@example.com');
- $objectManager = Bootstrap::getObjectManager();
- /** @var \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory */
- $customerFactory = $objectManager->get(\Magento\Customer\Api\Data\CustomerInterfaceFactory::class);
- $customerDataObject = $customerFactory->create()
- ->setFirstname('Firstname')
- ->setLastname('Lastname')
- ->setEmail('customer@example.com');
- $this->accountManagement->createAccount($customerDataObject);
- $this->verifySubscriptionNotExist('customer@example.com');
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoDataFixture Magento/Newsletter/_files/subscribers.php
- */
- public function testCustomerUpdatedEmail()
- {
- $objectManager = Bootstrap::getObjectManager();
- /** @var \Magento\Newsletter\Model\Subscriber $subscriber */
- $subscriber = $objectManager->create(\Magento\Newsletter\Model\Subscriber::class);
- $subscriber->loadByEmail('customer@example.com');
- $this->assertTrue($subscriber->isSubscribed());
- $this->assertEquals(1, (int)$subscriber->getCustomerId());
- $customer = $this->customerRepository->getById(1);
- $customer->setEmail('new@example.com');
- $this->customerRepository->save($customer);
- $subscriber->loadByEmail('new@example.com');
- $this->assertTrue($subscriber->isSubscribed());
- $this->assertEquals(1, (int)$subscriber->getCustomerId());
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoDataFixture Magento/Newsletter/_files/subscribers.php
- */
- public function testCustomerDeletedByIdAdminArea()
- {
- $objectManager = Bootstrap::getObjectManager();
- /** @var \Magento\Newsletter\Model\Subscriber $subscriber */
- $subscriber = $objectManager->create(\Magento\Newsletter\Model\Subscriber::class);
- $subscriber->loadByEmail('customer@example.com');
- $this->assertTrue($subscriber->isSubscribed());
- $this->customerRepository->deleteById(1);
- $this->verifySubscriptionNotExist('customer@example.com');
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoDataFixture Magento/Newsletter/_files/subscribers.php
- */
- public function testCustomerDeletedAdminArea()
- {
- $customer = $this->customerRepository->getById(1);
- $objectManager = Bootstrap::getObjectManager();
- /** @var \Magento\Newsletter\Model\Subscriber $subscriber */
- $subscriber = $objectManager->create(\Magento\Newsletter\Model\Subscriber::class);
- $subscriber->loadByEmail('customer@example.com');
- $this->assertTrue($subscriber->isSubscribed());
- $this->customerRepository->delete($customer);
- $this->verifySubscriptionNotExist('customer@example.com');
- }
- /**
- * Verify a subscription doesn't exist for a given email address
- *
- * @param string $email
- * @return \Magento\Newsletter\Model\Subscriber
- */
- private function verifySubscriptionNotExist($email)
- {
- $objectManager = Bootstrap::getObjectManager();
- /** @var \Magento\Newsletter\Model\Subscriber $subscriber */
- $subscriber = $objectManager->create(\Magento\Newsletter\Model\Subscriber::class);
- $subscriber->loadByEmail($email);
- $this->assertFalse($subscriber->isSubscribed());
- $this->assertEquals(0, (int)$subscriber->getId());
- return $subscriber;
- }
- /**
- * @magentoAppArea adminhtml
- * @magentoDbIsolation enabled
- */
- public function testCustomerWithZeroStoreIdIsSubscribed()
- {
- $objectManager = Bootstrap::getObjectManager();
- $currentStore = $objectManager->get(
- \Magento\Store\Model\StoreManagerInterface::class
- )->getStore()->getId();
- $subscriber = $objectManager->create(\Magento\Newsletter\Model\Subscriber::class);
- /** @var \Magento\Newsletter\Model\Subscriber $subscriber */
- $subscriber->setStoreId($currentStore)
- ->setCustomerId(0)
- ->setSubscriberEmail('customer@example.com')
- ->setSubscriberStatus(\Magento\Newsletter\Model\Subscriber::STATUS_SUBSCRIBED)
- ->save();
- /** @var \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory */
- $customerFactory = $objectManager->get(\Magento\Customer\Api\Data\CustomerInterfaceFactory::class);
- $customerDataObject = $customerFactory->create()
- ->setFirstname('Firstname')
- ->setLastname('Lastname')
- ->setStoreId(0)
- ->setEmail('customer@example.com');
- /** @var \Magento\Customer\Api\Data\CustomerInterface $customer */
- $customer = $this->accountManagement->createAccount($customerDataObject);
- $this->customerRepository->save($customer);
- $subscriber->loadByEmail('customer@example.com');
- $this->assertEquals($customer->getId(), (int)$subscriber->getCustomerId());
- $this->assertEquals($currentStore, (int)$subscriber->getStoreId());
- }
- }
|