![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/integration/testsuite/Magento/Newsletter/Model/Plugin/ |
<?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; protected function setUp(): void { $this->accountManagement = Bootstrap::getObjectManager()->get( \Magento\Customer\Api\AccountManagementInterface::class ); $this->customerRepository = Bootstrap::getObjectManager()->get( \Magento\Customer\Api\CustomerRepositoryInterface::class ); } protected function tearDown(): void { /** @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('[email protected]'); $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('[email protected]'); $createdCustomer = $this->customerRepository->save( $customerDataObject, $this->accountManagement->getPasswordHash('password') ); $subscriber->loadByEmail('[email protected]'); $this->assertTrue($subscriber->isSubscribed()); $this->assertEquals((int)$createdCustomer->getId(), (int)$subscriber->getCustomerId()); } /** * @magentoAppArea adminhtml * @magentoDbIsolation enabled */ public function testCustomerCreatedNotSubscribed() { $this->verifySubscriptionNotExist('[email protected]'); $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('[email protected]'); $this->accountManagement->createAccount($customerDataObject); $this->verifySubscriptionNotExist('[email protected]'); } /** * @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('[email protected]'); $this->assertTrue($subscriber->isSubscribed()); $this->assertEquals(1, (int)$subscriber->getCustomerId()); $customer = $this->customerRepository->getById(1); $customer->setEmail('[email protected]'); $this->customerRepository->save($customer); $subscriber->loadByEmail('[email protected]'); $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('[email protected]'); $this->assertTrue($subscriber->isSubscribed()); $this->customerRepository->deleteById(1); $this->verifySubscriptionNotExist('[email protected]'); } /** * @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('[email protected]'); $this->assertTrue($subscriber->isSubscribed()); $this->customerRepository->delete($customer); $this->verifySubscriptionNotExist('[email protected]'); } /** * 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('[email protected]') ->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('[email protected]'); /** @var \Magento\Customer\Api\Data\CustomerInterface $customer */ $customer = $this->accountManagement->createAccount($customerDataObject); $this->customerRepository->save($customer); $subscriber->loadByEmail('[email protected]'); $this->assertEquals($customer->getId(), (int)$subscriber->getCustomerId()); $this->assertEquals($currentStore, (int)$subscriber->getStoreId()); } /** * Test get list customer, which have more then 2 subscribes in newsletter_subscriber. * * @magentoAppArea frontend * @magentoDataFixture Magento/Newsletter/_files/subscribers.php */ public function testCustomerWithTwoNewsLetterSubscriptions() { /** @var \Magento\Framework\Api\SearchCriteriaBuilder $searchBuilder */ $searchBuilder = Bootstrap::getObjectManager()->create(\Magento\Framework\Api\SearchCriteriaBuilder::class); $searchCriteria = $searchBuilder->addFilter('entity_id', 1)->create(); $items = $this->customerRepository->getList($searchCriteria)->getItems(); /** @var \Magento\Customer\Api\Data\CustomerInterface $customer */ $customer = $items[0]; $extensionAttributes = $customer->getExtensionAttributes(); $this->assertTrue($extensionAttributes->getIsSubscribed()); } }