Files
piratepoet/tests/acceptance/NewsletterStatisticsCest.php
Ján Mikláš 2b8325a738 Remove feature flag for woocommerce revenues
[MAILPOET-1990]
2019-07-30 04:31:28 -04:00

115 lines
4.0 KiB
PHP

<?php
namespace MailPoet\Test\Acceptance;
use MailPoet\Test\DataFactories\Newsletter;
use MailPoet\Test\DataFactories\NewsletterLink;
use MailPoet\Test\DataFactories\Settings;
use MailPoet\Test\DataFactories\StatisticsClicks;
use MailPoet\Test\DataFactories\StatisticsWooCommercePurchases;
use MailPoet\Test\DataFactories\Subscriber;
use MailPoet\Test\DataFactories\WooCommerceOrder;
class NewsletterStatisticsCest {
/** @var Settings */
private $settings;
protected function _inject(Settings $settings) {
$this->settings = $settings;
}
function _before(\AcceptanceTester $I) {
$I->activateWooCommerce();
$this->settings->withWooCommerceListImportPageDisplayed(true);
$this->settings->withCookieRevenueTrackingDisabled();
}
function showWooCommercePurchaseStatistics(\AcceptanceTester $I) {
$title = 'Newsletter Title';
$currency = 'EUR';
$I->cli('wc setting update woocommerce_currency --value ' . $currency);
$newsletter = $this->createNewsletter($title);
$click1 = $this->createClickInNewsletter($newsletter);
$click2 = $this->createClickInNewsletter($newsletter);
// order 1: EUR
$woocommerce_order = $this->createWooCommerceOrder($I, $currency, 1);
(new StatisticsWooCommercePurchases($click1, $woocommerce_order))->create();
// order 2: EUR, two clicks from two subscribers
$woocommerce_order = $this->createWooCommerceOrder($I, $currency, 2);
(new StatisticsWooCommercePurchases($click1, $woocommerce_order))->create();
(new StatisticsWooCommercePurchases($click2, $woocommerce_order))->create();
// order 3: USD
$woocommerce_order = $this->createWooCommerceOrder($I, 'USD', 100);
(new StatisticsWooCommercePurchases($click1, $woocommerce_order))->create();
$I->login();
$I->amOnMailpoetPage('Emails');
$I->waitForText($title);
$I->see('5,00€', '.mailpoet_stats_text a');
}
function dontShowWooCommercePurchaseStatisticsWithZeroValue(\AcceptanceTester $I) {
$title = 'Newsletter Title';
$currency = 'EUR';
$I->cli('wc setting update woocommerce_currency --value ' . $currency);
$newsletter = $this->createNewsletter($title);
$click = $this->createClickInNewsletter($newsletter);
// order with zero value
$woocommerce_order = $this->createWooCommerceOrder($I, $currency, 0);
(new StatisticsWooCommercePurchases($click, $woocommerce_order))->create();
$I->login();
$I->amOnMailpoetPage('Emails');
$I->waitForText($title);
$I->dontSee('€', '.mailpoet_stats_text');
}
function _after(\AcceptanceTester $I) {
(new WooCommerceOrder($I))->deleteAll();
$I->deactivateWooCommerce();
$I->cli('db query "TRUNCATE TABLE mp_mailpoet_newsletters" --allow-root');
$I->cli('db query "TRUNCATE TABLE mp_mailpoet_sending_queue" --allow-root');
$I->cli('db query "TRUNCATE TABLE mp_mailpoet_subscribers" --allow-root');
$I->cli('db query "TRUNCATE TABLE mp_mailpoet_newsletter_links" --allow-root');
$I->cli('db query "TRUNCATE TABLE mp_mailpoet_statistics_clicks" --allow-root');
$I->cli('db query "TRUNCATE TABLE mp_mailpoet_statistics_woocommerce_purchases" --allow-root');
}
private function createNewsletter($newsletter_title) {
return (new Newsletter())
->withSubject($newsletter_title)
->loadBodyFrom('newsletterWithText.json')
->withSentStatus()
->withActiveStatus()
->withSendingQueue()
->create();
}
private function createClickInNewsletter($newsletter) {
$subscriber = (new Subscriber())->create();
$newsletter_link = (new NewsletterLink($newsletter))->create();
return (new StatisticsClicks($newsletter_link, $subscriber))->create();
}
private function createWooCommerceOrder(\AcceptanceTester $I, $currency, $product_price) {
return (new WooCommerceOrder($I))
->withStatus(WooCommerceOrder::STATUS_COMPLETED)
->withCurrency($currency)
->withProducts([
[
'id' => 1,
'name' => 'Product 1',
'total' => $product_price,
],
])
->create();
}
}