Files
piratepoet/tests/acceptance/WooCommerceListImportPageCest.php
Jan Jakeš 1774b48666 Autofix unused "use" statements
[MAILPOET-2715]
2020-02-19 19:12:53 +00:00

105 lines
3.8 KiB
PHP

<?php
namespace MailPoet\Test\Acceptance;
use MailPoet\Test\DataFactories\Settings;
use MailPoet\Test\DataFactories\WooCommerceCustomer;
use MailPoet\Test\DataFactories\WooCommerceOrder;
use PHPUnit\Framework\Exception;
class WooCommerceListImportPageCest {
/** @var WooCommerceCustomer */
private $customerFactory;
/** @var Settings */
private $settings;
/** @var WooCommerceOrder*/
private $orderFactory;
protected function _inject(Settings $settings) {
$this->settings = $settings;
}
public function _before(\AcceptanceTester $i) {
$i->activateWooCommerce();
$this->customerFactory = new WooCommerceCustomer($i);
$this->orderFactory = new WooCommerceOrder($i);
}
public function importListPageImportTest(\AcceptanceTester $i) {
$this->settings
->withWooCommerceListImportPageDisplayed(false)
->withCronTriggerMethod('WordPress');
$order = $this->orderFactory->create();
$guestUserData = $order['billing'];
$registeredCustomer = $this->customerFactory->withEmail('customer1@email.com')->create();
$i->login();
$i->amOnPage('wp-admin/admin.php?page=mailpoet-woocommerce-list-import');
$subscribedRadio = '[data-automation-id="import_as_subscribed"]';
$submitButton = '[data-automation-id="submit_woo_commerce_list_import"]';
$i->selectOption($subscribedRadio, 'subscribed');
$i->click($submitButton);
$i->seeNoJSErrors();
$i->waitForElement('[data-automation-id="create_standard"]');
$i->amOnMailpoetPage('Lists');
$i->waitForText('WooCommerce Customers');
$i->moveMouseOver('[data-automation-id="segment_name_WooCommerce Customers"]');
$i->click('[data-automation-id="view_subscribers_WooCommerce Customers"]');
$i->waitForListingItemsToLoad();
$i->canSee($registeredCustomer['email']);
$i->reloadPage();
// It takes more time to sync guest user
// So we reload page several times and check for guest customer email
for ($index = 0; $index < 15; $index++) {
try {
$i->wait(2);
$i->reloadPage();
$i->see($guestUserData['email']);
return;
} catch (Exception $e) {
continue;
}
}
$i->see($guestUserData['email']);
}
public function importPageFormBehaviourTest(\AcceptanceTester $i) {
$i->login();
$i->amOnPage('wp-admin/admin.php?page=mailpoet-woocommerce-list-import');
$i->see('WooCommerce customers now have their own list');
$unsubscribedRadio = '[data-automation-id="import_as_unsubscribed"]';
$subscribedRadio = '[data-automation-id="import_as_subscribed"]';
$submitButton = '[data-automation-id="submit_woo_commerce_list_import"]';
$i->cantSeeCheckboxIsChecked($unsubscribedRadio);
$i->cantSeeCheckboxIsChecked($subscribedRadio);
$i->seeElement("$submitButton:disabled");
$i->selectOption($unsubscribedRadio, 'unsubscribed');
$i->canSeeCheckboxIsChecked($unsubscribedRadio);
$i->seeElement("$submitButton:not(:disabled)");
$i->seeNoJSErrors();
$i->click($submitButton);
$i->seeNoJSErrors();
$i->waitForElement('[data-automation-id="create_standard"]');
}
/**
* Test that admin is always redirected to WooCommerce list import page and
* can't go to another page unless he submits the form
* @param \AcceptanceTester $i
*/
public function importListPageRedirectionTest(\AcceptanceTester $i) {
$this->settings->withWooCommerceListImportPageDisplayed(false);
$order = $this->orderFactory
->withDateCreated('2001-08-22T11:11:56') // any time in the past. Must be before the plugin activation
->create();
$i->login();
$i->amOnMailpoetPage('Emails');
$i->seeInCurrentUrl('wp-admin/admin.php?page=mailpoet-woocommerce-list-import');
$i->amOnMailpoetPage('Emails');
$i->seeInCurrentUrl('wp-admin/admin.php?page=mailpoet-woocommerce-list-import');
$this->orderFactory->delete($order['id']);
}
}