hn-8.x-1.x-dev/tests/src/Functional/UI/HnConfigUITest.php
tests/src/Functional/UI/HnConfigUITest.php
<?php
namespace Drupal\Tests\hn\Functional\UI;
use Drupal\Tests\hn\Functional\HnFunctionalTestBase;
/**
* This tests the config UI of the hn_cleaner module.
*
* @group hn
*/
class HnConfigUITest extends HnFunctionalTestBase {
public static $modules = [
'hn_config',
];
/**
* Tries opening the settings page without sufficient permissions.
*/
public function testPermissions() {
$this->drupalGet('admin/config/services/hn/config');
$this->assertSession()->statusCodeEquals(403);
}
/**
* This checks if the config entities are validated on existence.
*/
public function testConfigEntityValidation() {
// Fetch the settings page with sufficient permissions.
$account = $this->drupalCreateUser(['administer hn']);
$this->drupalLogin($account);
$this->drupalGet('admin/config/services/hn/config');
// Save the config before submit.
$before_submit = $this->config('hn_config.settings')->get('entities');
// Submit with an invalid configuration entity.
$this->submitForm([
'entities' => 'hn_config.settings' . PHP_EOL . 'doesnot.exist',
], t('Save configuration'));
// Make sure the message is shown.
$assert_session = $this->assertSession();
$assert_session->pageTextContains('Config entity doesnot.exist does not exist');
// Assure the config wasn't changed.
$this->assertEquals($before_submit, $this->config('hn_config.settings')->get('entities'));
}
/**
* This tests assures that changing the settings actually work.
*/
public function testChangingSettings() {
// Fetch the settings page with sufficient permissions.
$account = $this->drupalCreateUser(['administer hn']);
$this->drupalLogin($account);
$this->drupalGet('admin/config/services/hn/config');
// Make sure all the default values are visible.
$assert_session = $this->assertSession();
$this->assertEquals(
['main'],
$assert_session->fieldExists('menus[]')->getValue()
);
$assert_session->fieldValueEquals('entities', '');
// Change the form values and submit.
$this->submitForm([
'menus[]' => ['footer', 'main'],
'entities' => 'hn_config.settings' . PHP_EOL . 'hn.settings',
], t('Save configuration'));
// Assure the changed values are visible after submit.
$assert_session = $this->assertSession();
$this->assertEquals(
['footer', 'main'],
$assert_session->fieldExists('menus[]')->getValue()
);
$assert_session->fieldValueEquals('entities', 'hn_config.settings' . PHP_EOL . 'hn.settings');
// Assure the config was actually changed.
$config = $this->config('hn_config.settings');
$this->assertEquals(['footer', 'main'], $config->get('menus'));
$this->assertEquals(['hn_config.settings', 'hn.settings'], $config->get('entities'));
}
}
