test: fix 15 failing unit tests

- Add missing TranslateService and LanguageService mock providers to OperationLogMigrationService tests (14 failures)
- Use safe property access (optional chaining) for androidInterface in CapacitorReminderService logging (1 failure)

All tests now passing: 6460 SUCCESS
This commit is contained in:
Johannes Millan 2026-01-20 15:10:36 +01:00
parent 292337ed6c
commit ff1f656dc2
3 changed files with 26 additions and 2 deletions

View file

@ -97,7 +97,7 @@ export class CapacitorReminderService {
triggerInMs: triggerAt - now,
triggerInMinutes: Math.round((triggerAt - now) / 1000 / 60),
isAndroidWebView: IS_ANDROID_WEB_VIEW,
hasNativeScheduler: !!androidInterface.scheduleNativeReminder,
hasNativeScheduler: !!androidInterface?.scheduleNativeReminder,
});
// On Android, use native AlarmManager for precision
@ -196,7 +196,7 @@ export class CapacitorReminderService {
Log.log('🚫 CapacitorReminderService.cancelReminder called', {
notificationId,
isAndroidWebView: IS_ANDROID_WEB_VIEW,
hasNativeCanceller: !!androidInterface.cancelNativeReminder,
hasNativeCanceller: !!androidInterface?.cancelNativeReminder,
});
// On Android, use native cancellation

View file

@ -1,10 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { MatDialog } from '@angular/material/dialog';
import { Store } from '@ngrx/store';
import { TranslateService } from '@ngx-translate/core';
import { OperationLogMigrationService } from './operation-log-migration.service';
import { OperationLogStoreService } from './operation-log-store.service';
import { LegacyPfDbService } from '../../core/persistence/legacy-pf-db.service';
import { ClientIdService } from '../../core/util/client-id.service';
import { LanguageService } from '../../core/language/language.service';
import { OpLog } from '../../core/log';
import { ActionType, OpType } from '../core/operation.types';
@ -15,6 +17,8 @@ describe('OperationLogMigrationService', () => {
let mockMatDialog: jasmine.SpyObj<MatDialog>;
let mockStore: jasmine.SpyObj<Store>;
let mockClientIdService: jasmine.SpyObj<ClientIdService>;
let mockTranslateService: jasmine.SpyObj<TranslateService>;
let mockLanguageService: jasmine.SpyObj<LanguageService>;
beforeEach(() => {
mockOpLogStore = jasmine.createSpyObj('OperationLogStoreService', [
@ -41,6 +45,12 @@ describe('OperationLogMigrationService', () => {
mockClientIdService = jasmine.createSpyObj('ClientIdService', [
'generateNewClientId',
]);
mockTranslateService = jasmine.createSpyObj('TranslateService', [
'instant',
'getBrowserCultureLang',
'getBrowserLang',
]);
mockLanguageService = jasmine.createSpyObj('LanguageService', ['setLng']);
// Default returns for legacy db
mockLegacyPfDb.hasUsableEntityData.and.resolveTo(false);
@ -56,6 +66,8 @@ describe('OperationLogMigrationService', () => {
{ provide: MatDialog, useValue: mockMatDialog },
{ provide: Store, useValue: mockStore },
{ provide: ClientIdService, useValue: mockClientIdService },
{ provide: TranslateService, useValue: mockTranslateService },
{ provide: LanguageService, useValue: mockLanguageService },
],
});
service = TestBed.inject(OperationLogMigrationService);

View file

@ -1,10 +1,12 @@
import { TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { MatDialog } from '@angular/material/dialog';
import { TranslateService } from '@ngx-translate/core';
import { OperationLogMigrationService } from '../../persistence/operation-log-migration.service';
import { OperationLogStoreService } from '../../persistence/operation-log-store.service';
import { LegacyPfDbService } from '../../../core/persistence/legacy-pf-db.service';
import { ClientIdService } from '../../../core/util/client-id.service';
import { LanguageService } from '../../../core/language/language.service';
import { ActionType, OpType } from '../../core/operation.types';
import { resetTestUuidCounter } from './helpers/test-client.helper';
@ -23,6 +25,8 @@ describe('Legacy Data Migration Integration', () => {
let mockLegacyPfDb: jasmine.SpyObj<LegacyPfDbService>;
let mockClientIdService: jasmine.SpyObj<ClientIdService>;
let mockMatDialog: jasmine.SpyObj<MatDialog>;
let mockTranslateService: jasmine.SpyObj<TranslateService>;
let mockLanguageService: jasmine.SpyObj<LanguageService>;
beforeEach(async () => {
mockLegacyPfDb = jasmine.createSpyObj('LegacyPfDbService', [
@ -37,6 +41,12 @@ describe('Legacy Data Migration Integration', () => {
'generateNewClientId',
]);
mockMatDialog = jasmine.createSpyObj('MatDialog', ['open']);
mockTranslateService = jasmine.createSpyObj('TranslateService', [
'instant',
'getBrowserCultureLang',
'getBrowserLang',
]);
mockLanguageService = jasmine.createSpyObj('LanguageService', ['setLng']);
// Default mocks - no legacy data by default
mockLegacyPfDb.hasUsableEntityData.and.returnValue(Promise.resolve(false));
@ -49,6 +59,8 @@ describe('Legacy Data Migration Integration', () => {
{ provide: LegacyPfDbService, useValue: mockLegacyPfDb },
{ provide: ClientIdService, useValue: mockClientIdService },
{ provide: MatDialog, useValue: mockMatDialog },
{ provide: TranslateService, useValue: mockTranslateService },
{ provide: LanguageService, useValue: mockLanguageService },
],
});