MailchimpSignupFormTest.php in Mailchimp 2.x
File
modules/mailchimp_signup/tests/src/Functional/MailchimpSignupFormTest.php
View source
<?php
namespace Drupal\Tests\mailchimp_signup\Functional;
use Drupal\Tests\mailchimp\Functional\FunctionalMailchimpTestBase;
use Drupal\user\Entity\Role;
class MailchimpSignupFormTest extends FunctionalMailchimpTestBase {
protected static $modules = [
'mailchimp_signup',
];
protected function setUp() {
parent::setUp();
$rid = $this->adminUser
->getRoles()[1];
$this
->grantPermissions(Role::load($rid), [
'access mailchimp signup pages',
'administer mailchimp signup entities',
]);
}
public function testSignUpForm() {
$this
->drupalLogin($this->lowUser);
$this
->drupalGet('/admin/config/services/mailchimp/signup');
$this
->assertSession()
->statusCodeEquals(403);
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('/admin/config/services/mailchimp/signup');
$this
->assertSession()
->statusCodeEquals(403);
\Drupal::configFactory()
->getEditable('mailchimp.settings')
->set('api_key', 'TEST_KEY')
->set('test_mode', TRUE)
->save();
$this
->drupalGet('/admin/config/services/mailchimp/signup');
$this
->assertSession()
->statusCodeEquals(200);
$this
->drupalGet('/admin/config/services/mailchimp/signup/add');
$this
->assertSession()
->statusCodeEquals(200);
$this
->submitForm([
'title' => 'My signup form',
'id' => 'my_signup_form',
'description' => 'Test description',
'mode[1]' => TRUE,
'mode[2]' => TRUE,
'settings[submit_button]' => 'Sign up',
'settings[path]' => 'newsletter/signup',
'settings[confirmation_message]' => 'You have signed up',
'settings[destination]' => 'home',
'mc_lists[57afe96172]' => TRUE,
], 'Save');
$this
->assertSession()
->addressEquals('/admin/config/services/mailchimp/signup');
$this
->assertSession()
->pageTextContains('My signup form');
$this
->drupalLogin($this->lowUser);
$this
->drupalGet('/newsletter/signup');
$this
->assertSession()
->statusCodeEquals(403);
$rid = $this->lowUser
->getRoles()[0];
$this
->grantPermissions(Role::load($rid), [
'access mailchimp signup pages',
]);
$this
->drupalGet('/newsletter/signup');
$this
->assertSession()
->statusCodeEquals(200);
$this
->assertSession()
->pageTextContains('My signup form');
$this
->submitForm([
'mergevars[EMAIL]' => 'admin@example.com',
], 'Sign up');
$this
->assertSession()
->pageTextContains('You have signed up');
$this
->assertSession()
->addressEquals('/home');
$manager = \Drupal::service('plugin.manager.block');
$manager
->clearCachedDefinitions();
$this
->assertNoText('My signup block');
$this
->drupalPlaceBlock('mailchimp_signup_subscribe_block:my_signup_form', [
'label' => 'My signup block',
]);
$this
->drupalGet('/foo');
$this
->assertSession()
->pageTextContains('My signup block');
$this
->submitForm([
'mergevars[EMAIL]' => 'admin@example.com',
], 'Sign up');
$this
->assertSession()
->pageTextContains('You have signed up');
$this
->assertSession()
->addressEquals('/home');
}
}