depcalc-8.x-1.x-dev/tests/src/Kernel/HashCalculatorTest.php
tests/src/Kernel/HashCalculatorTest.php
<?php namespace Drupal\Tests\depcalc\Kernel; use Drupal\depcalc\DependentEntityWrapper; use Drupal\KernelTests\KernelTestBase; use Drupal\language\Entity\ConfigurableLanguage; use Drupal\Tests\node\Traits\ContentTypeCreationTrait; use Drupal\Tests\node\Traits\NodeCreationTrait; /** * Test Hash Calculation in different scenarios. * * @group depcalc */ class HashCalculatorTest extends KernelTestBase { use ContentTypeCreationTrait; use NodeCreationTrait; /** * {@inheritdoc} */ protected static $modules = [ 'content_translation', 'depcalc', 'field', 'filter', 'language', 'node', 'text', 'user', 'system', ]; /** * The entity. * * @var \Drupal\Core\Entity\EntityInterface */ protected $entity; /** * {@inheritdoc} * * @throws \Drupal\Core\Entity\EntityStorageException */ protected function setUp(): void { parent::setUp(); $this->installEntitySchema('user'); $this->installEntitySchema('node'); $this->installSchema('node', ['node_access']); $this->installEntitySchema('configurable_language'); $this->installConfig( [ 'filter', 'node', 'language', ] ); ConfigurableLanguage::createFromLangcode('hi')->save(); $this->createContentType( [ 'type' => 'article', ] ); $this->entity = $this->createNode( [ 'type' => 'article', 'title' => 'My article', ] ); } /** * Tests the hash with no translation. */ public function testHashWithNoTranslation(): void { $dependentEntityWrapper = new DependentEntityWrapper($this->entity); $this->entity->set('title', 'Article updated.')->save(); $dependentEntityWrapper1 = new DependentEntityWrapper($this->entity); $this->assertNotSame($dependentEntityWrapper1->getHash(), $dependentEntityWrapper->getHash()); } /** * Tests the hash with translation. */ public function testHashWithTranslation(): void { $dependentEntityWrapper = new DependentEntityWrapper($this->entity); $this->entity->addTranslation( 'hi', [ 'title' => 'My article Hindi', ] ); $dependentEntityWrapper1 = new DependentEntityWrapper($this->entity); $this->assertNotSame($dependentEntityWrapper1->getHash(), $dependentEntityWrapper->getHash()); $entity = $this->entity->getTranslation('hi'); $entity->set('title', 'My article Hindi Updated')->save(); $dependentEntityWrapper2 = new DependentEntityWrapper($entity); $this->assertNotSame($dependentEntityWrapper2->getHash(), $dependentEntityWrapper1->getHash()); $this->entity->removeTranslation('hi'); $dependentEntityWrapper3 = new DependentEntityWrapper($this->entity); $this->assertNotSame($dependentEntityWrapper3->getHash(), $dependentEntityWrapper1->getHash()); } /** * Tests hash calculation for config entities. */ public function testHashWithConfigEntity(): void { $test_content_type = $this->createContentType( [ 'type' => 'test', 'name' => 'Test content type', ] ); $test_content_type->save(); $dependentEntityWrapper1 = new DependentEntityWrapper($test_content_type); $test_content_type->set('name', 'Test content type updated')->save(); $dependentEntityWrapper2 = new DependentEntityWrapper($test_content_type); $this->assertNotSame($dependentEntityWrapper1->getHash(), $dependentEntityWrapper2->getHash()); } }