Skip to content

Commit c31342b

Browse files
committed
fix(tracker): fix custom script factory provider
fixes #56
1 parent 4e92fe7 commit c31342b

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

projects/tracker/src/lib/matomo-initializer.service.spec.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { ALREADY_INITIALIZED_ERROR, ALREADY_INJECTED_ERROR } from './errors';
1212
import { MatomoHolder } from './holder';
1313
import { MatomoInitializerService } from './matomo-initializer.service';
1414
import { MatomoTracker, NoopMatomoTracker } from './matomo-tracker.service';
15+
import { NgxMatomoTrackerModule } from './ngx-matomo-tracker.module';
1516
import {
1617
createDefaultMatomoScriptElement,
1718
MATOMO_SCRIPT_FACTORY,
@@ -452,6 +453,39 @@ describe('MatomoInitializerService', () => {
452453
expect(injectedScript?.dataset.cookieconsent).toEqual('statistics');
453454
});
454455

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+
455489
it('should defer script injection until tracker configuration is provided', () => {
456490
// Given
457491
let injectedScript: HTMLScriptElement | undefined;

projects/tracker/src/lib/ngx-matomo-tracker.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class NgxMatomoTrackerModule {
2828
const providers: Provider[] = [{ provide: MATOMO_CONFIGURATION, useValue: config }];
2929

3030
if (scriptFactory) {
31-
providers.push({ provide: MATOMO_SCRIPT_FACTORY, useFactory: scriptFactory });
31+
providers.push({ provide: MATOMO_SCRIPT_FACTORY, useValue: scriptFactory });
3232
}
3333

3434
return {

0 commit comments

Comments
 (0)