Commit c4673be3 authored by Youri van Koppen's avatar Youri van Koppen
Browse files

Issue #3262029 by MegaChriz: Page "Delete all custom rules" fails with error

parent 37db3c73
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -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'
+6 −3
Original line number Diff line number Diff line
@@ -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);
  }

+32 −0
Original line number Diff line number Diff line
@@ -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.
   *