Loading rng.routing.yml +0 −4 Original line number Diff line number Diff line Loading @@ -194,10 +194,6 @@ entity.rng_event_type.access_defaults.delete_all: _title: 'Delete all event custom rules' requirements: _permission: 'administer event types' options: parameters: rng_event_type_rule: type: 'entity:rng_event_type_rule' rng.rng_event_type.overview: path: '/admin/structure/rng/event_types' Loading src/Form/EventTypeRuleDeleteAll.php +6 −3 Original line number Diff line number Diff line Loading @@ -92,15 +92,18 @@ class EventTypeRuleDeleteAll extends ConfirmFormBase { */ public function getCancelUrl() { return Url::fromRoute('entity.rng_event_type.access_defaults', [ 'event_type' => $this->eventType->id(), 'rng_event_type' => $this->eventType->id(), ]); } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state, EventTypeInterface $event_type = NULL) { $this->eventType = $event_type; public function buildForm(array $form, FormStateInterface $form_state, EventTypeInterface $rng_event_type = NULL) { if (!$rng_event_type instanceof EventTypeInterface) { throw new \InvalidArgumentException('Missing event_type context'); } $this->eventType = $rng_event_type; return parent::buildForm($form, $form_state); } Loading tests/src/Functional/RngEventAccessWebTest.php +32 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,38 @@ class RngEventAccessWebTest extends RngBrowserTestBase { $this->assertTrue(count($input) === 0, 'The create checkbox is not disabled.'); } /** * Tests deleting all overridden rules for events in the UI. */ public function testDeleteAllCustomRules() { $rule_storage = $this->container->get('entity_type.manager')->getStorage('rng_rule'); EventTypeForm::createDefaultRules('entity_test', 'entity_test'); // Create event and override rules. $event_meta = $this->createEventMeta(); $event_meta->addDefaultAccess(); // Assert that three rules exist now. $rules = $rule_storage->loadMultiple(); $this->assertCount(3, $rules); // Login as admin and go the page for deleting all custom rules. $admin = $this->drupalCreateUser(['administer event types']); $this->drupalLogin($admin); $this->drupalGet(Url::fromRoute('entity.rng_event_type.access_defaults.delete_all', [ 'rng_event_type' => 'entity_test.entity_test', ])); $this->submitForm([], 'Delete all existing access rules'); // Assert that no custom rules exist anymore. $rule_storage->resetCache(); $rules = $rule_storage->loadMultiple(); $this->assertCount(0, $rules); // Assert message in the UI. $this->assertSession()->pageTextContains('3 custom access rules deleted.'); } /** * Test access from event rules. * Loading Loading
rng.routing.yml +0 −4 Original line number Diff line number Diff line Loading @@ -194,10 +194,6 @@ entity.rng_event_type.access_defaults.delete_all: _title: 'Delete all event custom rules' requirements: _permission: 'administer event types' options: parameters: rng_event_type_rule: type: 'entity:rng_event_type_rule' rng.rng_event_type.overview: path: '/admin/structure/rng/event_types' Loading
src/Form/EventTypeRuleDeleteAll.php +6 −3 Original line number Diff line number Diff line Loading @@ -92,15 +92,18 @@ class EventTypeRuleDeleteAll extends ConfirmFormBase { */ public function getCancelUrl() { return Url::fromRoute('entity.rng_event_type.access_defaults', [ 'event_type' => $this->eventType->id(), 'rng_event_type' => $this->eventType->id(), ]); } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state, EventTypeInterface $event_type = NULL) { $this->eventType = $event_type; public function buildForm(array $form, FormStateInterface $form_state, EventTypeInterface $rng_event_type = NULL) { if (!$rng_event_type instanceof EventTypeInterface) { throw new \InvalidArgumentException('Missing event_type context'); } $this->eventType = $rng_event_type; return parent::buildForm($form, $form_state); } Loading
tests/src/Functional/RngEventAccessWebTest.php +32 −0 Original line number Diff line number Diff line Loading @@ -116,6 +116,38 @@ class RngEventAccessWebTest extends RngBrowserTestBase { $this->assertTrue(count($input) === 0, 'The create checkbox is not disabled.'); } /** * Tests deleting all overridden rules for events in the UI. */ public function testDeleteAllCustomRules() { $rule_storage = $this->container->get('entity_type.manager')->getStorage('rng_rule'); EventTypeForm::createDefaultRules('entity_test', 'entity_test'); // Create event and override rules. $event_meta = $this->createEventMeta(); $event_meta->addDefaultAccess(); // Assert that three rules exist now. $rules = $rule_storage->loadMultiple(); $this->assertCount(3, $rules); // Login as admin and go the page for deleting all custom rules. $admin = $this->drupalCreateUser(['administer event types']); $this->drupalLogin($admin); $this->drupalGet(Url::fromRoute('entity.rng_event_type.access_defaults.delete_all', [ 'rng_event_type' => 'entity_test.entity_test', ])); $this->submitForm([], 'Delete all existing access rules'); // Assert that no custom rules exist anymore. $rule_storage->resetCache(); $rules = $rule_storage->loadMultiple(); $this->assertCount(0, $rules); // Assert message in the UI. $this->assertSession()->pageTextContains('3 custom access rules deleted.'); } /** * Test access from event rules. * Loading