X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fcontent_moderation%2Ftests%2Fsrc%2FKernel%2FModerationStateFieldItemListTest.php;h=c4770166408cc93644ed4719fc8776503e0797e2;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hp=6281ab82bfa0f18603bb42a08e8647911a380963;hpb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;p=yaffs-website diff --git a/web/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php b/web/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php index 6281ab82b..c47701664 100644 --- a/web/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php +++ b/web/core/modules/content_moderation/tests/src/Kernel/ModerationStateFieldItemListTest.php @@ -43,6 +43,10 @@ class ModerationStateFieldItemListTest extends KernelTestBase { $this->installEntitySchema('content_moderation_state'); $this->installConfig('content_moderation'); + NodeType::create([ + 'type' => 'unmoderated', + ])->save(); + $node_type = NodeType::create([ 'type' => 'example', ]); @@ -79,6 +83,51 @@ class ModerationStateFieldItemListTest extends KernelTestBase { $this->assertEquals(['draft'], $states); } + /** + * @covers ::getValue + */ + public function testGetValue() { + $this->assertEquals([['value' => 'draft']], $this->testNode->moderation_state->getValue()); + } + + /** + * @covers ::get + */ + public function testGet() { + $this->assertEquals('draft', $this->testNode->moderation_state->get(0)->value); + $this->setExpectedException(\InvalidArgumentException::class); + $this->testNode->moderation_state->get(2); + } + + /** + * Tests the computed field when it is unset or set to an empty value. + */ + public function testSetEmptyState() { + $this->testNode->moderation_state->value = ''; + $this->assertEquals('draft', $this->testNode->moderation_state->value); + + $this->testNode->moderation_state = ''; + $this->assertEquals('draft', $this->testNode->moderation_state->value); + + unset($this->testNode->moderation_state); + $this->assertEquals('draft', $this->testNode->moderation_state->value); + } + + /** + * Test the list class with a non moderated entity. + */ + public function testNonModeratedEntity() { + $unmoderated_node = Node::create([ + 'type' => 'unmoderated', + 'title' => 'Test title', + ]); + $unmoderated_node->save(); + $this->assertEquals(0, $unmoderated_node->moderation_state->count()); + + $unmoderated_node->moderation_state = NULL; + $this->assertEquals(0, $unmoderated_node->moderation_state->count()); + } + /** * Tests that moderation state changes also change the related entity state. */ @@ -124,4 +173,15 @@ class ModerationStateFieldItemListTest extends KernelTestBase { $this->assertTrue($test_node->isPublished()); } + /** + * Test the moderation_state field after an entity has been serialized. + */ + public function testEntityUnserialize() { + $this->testNode->moderation_state->value = 'draft'; + $unserialized = unserialize(serialize($this->testNode)); + + $this->assertEquals('Test title', $unserialized->title->value); + $this->assertEquals('draft', $unserialized->moderation_state->value); + } + }