Version 1
[yaffs-website] / web / core / modules / content_moderation / tests / src / Kernel / StateFormatterTest.php
diff --git a/web/core/modules/content_moderation/tests/src/Kernel/StateFormatterTest.php b/web/core/modules/content_moderation/tests/src/Kernel/StateFormatterTest.php
new file mode 100644 (file)
index 0000000..b45b34e
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+
+namespace Drupal\Tests\content_moderation\Kernel;
+
+use Drupal\Core\Render\RenderContext;
+use Drupal\entity_test\Entity\EntityTestRev;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\workflows\Entity\Workflow;
+
+/**
+ * Test the state field formatter.
+ *
+ * @group content_moderation
+ */
+class StateFormatterTest extends KernelTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = [
+    'workflows',
+    'content_moderation',
+    'entity_test',
+    'user',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installEntitySchema('entity_test_rev');
+    $this->installEntitySchema('content_moderation_state');
+    $this->installConfig('content_moderation');
+
+    $workflow = Workflow::load('editorial');
+    $workflow->getTypePlugin()->addEntityTypeAndBundle('entity_test_rev', 'entity_test_rev');
+    $workflow->save();
+  }
+
+  /**
+   * Test the embed field.
+   *
+   * @dataProvider formatterTestCases
+   */
+  public function testStateFieldFormatter($field_value, $formatter_settings, $expected_output) {
+    $entity = EntityTestRev::create([
+      'moderation_state' => $field_value,
+    ]);
+    $entity->save();
+
+    $field_output = $this->container->get('renderer')->executeInRenderContext(new RenderContext(), function() use ($entity, $formatter_settings) {
+      return $entity->moderation_state->view($formatter_settings);
+    });
+
+    $this->assertEquals($expected_output, $field_output[0]);
+  }
+
+  /**
+   * Test cases for ::
+   */
+  public function formatterTestCases() {
+    return [
+      'Draft State' => [
+        'draft',
+        [
+          'type' => 'content_moderation_state',
+          'settings' => [],
+        ],
+        [
+          '#markup' => 'Draft',
+        ],
+      ],
+      'Published State' => [
+        'published',
+        [
+          'type' => 'content_moderation_state',
+          'settings' => [],
+        ],
+        [
+          '#markup' => 'Published',
+        ],
+      ],
+    ];
+  }
+
+}