View source
<?php
namespace Drupal\book_access;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\RandomGeneratorTrait;
use Drupal\user\Entity\Role;
class BookAccessDefaultsTest extends KernelTestBase {
use RandomGeneratorTrait;
protected static $modules = [
'system',
'node',
'user',
'book',
'book_access',
];
protected $defaultStorage;
public function createRole() {
$role1 = Role::create([
'id' => 'test_role1',
'name' => $this
->randomString(),
]);
$role1
->save();
return $role1;
}
protected function setup() : void {
parent::setUp();
$this
->installSchema('system', 'sequences');
$this
->installConfig('system');
$this
->installEntitySchema('user');
$this
->installEntitySchema('node');
$this
->installConfig('user');
$this
->installConfig('book');
$this
->installConfig('book_access');
$this->defaultStorage = \Drupal::entityTypeManager()
->getStorage('book_access_defaults');
}
public function testInstallCreatesDefaultConfig() {
$query = $this->defaultStorage
->getQuery();
$results = $query
->condition('grant_type', 'author')
->execute();
$this
->assertIsArray($results, "Results are not available. Not an array");
$this
->assertEqual(count($results), 1, "One result expected.");
$query = \Drupal::entityTypeManager()
->getStorage('book_access_defaults')
->getQuery();
$results = $query
->condition('grant_type', 'role')
->execute();
$this
->assertIsArray($results, "Results are not available. Not an array");
$this
->assertEqual(count($results), 3, "Three results expected.");
}
public function testUpdatingConfig() {
$query = $this->defaultStorage
->getQuery();
$results = $query
->condition('role_id', 'authenticated')
->execute();
$this
->assertIsArray($results, "Results are not available. Not an array");
$this
->assertEqual(count($results), 1, "One result expected.");
$config = $this->defaultStorage
->load(current($results));
$grants = $config
->getGrants();
$this
->assertEqual($grants['grant_add_child'], FALSE, "Grant add child expected FALSE.");
$grants['grant_add_child'] = TRUE;
$config
->set('grants', $grants)
->save();
$query2 = $this->defaultStorage
->getQuery();
$results = $query2
->condition('role_id', 'authenticated')
->execute();
$this
->assertIsArray($results, "Results are not available. Not an array");
$this
->assertEqual(count($results), 1, "One result expected.");
$config = $this->defaultStorage
->load(current($results));
$grants = $config
->getGrants();
$this
->assertEqual($grants['grant_add_child'], TRUE, "Grant add child expected TRUE.");
}
public function testAddingRoleAddsConfig() {
$role1 = $this
->createRole();
$query = $this->defaultStorage
->getQuery();
$results = $query
->condition('role_id', $role1
->id())
->execute();
$this
->assertIsArray($results, "Results are not available. Not an array");
$this
->assertEqual(count($results), 1, "One result expected.");
}
public function testDeletingRoleDeletesConfig() {
$role1 = $this
->createRole();
$query = $this->defaultStorage
->getQuery();
$results = $query
->condition('role_id', $role1
->id())
->execute();
$this
->assertIsArray($results, "Results are not available. Not an array");
$this
->assertEqual(count($results), 1, "One result expected.");
$config = $this->defaultStorage
->load(current($results));
$config_id = $config
->id();
$role1
->delete();
$config = NULL;
$query = $this->defaultStorage
->getQuery();
$results = $query
->condition('id', $config_id)
->execute();
$this
->assertEqual(count($results), 0, "Zero results expected.");
}
}