@@ -12,6 +12,7 @@ import { ALREADY_INITIALIZED_ERROR, ALREADY_INJECTED_ERROR } from './errors';
12
12
import { MatomoHolder } from './holder' ;
13
13
import { MatomoInitializerService } from './matomo-initializer.service' ;
14
14
import { MatomoTracker , NoopMatomoTracker } from './matomo-tracker.service' ;
15
+ import { NgxMatomoTrackerModule } from './ngx-matomo-tracker.module' ;
15
16
import {
16
17
createDefaultMatomoScriptElement ,
17
18
MATOMO_SCRIPT_FACTORY ,
@@ -452,6 +453,39 @@ describe('MatomoInitializerService', () => {
452
453
expect ( injectedScript ?. dataset . cookieconsent ) . toEqual ( 'statistics' ) ;
453
454
} ) ;
454
455
456
+ it ( 'should create custom script tag with forRoot factory' , ( ) => {
457
+ // Given
458
+ let injectedScript : HTMLScriptElement | undefined ;
459
+
460
+ setUpScriptInjection ( script => ( injectedScript = script ) ) ;
461
+
462
+ TestBed . configureTestingModule ( {
463
+ imports : [
464
+ NgxMatomoTrackerModule . forRoot (
465
+ {
466
+ siteId : 1 ,
467
+ trackerUrl : '' ,
468
+ scriptUrl : '/fake/script/url' ,
469
+ } as MatomoConfiguration ,
470
+ ( scriptUrl , document ) => {
471
+ const script = createDefaultMatomoScriptElement ( scriptUrl , document ) ;
472
+
473
+ script . setAttribute ( 'data-cookieconsent' , 'statistics' ) ;
474
+
475
+ return script ;
476
+ }
477
+ ) ,
478
+ ] ,
479
+ } ) ;
480
+
481
+ // Inject service to trigger initialization on module init
482
+ TestBed . inject ( MatomoInitializerService ) ;
483
+
484
+ // Then
485
+ expect ( injectedScript ?. src ) . toMatch ( '^(.+://[^/]+)?/fake/script/url$' ) ;
486
+ expect ( injectedScript ?. dataset . cookieconsent ) . toEqual ( 'statistics' ) ;
487
+ } ) ;
488
+
455
489
it ( 'should defer script injection until tracker configuration is provided' , ( ) => {
456
490
// Given
457
491
let injectedScript : HTMLScriptElement | undefined ;
0 commit comments