View source
<?php
namespace Drupal\Tests\nopremium\Functional\Form;
use Drupal\Tests\nopremium\Functional\NopremiumBrowserTestBase;
class SettingsFormTest extends NopremiumBrowserTestBase {
protected $adminUser;
protected function setUp() {
parent::setUp();
$this->adminUser = $this
->drupalCreateUser([
'administer site configuration',
]);
}
public function testNoAccess() {
$this
->drupalGet('/admin/config/content/nopremium');
$this
->assertSession()
->statusCodeEquals(403);
}
public function testNew() {
$this
->drupalLogin($this->adminUser);
$this
->drupalPostForm('/admin/config/content/nopremium', [], 'Save configuration');
$expected = [
'default_message' => 'The full content of this page is available to premium users only.',
'view_modes' => [],
'teaser_view_mode' => 'teaser',
];
$config = $this
->config('nopremium.settings')
->getRawData();
unset($config['_core']);
$this
->assertSame($expected, $config);
}
public function testSetSettings() {
$this
->drupalLogin($this->adminUser);
$edit = [
'default_message' => 'This is premium content.',
'view_modes[full]' => 'full',
'view_modes[rss]' => 'rss',
'view_modes[teaser]' => '',
'teaser_view_mode' => 'rss',
];
$this
->drupalPostForm('/admin/config/content/nopremium', $edit, 'Save configuration');
$expected = [
'default_message' => 'This is premium content.',
'view_modes' => [
'full' => 'full',
'rss' => 'rss',
],
'teaser_view_mode' => 'rss',
];
$config = $this
->config('nopremium.settings')
->getRawData();
unset($config['_core']);
$this
->assertSame($expected, $config);
}
public function testNewWithContentTypes() {
$this
->drupalLogin($this->adminUser);
$this
->drupalCreateContentType([
'type' => 'bar',
]);
$this
->drupalCreateContentType([
'type' => 'foo',
]);
$this
->drupalPostForm('/admin/config/content/nopremium', [], 'Save configuration');
$expected = [
'default_message' => 'The full content of this page is available to premium users only.',
'view_modes' => [],
'teaser_view_mode' => 'teaser',
'messages' => [
'bar' => '',
'foo' => '',
],
];
$config = $this
->config('nopremium.settings')
->getRawData();
unset($config['_core']);
$this
->assertSame($expected, $config);
}
public function testSetSettingsWithContentTypes() {
$this
->drupalLogin($this->adminUser);
$this
->drupalCreateContentType([
'type' => 'bar',
]);
$this
->drupalCreateContentType([
'type' => 'foo',
]);
$edit = [
'default_message' => 'This is premium content.',
'message_bar' => 'This is the message for the bar content type.',
'message_foo' => 'This is the message for the foo content type.',
];
$this
->drupalPostForm('/admin/config/content/nopremium', $edit, 'Save configuration');
$expected = [
'default_message' => 'This is premium content.',
'view_modes' => [],
'teaser_view_mode' => 'teaser',
'messages' => [
'bar' => 'This is the message for the bar content type.',
'foo' => 'This is the message for the foo content type.',
],
];
$config = $this
->config('nopremium.settings')
->getRawData();
unset($config['_core']);
$this
->assertSame($expected, $config);
}
public function testEditSettings() {
$this
->drupalLogin($this->adminUser);
$this
->drupalCreateContentType([
'type' => 'bar',
]);
$this
->drupalCreateContentType([
'type' => 'foo',
]);
$this
->config('nopremium.settings')
->set('default_message', 'The default premium message.')
->set('messages', [
'foo' => 'The foo message',
])
->set('view_modes', [
'full' => 'full',
'rss' => 'rss',
])
->set('teaser_view_mode', 'rss')
->save();
$this
->drupalPostForm('/admin/config/content/nopremium', [], 'Save configuration');
$expected = [
'default_message' => 'The default premium message.',
'view_modes' => [
'full' => 'full',
'rss' => 'rss',
],
'teaser_view_mode' => 'rss',
'messages' => [
'foo' => 'The foo message',
'bar' => '',
],
];
$config = $this
->config('nopremium.settings')
->getRawData();
unset($config['_core']);
$this
->assertSame($expected, $config);
}
public function testWithTokenModule() {
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('/admin/config/content/nopremium');
$this
->assertSession()
->pageTextContains('Enable the Token module to view the available token browser.');
$this
->assertSession()
->linkExists('Token module');
$this->container
->get('module_installer')
->install([
'token',
], TRUE);
$this
->drupalGet('/admin/config/content/nopremium');
$this
->assertSession()
->linkExists('Browse available tokens.');
}
}