3 namespace Drupal\KernelTests\Core\Action;
5 use Drupal\Core\Action\Plugin\Action\Derivative\EntityPublishedActionDeriver;
6 use Drupal\entity_test\Entity\EntityTestMulRevPub;
7 use Drupal\KernelTests\KernelTestBase;
8 use Drupal\system\Entity\Action;
13 class PublishActionTest extends KernelTestBase {
18 public static $modules = ['system', 'entity_test', 'user'];
23 protected function setUp() {
25 $this->installEntitySchema('entity_test_mulrevpub');
29 * @covers \Drupal\Core\Action\Plugin\Action\Derivative\EntityPublishedActionDeriver::getDerivativeDefinitions
31 public function testGetDerivativeDefinitions() {
32 $deriver = new EntityPublishedActionDeriver(\Drupal::entityTypeManager());
33 $this->assertArraySubset([
34 'entity_test_mulrevpub' => [
35 'type' => 'entity_test_mulrevpub',
36 'label' => 'Save test entity - revisions, data table, and published interface',
37 'action_label' => 'Save',
39 ], $deriver->getDerivativeDefinitions([
40 'action_label' => 'Save',
45 * @covers \Drupal\Core\Action\Plugin\Action\PublishAction::execute
47 public function testPublishAction() {
48 $entity = EntityTestMulRevPub::create(['name' => 'test']);
49 $entity->setUnpublished()->save();
51 $action = Action::create([
52 'id' => 'entity_publish_action',
53 'plugin' => 'entity:publish_action:entity_test_mulrevpub',
56 $this->assertFalse($entity->isPublished());
57 $action->execute([$entity]);
58 $this->assertTrue($entity->isPublished());
59 $this->assertArraySubset(['module' => ['entity_test']], $action->getDependencies());
63 * @covers \Drupal\Core\Action\Plugin\Action\UnpublishAction::execute
65 public function testUnpublishAction() {
66 $entity = EntityTestMulRevPub::create(['name' => 'test']);
67 $entity->setPublished()->save();
69 $action = Action::create([
70 'id' => 'entity_unpublish_action',
71 'plugin' => 'entity:unpublish_action:entity_test_mulrevpub',
74 $this->assertTrue($entity->isPublished());
75 $action->execute([$entity]);
76 $this->assertFalse($entity->isPublished());
77 $this->assertArraySubset(['module' => ['entity_test']], $action->getDependencies());