function ContentModerationStateStorageSchemaTest::testUniqueKeys

Same name in other branches
  1. 9 core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php \Drupal\Tests\content_moderation\Kernel\ContentModerationStateStorageSchemaTest::testUniqueKeys()
  2. 8.9.x core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php \Drupal\Tests\content_moderation\Kernel\ContentModerationStateStorageSchemaTest::testUniqueKeys()
  3. 11.x core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php \Drupal\Tests\content_moderation\Kernel\ContentModerationStateStorageSchemaTest::testUniqueKeys()

Tests the ContentModerationState unique keys.

@covers ::getEntitySchema

File

core/modules/content_moderation/tests/src/Kernel/ContentModerationStateStorageSchemaTest.php, line 63

Class

ContentModerationStateStorageSchemaTest
Test the ContentModerationState storage schema.

Namespace

Drupal\Tests\content_moderation\Kernel

Code

public function testUniqueKeys() : void {
    // Create a node which will create a new ContentModerationState entity.
    $node = Node::create([
        'title' => 'Test title',
        'type' => 'example',
        'moderation_state' => 'draft',
    ]);
    $node->save();
    // Ensure an exception when all values match.
    $this->assertStorageException([
        'content_entity_type_id' => $node->getEntityTypeId(),
        'content_entity_id' => $node->id(),
        'content_entity_revision_id' => $node->getRevisionId(),
    ], TRUE);
    // No exception for the same values, with a different langcode.
    $this->assertStorageException([
        'content_entity_type_id' => $node->getEntityTypeId(),
        'content_entity_id' => $node->id(),
        'content_entity_revision_id' => $node->getRevisionId(),
        'langcode' => 'de',
    ], FALSE);
    // A different workflow should not trigger an exception.
    $this->assertStorageException([
        'content_entity_type_id' => $node->getEntityTypeId(),
        'content_entity_id' => $node->id(),
        'content_entity_revision_id' => $node->getRevisionId(),
        'workflow' => 'foo',
    ], FALSE);
    // Different entity types should not trigger an exception.
    $this->assertStorageException([
        'content_entity_type_id' => 'entity_test',
        'content_entity_id' => $node->id(),
        'content_entity_revision_id' => $node->getRevisionId(),
    ], FALSE);
    // Different entity and revision IDs should not trigger an exception.
    $this->assertStorageException([
        'content_entity_type_id' => $node->getEntityTypeId(),
        'content_entity_id' => 9999,
        'content_entity_revision_id' => 9999,
    ], FALSE);
    // Creating a version of the entity with a previously used, but not current
    // revision ID should trigger an exception.
    $old_revision_id = $node->getRevisionId();
    $node->setNewRevision(TRUE);
    $node->title = 'Updated title';
    $node->moderation_state = 'published';
    $node->save();
    $this->assertStorageException([
        'content_entity_type_id' => $node->getEntityTypeId(),
        'content_entity_id' => $node->id(),
        'content_entity_revision_id' => $old_revision_id,
    ], TRUE);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.