You are here

public function BlockContentSaveTest::testDeterminingChanges in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/block_content/tests/src/Functional/BlockContentSaveTest.php \Drupal\Tests\block_content\Functional\BlockContentSaveTest::testDeterminingChanges()

Tests determining changes in hook_block_presave().

Verifies the static block load cache is cleared upon save.

File

core/modules/block_content/tests/src/Functional/BlockContentSaveTest.php, line 70

Class

BlockContentSaveTest
Tests $block_content->save() for saving content.

Namespace

Drupal\Tests\block_content\Functional

Code

public function testDeterminingChanges() {

  // Initial creation.
  $block = $this
    ->createBlockContent('test_changes');
  $this
    ->assertEquals(REQUEST_TIME, $block
    ->getChangedTime(), 'Creating a block sets default "changed" timestamp.');

  // Update the block without applying changes.
  $block
    ->save();
  $this
    ->assertEquals('test_changes', $block
    ->label(), 'No changes have been determined.');

  // Apply changes.
  $block
    ->setInfo('updated');
  $block
    ->save();

  // The hook implementations block_content_test_block_content_presave() and
  // block_content_test_block_content_update() determine changes and change
  // the title as well as programmatically set the 'changed' timestamp.
  $this
    ->assertEquals('updated_presave_update', $block
    ->label(), 'Changes have been determined.');
  $this
    ->assertEquals(979534800, $block
    ->getChangedTime(), 'Saving a custom block uses "changed" timestamp set in presave hook.');

  // Test the static block load cache to be cleared.
  $block = BlockContent::load($block
    ->id());
  $this
    ->assertEquals('updated_presave', $block
    ->label(), 'Static cache has been cleared.');
}