google_tag-8.x-1.x-dev/tests/src/Kernel/Migrate/TagContainerUpdateTest.php
tests/src/Kernel/Migrate/TagContainerUpdateTest.php
<?php
namespace Drupal\Tests\google_tag\Kernel\Migrate;
use Drupal\Tests\google_tag\Kernel\GoogleTagTestCase;
/**
* Tests hook update for migrating 1.x container entities to 2.x.
*
* @group google_tag
*/
class TagContainerUpdateTest extends GoogleTagTestCase {
/**
* Container entity id 1.
*/
protected const CONTAINER_1 = 'test_gtm_1';
/**
* Container entity id 2.
*/
protected const CONTAINER_2 = 'test_gtm_2';
/**
* {@inheritdoc}
*/
protected static $modules = [
'node',
'taxonomy',
'language',
];
/**
* Tests that entities are migrated and google tag settings are migrated.
*
* @covers ::google_tag_update_8201
*
* @throws \Exception
*/
public function testEntitiesExist(): void {
$this->loadFixture('container_migrate.php');
$this->container->get('module_handler')->loadInclude('google_tag', 'install');
$sandbox = [];
google_tag_update_8201($sandbox);
$gtag_settings = $this->container->get('config.factory')->get('google_tag.settings');
self::assertEquals(self::CONTAINER_1, $gtag_settings->get('default_google_tag_entity'));
self::assertTrue($gtag_settings->get('use_collection'));
$google_tag_storage = $this->container->get('entity_type.manager')->getStorage('google_tag_container');
$tag_container1 = $google_tag_storage->load(self::CONTAINER_1);
$tag_container2 = $google_tag_storage->load(self::CONTAINER_2);
foreach ([$tag_container1, $tag_container2] as $container) {
self::assertNotEmpty($container->get('tag_container_ids'));
self::assertNull($container->get('container_id'));
self::assertArrayHasKey('gtm', $container->get('advanced_settings'));
self::assertNotEmpty($container->get('events'));
$conditions = $container->get('conditions');
self::assertNotEmpty($conditions);
self::assertArrayHasKey('response_code', $conditions, 'Custom response code logic is migrated into conditions.');
self::assertArrayNotHasKey('gtag_language', $conditions, 'Old conditions from 1.x are removed.');
self::assertArrayHasKey('user_role', $conditions, 'Custom user role logic is converted into conditions.');
self::assertArrayHasKey('request_path', $conditions, 'Custom request path role is converted into conditions');
}
}
/**
* Tests that there are no changes to config.
*
* If there are no existing container entities.
*
* @throws \Exception
*/
public function testNoEntitiesExist(): void {
// Add the original google_tag 1.x config.
$this->loadFixture('container_migrate_settings.php');
$this->container->get('module_handler')->loadInclude('google_tag', 'install');
$sandbox = [];
google_tag_update_8201($sandbox);
/** @var \Drupal\Core\Config\ImmutableConfig $gtag_settings */
$gtag_settings = $this->container->get('config.factory')->get('google_tag.settings');
self::assertFalse($gtag_settings->get('use_collection'));
self::assertEquals('', $gtag_settings->get('default_google_tag_entity'));
self::assertEmpty($this->container->get('entity_type.manager')->getStorage('google_tag_container')->loadMultiple());
}
}
