Chris@17: 'default', Chris@17: 'label' => 'Default', Chris@17: ])->save(); Chris@17: $this->account = $this->drupalCreateUser(['administer entity_test content']); Chris@17: $this->drupalLogin($this->account); Chris@17: } Chris@17: Chris@17: /** Chris@17: * Tests the delete form for translatable entities. Chris@17: */ Chris@17: public function testTranslatableEntities() { Chris@17: ConfigurableLanguage::create(['id' => 'es'])->save(); Chris@17: ConfigurableLanguage::create(['id' => 'fr'])->save(); Chris@17: Chris@17: $selection = []; Chris@17: Chris@17: $entity1 = EntityTestMulRevPub::create(['type' => 'default', 'name' => 'entity1']); Chris@17: $entity1->addTranslation('es', ['name' => 'entity1 spanish']); Chris@17: $entity1->addTranslation('fr', ['name' => 'entity1 french']); Chris@17: $entity1->save(); Chris@17: $selection[$entity1->id()]['en'] = 'en'; Chris@17: Chris@17: $entity2 = EntityTestMulRevPub::create(['type' => 'default', 'name' => 'entity2']); Chris@17: $entity2->addTranslation('es', ['name' => 'entity2 spanish']); Chris@17: $entity2->addTranslation('fr', ['name' => 'entity2 french']); Chris@17: $entity2->save(); Chris@17: $selection[$entity2->id()]['es'] = 'es'; Chris@17: $selection[$entity2->id()]['fr'] = 'fr'; Chris@17: Chris@17: $entity3 = EntityTestMulRevPub::create(['type' => 'default', 'name' => 'entity3']); Chris@17: $entity3->addTranslation('es', ['name' => 'entity3 spanish']); Chris@17: $entity3->addTranslation('fr', ['name' => 'entity3 french']); Chris@17: $entity3->save(); Chris@17: $selection[$entity3->id()]['fr'] = 'fr'; Chris@17: Chris@17: // This entity will be inaccessible because of Chris@17: // Drupal\entity_test\EntityTestAccessControlHandler. Chris@17: $entity4 = EntityTestMulRevPub::create(['type' => 'default', 'name' => 'forbid_access']); Chris@17: $entity4->save(); Chris@17: $selection[$entity4->id()]['en'] = 'en'; Chris@17: Chris@17: // Add the selection to the tempstore just like DeleteAction would. Chris@17: $tempstore = \Drupal::service('tempstore.private')->get('entity_delete_multiple_confirm'); Chris@17: $tempstore->set($this->account->id() . ':entity_test_mulrevpub', $selection); Chris@17: Chris@17: $this->drupalGet('/entity_test/delete'); Chris@17: $assert = $this->assertSession(); Chris@17: $assert->statusCodeEquals(200); Chris@17: $assert->elementTextContains('css', '.page-title', 'Are you sure you want to delete these test entity - revisions, data table, and published interface entities?'); Chris@17: $list_selector = '#entity-test-mulrevpub-delete-multiple-confirm-form > div.item-list > ul'; Chris@17: $assert->elementTextContains('css', $list_selector, 'entity1 (Original translation) - The following test entity - revisions, data table, and published interface translations will be deleted:'); Chris@17: $assert->elementTextContains('css', $list_selector, 'entity2 spanish'); Chris@17: $assert->elementTextContains('css', $list_selector, 'entity2 french'); Chris@17: $assert->elementTextNotContains('css', $list_selector, 'entity3 spanish'); Chris@17: $assert->elementTextContains('css', $list_selector, 'entity3 french'); Chris@17: $delete_button = $this->getSession()->getPage()->findButton('Delete'); Chris@17: $delete_button->click(); Chris@17: $assert = $this->assertSession(); Chris@17: $assert->addressEquals('/user/' . $this->account->id()); Chris@17: $assert->responseContains('Deleted 6 items.'); Chris@17: $assert->responseContains('1 item has not been deleted because you do not have the necessary permissions.'); Chris@17: Chris@17: \Drupal::entityTypeManager()->getStorage('entity_test_mulrevpub')->resetCache(); Chris@17: $remaining_entities = EntityTestMulRevPub::loadMultiple([$entity1->id(), $entity2->id(), $entity3->id(), $entity4->id()]); Chris@17: $this->assertCount(3, $remaining_entities); Chris@17: } Chris@17: Chris@17: /** Chris@17: * Tests the delete form for untranslatable entities. Chris@17: */ Chris@17: public function testUntranslatableEntities() { Chris@17: $selection = []; Chris@17: Chris@17: $entity1 = EntityTestRev::create(['type' => 'default', 'name' => 'entity1']); Chris@17: $entity1->save(); Chris@17: $selection[$entity1->id()]['en'] = 'en'; Chris@17: Chris@17: $entity2 = EntityTestRev::create(['type' => 'default', 'name' => 'entity2']); Chris@17: $entity2->save(); Chris@17: $selection[$entity2->id()]['en'] = 'en'; Chris@17: Chris@17: // This entity will be inaccessible because of Chris@17: // Drupal\entity_test\EntityTestAccessControlHandler. Chris@17: $entity3 = EntityTestRev::create(['type' => 'default', 'name' => 'forbid_access']); Chris@17: $entity3->save(); Chris@17: $selection[$entity3->id()]['en'] = 'en'; Chris@17: Chris@17: // This entity will be inaccessible because of Chris@17: // Drupal\entity_test\EntityTestAccessControlHandler. Chris@17: $entity4 = EntityTestRev::create(['type' => 'default', 'name' => 'forbid_access']); Chris@17: $entity4->save(); Chris@17: $selection[$entity4->id()]['en'] = 'en'; Chris@17: Chris@17: // Add the selection to the tempstore just like DeleteAction would. Chris@17: $tempstore = \Drupal::service('tempstore.private')->get('entity_delete_multiple_confirm'); Chris@17: $tempstore->set($this->account->id() . ':entity_test_rev', $selection); Chris@17: Chris@17: $this->drupalGet('/entity_test_rev/delete_multiple'); Chris@17: $assert = $this->assertSession(); Chris@17: $assert->statusCodeEquals(200); Chris@17: $assert->elementTextContains('css', '.page-title', 'Are you sure you want to delete these test entity - revisions entities?'); Chris@17: $list_selector = '#entity-test-rev-delete-multiple-confirm-form > div.item-list > ul'; Chris@17: $assert->elementTextContains('css', $list_selector, 'entity1'); Chris@17: $assert->elementTextContains('css', $list_selector, 'entity2'); Chris@17: $delete_button = $this->getSession()->getPage()->findButton('Delete'); Chris@17: $delete_button->click(); Chris@17: $assert = $this->assertSession(); Chris@17: $assert->addressEquals('/user/' . $this->account->id()); Chris@17: $assert->responseContains('Deleted 2 items.'); Chris@17: $assert->responseContains('2 items have not been deleted because you do not have the necessary permissions.'); Chris@17: Chris@17: \Drupal::entityTypeManager()->getStorage('entity_test_mulrevpub')->resetCache(); Chris@17: $remaining_entities = EntityTestRev::loadMultiple([$entity1->id(), $entity2->id(), $entity3->id(), $entity4->id()]); Chris@17: $this->assertCount(2, $remaining_entities); Chris@17: } Chris@17: Chris@17: }