[CST-18964] add tests

This commit is contained in:
Andrea Barbasso
2025-02-05 17:05:18 +01:00
parent 2225c2e428
commit fd2120904c
3 changed files with 74 additions and 1 deletions

View File

@@ -36,6 +36,8 @@ import { ViewMode } from '../view-mode.model';
import { SearchService } from './search.service'; import { SearchService } from './search.service';
import { SearchConfigurationService } from './search-configuration.service'; import { SearchConfigurationService } from './search-configuration.service';
import anything = jasmine.anything; import anything = jasmine.anything;
import { MatomoTestingModule } from 'ngx-matomo-client/testing';
@Component({ @Component({
template: '', template: '',
@@ -55,6 +57,7 @@ describe('SearchService', () => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
CommonModule, CommonModule,
MatomoTestingModule.forRoot(),
RouterTestingModule.withRoutes([ RouterTestingModule.withRoutes([
{ path: 'search', component: DummyComponent, pathMatch: 'full' }, { path: 'search', component: DummyComponent, pathMatch: 'full' },
]), ]),
@@ -122,6 +125,7 @@ describe('SearchService', () => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
CommonModule, CommonModule,
MatomoTestingModule.forRoot(),
RouterTestingModule.withRoutes([ RouterTestingModule.withRoutes([
{ path: 'search', component: DummyComponent, pathMatch: 'full' }, { path: 'search', component: DummyComponent, pathMatch: 'full' },
]), ]),

View File

@@ -1,16 +1,84 @@
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import {
MatomoInitializerService,
MatomoTracker,
} from 'ngx-matomo-client';
import { MatomoTestingModule } from 'ngx-matomo-client/testing';
import { of } from 'rxjs';
import { environment } from '../../environments/environment';
import {
NativeWindowRef,
NativeWindowService,
} from '../core/services/window.service';
import { OrejimeService } from '../shared/cookies/orejime.service';
import { MatomoService } from './matomo.service'; import { MatomoService } from './matomo.service';
describe('MatomoService', () => { describe('MatomoService', () => {
let service: MatomoService; let service: MatomoService;
let matomoTracker: jasmine.SpyObj<MatomoTracker>;
let matomoInitializer: jasmine.SpyObj<MatomoInitializerService>;
let orejimeService: jasmine.SpyObj<OrejimeService>;
let nativeWindowService: jasmine.SpyObj<NativeWindowRef>;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({}); matomoTracker = jasmine.createSpyObj('MatomoTracker', ['setConsentGiven', 'forgetConsentGiven']);
matomoInitializer = jasmine.createSpyObj('MatomoInitializerService', ['initializeTracker']);
orejimeService = jasmine.createSpyObj('OrejimeService', ['getSavedPreferences']);
nativeWindowService = jasmine.createSpyObj('NativeWindowService', [], { nativeWindow: {} });
TestBed.configureTestingModule({
imports: [MatomoTestingModule.forRoot()],
providers: [
{ provide: MatomoTracker, useValue: matomoTracker },
{ provide: MatomoInitializerService, useValue: matomoInitializer },
{ provide: OrejimeService, useValue: orejimeService },
{ provide: NativeWindowService, useValue: nativeWindowService },
],
});
service = TestBed.inject(MatomoService); service = TestBed.inject(MatomoService);
}); });
it('should be created', () => { it('should be created', () => {
expect(service).toBeTruthy(); expect(service).toBeTruthy();
}); });
it('should set changeMatomoConsent on native window', () => {
orejimeService.getSavedPreferences.and.returnValue(of({ matomo: true }));
service.init();
expect(nativeWindowService.nativeWindow.changeMatomoConsent).toBe(service.changeMatomoConsent);
});
it('should initialize tracker with correct parameters in production', () => {
environment.production = true;
environment.matomo = { siteId: '1', trackerUrl: 'http://example.com' };
orejimeService.getSavedPreferences.and.returnValue(of({ matomo: true }));
service.init();
expect(matomoTracker.setConsentGiven).toHaveBeenCalled();
expect(matomoInitializer.initializeTracker).toHaveBeenCalledWith({
siteId: '1',
trackerUrl: 'http://example.com',
});
});
it('should not initialize tracker if not in production', () => {
environment.production = false;
service.init();
expect(matomoInitializer.initializeTracker).not.toHaveBeenCalled();
});
it('should call setConsentGiven when consent is true', () => {
service.changeMatomoConsent(true);
expect(matomoTracker.setConsentGiven).toHaveBeenCalled();
});
it('should call forgetConsentGiven when consent is false', () => {
service.changeMatomoConsent(false);
expect(matomoTracker.forgetConsentGiven).toHaveBeenCalled();
});
}); });

View File

@@ -1,3 +1,4 @@
export class MockMatomoTracker { export class MockMatomoTracker {
trackSiteSearch = () => {}; trackSiteSearch = () => {};
trackPageView = () => {};
} }