100 lines
3.7 KiB
PHP
Executable File
100 lines
3.7 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Newsletter\Controller;
|
|
|
|
use Magento\Customer\Api\CustomerRepositoryInterface;
|
|
use Magento\Customer\Model\AccountConfirmation;
|
|
use Magento\Framework\App\Config\MutableScopeConfigInterface;
|
|
use Magento\Framework\App\RequestInterface;
|
|
use Magento\Framework\Data\Form\FormKey;
|
|
use Magento\Newsletter\Model\ResourceModel\Subscriber as SubscriberLoader;
|
|
use Magento\Newsletter\Model\Subscriber;
|
|
use Magento\Store\Model\ScopeInterface;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use Magento\TestFramework\TestCase\AbstractController;
|
|
|
|
/**
|
|
* Test Subscriber
|
|
*/
|
|
class SubscriberTest extends AbstractController
|
|
{
|
|
/**
|
|
* Check that Customer still subscribed for newsletters emails after registration.
|
|
*
|
|
* @magentoDbIsolation enabled
|
|
*/
|
|
public function testCreatePosWithSubscribeEmailAction()
|
|
{
|
|
$this->markTestSkipped('Skip until failed. MAGETWO-96420');
|
|
|
|
$config = Bootstrap::getObjectManager()->get(MutableScopeConfigInterface::class);
|
|
$accountConfirmationRequired = $config->getValue(
|
|
AccountConfirmation::XML_PATH_IS_CONFIRM,
|
|
ScopeInterface::SCOPE_WEBSITES
|
|
);
|
|
$config->setValue(AccountConfirmation::XML_PATH_IS_CONFIRM, 1, ScopeInterface::SCOPE_WEBSITES);
|
|
|
|
$subscriber = Bootstrap::getObjectManager()->create(Subscriber::class);
|
|
$customerEmail = 'subscribeemail@example.com';
|
|
// Subscribe by email
|
|
$subscriber->subscribe($customerEmail);
|
|
$subscriber->loadByEmail($customerEmail);
|
|
$subscriber->confirm($subscriber->getSubscriberConfirmCode());
|
|
|
|
// Create customer
|
|
$this->fillRequestWithAccountDataAndFormKey($customerEmail);
|
|
$this->dispatch('customer/account/createPost');
|
|
$this->dispatch('customer/account/confirm');
|
|
|
|
$customerRepository = Bootstrap::getObjectManager()->get(CustomerRepositoryInterface::class);
|
|
/** @var \Magento\Customer\Api\Data\CustomerInterface $customer */
|
|
$customer = $customerRepository->get($customerEmail);
|
|
$subscriberResource = Bootstrap::getObjectManager()
|
|
->create(SubscriberLoader::class);
|
|
|
|
// check customer subscribed to newsletter
|
|
$this->assertTrue($subscriberResource->loadByCustomerData($customer)['subscriber_status'] === "1");
|
|
|
|
$config->setValue(
|
|
AccountConfirmation::XML_PATH_IS_CONFIRM,
|
|
$accountConfirmationRequired,
|
|
ScopeInterface::SCOPE_WEBSITES
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Customer Data.
|
|
*
|
|
* @param string $email
|
|
* @return void
|
|
*/
|
|
private function fillRequestWithAccountDataAndFormKey($email)
|
|
{
|
|
Bootstrap::getObjectManager()->get(RequestInterface::class)
|
|
->setMethod('POST')
|
|
->setParam('firstname', 'firstname1')
|
|
->setParam('lastname', 'lastname1')
|
|
->setParam('company', '')
|
|
->setParam('email', $email)
|
|
->setParam('password', '_Password1')
|
|
->setParam('password_confirmation', '_Password1')
|
|
->setParam('telephone', '5123334444')
|
|
->setParam('street', ['1234 fake street', ''])
|
|
->setParam('city', 'Austin')
|
|
->setParam('region_id', 57)
|
|
->setParam('region', '')
|
|
->setParam('postcode', '78701')
|
|
->setParam('country_id', 'US')
|
|
->setParam('default_billing', '1')
|
|
->setParam('default_shipping', '1')
|
|
->setParam('is_subscribed', '0')
|
|
->setPostValue('create_address', true)
|
|
->setParam('form_key', Bootstrap::getObjectManager()->get(FormKey::class)->getFormKey());
|
|
}
|
|
}
|