From 22ad327422f02b350c77be3930f1d068c7421b77 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Tue, 23 May 2023 19:57:50 -0700 Subject: [PATCH] RegionTest - Update to handle variations on es module loading --- tests/phpunit/CRM/Core/RegionTest.php | 60 ++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/tests/phpunit/CRM/Core/RegionTest.php b/tests/phpunit/CRM/Core/RegionTest.php index 50c3732610..e46f6f5c1a 100644 --- a/tests/phpunit/CRM/Core/RegionTest.php +++ b/tests/phpunit/CRM/Core/RegionTest.php @@ -113,14 +113,6 @@ class CRM_Core_RegionTest extends CiviUnitTestCase { CRM_Core_Region::instance('testAllTypes')->add([ 'jquery' => '$("div");', ]); - CRM_Core_Region::instance('testAllTypes')->add([ - 'scriptUrl' => '/my%20module.mjs', - 'esm' => TRUE, - ]); - CRM_Core_Region::instance('testAllTypes')->add([ - 'script' => 'import foo from "./foobar.mjs";', - 'esm' => TRUE, - ]); CRM_Core_Region::instance('testAllTypes')->add([ 'styleUrl' => '/foo%20bar.css', ]); @@ -139,13 +131,61 @@ class CRM_Core_RegionTest extends CiviUnitTestCase { . "\n" . "\n" . "\n" - . "\n" - . "\n" . "\n" . "\n"; $this->assertEquals($expected, $actual); } + public function esmLoaders(): array { + return [ + ['browser'], + ['shim-slow'], + ['shim-fast'], + ]; + } + + /** + * @dataProvider esmLoaders + * @param string $loader + */ + public function testEsm(string $loader) { + Civi::settings()->set('esm_loader', $loader); + + $expected = []; + $expected['browser'] = "default
" . + "\n" + . "\n"; + $expected['shim-fast'] = $expected['browser']; + $expected['shim-slow'] = "default
" . + "\n" + . "\n"; + + CRM_Core_Region::instance('testEsm')->add([ + 'scriptUrl' => '/my%20module.mjs', + 'esm' => TRUE, + ]); + CRM_Core_Region::instance('testEsm')->add([ + 'script' => 'import foo from "./foobar.mjs";', + 'esm' => TRUE, + ]); + + $smarty = CRM_Core_Smarty::singleton(); + $actual = $smarty->fetch('string:{crmRegion name=testEsm}default
{/crmRegion}'); + $this->assertEquals($expected[$loader], $actual); + + $header = CRM_Core_Region::instance('html-header')->render(''); + switch ($loader) { + case 'shim-fast': + case 'shim-slow': + $this->assertTrue(str_contains($header, 'es-module-shims'), 'HTML header should have shim'); + break; + + default: + $this->assertFalse(str_contains($header, 'es-module-shims'), 'HTML header should not have shim'); + break; + } + } + /** * Test of nested arrangement in which one {crmRegion} directly includes another {crmRegion} */ -- 2.25.1