83 lines
3.2 KiB
PHP
83 lines
3.2 KiB
PHP
<?php
|
|
|
|
use MailPoet\Subscribers\ImportExport\Import\MailChimp;
|
|
|
|
class MailChimpTest extends MailPoetTest {
|
|
function __construct() {
|
|
$this->api_key = getenv('WP_TEST_IMPORT_MAILCHIMP_API');
|
|
$this->mailchimp = new MailChimp($this->api_key);
|
|
$this->lists = explode(",", getenv('WP_TEST_IMPORT_MAILCHIMP_LISTS'));
|
|
}
|
|
|
|
function testItValidatesAPIKey() {
|
|
$valid_api_key_format = '12345678901234567890123456789012-ab1';
|
|
expect($this->mailchimp->getAPIKey($valid_api_key_format))
|
|
->equals($valid_api_key_format);
|
|
expect($this->mailchimp->getAPIKey('invalid_api_key_format'))->false();
|
|
}
|
|
|
|
function testItCanGetDatacenter() {
|
|
$valid_api_key_format = '12345678901234567890123456789012-ab1';
|
|
$data_center = 'ab1';
|
|
expect($this->mailchimp->getDataCenter($valid_api_key_format))
|
|
->equals($data_center);
|
|
}
|
|
|
|
function testItFailsWithIncorrectAPIKey() {
|
|
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
|
$mailchimp = clone($this->mailchimp);
|
|
$mailchimp->api_key = false;
|
|
$lists = $mailchimp->getLists();
|
|
expect($lists['result'])->false();
|
|
expect($lists['errors'][0])->contains('API');
|
|
$subscribers = $mailchimp->getLists();
|
|
expect($subscribers['result'])->false();
|
|
expect($subscribers['errors'][0])->contains('API');
|
|
}
|
|
|
|
function testItCanGetLists() {
|
|
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
|
$lists = $this->mailchimp->getLists();
|
|
expect($lists['result'])->true();
|
|
expect(count($lists['data']))->equals(2);
|
|
expect(isset($lists['data'][0]['id']))->true();
|
|
expect(isset($lists['data'][0]['name']))->true();
|
|
}
|
|
|
|
function testItFailsWithIncorrectLists() {
|
|
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
|
$subscribers = $this->mailchimp->getSubscribers();
|
|
expect($subscribers['result'])->false();
|
|
expect($subscribers['errors'][0])->contains('lists');
|
|
$subscribers = $this->mailchimp->getSubscribers(array(12));
|
|
expect($subscribers['result'])->false();
|
|
expect($subscribers['errors'][0])->contains('lists');
|
|
}
|
|
|
|
function testItCanGetSubscribers() {
|
|
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
|
$subscribers = $this->mailchimp->getSubscribers(array($this->lists[0]));
|
|
expect($subscribers['result'])->true();
|
|
expect(isset($subscribers['data']['invalid']))->true();
|
|
expect(isset($subscribers['data']['duplicate']))->true();
|
|
expect(isset($subscribers['data']['header']))->true();
|
|
expect(count($subscribers['data']['subscribers']))->equals(1);
|
|
expect($subscribers['data']['subscribersCount'])->equals(1);
|
|
}
|
|
|
|
function testItFailsWhenListHeadersDontMatch() {
|
|
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
|
$subscribers = $this->mailchimp->getSubscribers($this->lists);
|
|
expect($subscribers['result'])->false();
|
|
expect($subscribers['errors'][0])->contains('header');
|
|
}
|
|
|
|
function testItFailsWhenSubscribersDataTooLarge() {
|
|
if(getenv('WP_TEST_ENABLE_NETWORK_TESTS') !== 'true') return;
|
|
$mailchimp = clone($this->mailchimp);
|
|
$mailchimp->max_post_size = 10;
|
|
$subscribers = $mailchimp->getSubscribers($this->lists);
|
|
expect($subscribers['result'])->false();
|
|
expect($subscribers['errors'][0])->contains('large');
|
|
}
|
|
} |