Skip to content

Commit 6d0540c

Browse files
test: fix failing tests due to outdated router spies (#1004)
1 parent e7587e1 commit 6d0540c

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

src/app/integrations/intacct/intacct.component.spec.ts

+17-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ComponentFixture, TestBed } from '@angular/core/testing';
2-
import { Router, NavigationEnd, RouterModule } from '@angular/router';
2+
import { Router, NavigationEnd, provideRouter } from '@angular/router';
33
import { of } from 'rxjs';
44
import { IntacctComponent } from './intacct.component';
55
import { HelperService } from 'src/app/core/services/common/helper.service';
@@ -8,9 +8,11 @@ import { WindowService } from 'src/app/core/services/common/window.service';
88
import { AppcuesService } from 'src/app/core/services/integration/appcues.service';
99
import { UserService } from 'src/app/core/services/misc/user.service';
1010
import { SiWorkspaceService } from 'src/app/core/services/si/si-core/si-workspace.service';
11-
import { AppName, AppUrl, IntacctOnboardingState } from 'src/app/core/models/enum/enum.model';
11+
import { AppUrl, IntacctOnboardingState } from 'src/app/core/models/enum/enum.model';
1212
import { mockUser, testOnboardingState, workspaceResponse } from './intacct.fixture';
1313
import { IntacctWorkspace } from 'src/app/core/models/intacct/db/workspaces.model';
14+
import { SharedModule } from 'src/app/shared/shared.module';
15+
import { HttpClientTestingModule } from '@angular/common/http/testing';
1416

1517
describe('IntacctComponent', () => {
1618
let component: IntacctComponent;
@@ -19,16 +21,15 @@ describe('IntacctComponent', () => {
1921
let workspaceServiceSpy: jasmine.SpyObj<SiWorkspaceService>;
2022
let helperServiceSpy: jasmine.SpyObj<HelperService>;
2123
let storageServiceSpy: jasmine.SpyObj<StorageService>;
22-
let routerSpy: jasmine.SpyObj<Router>;
2324
let windowServiceMock: Partial<WindowService>;
2425
let appcuesServiceSpy: jasmine.SpyObj<AppcuesService>;
26+
let router: Router;
2527

2628
beforeEach(async () => {
2729
const userSpy = jasmine.createSpyObj('UserService', ['getUserProfile']);
2830
const workspaceSpy = jasmine.createSpyObj('SiWorkspaceService', ['getWorkspace', 'postWorkspace', 'syncFyleDimensions', 'syncIntacctDimensions']);
2931
const helperSpy = jasmine.createSpyObj('HelperService', ['setBaseApiURL']);
3032
const storageSpy = jasmine.createSpyObj('StorageService', ['set']);
31-
const routerSpyObj = jasmine.createSpyObj('Router', ['navigateByUrl', 'events']);
3233
const appcuesSpy = jasmine.createSpyObj('AppcuesService', ['initialiseAppcues']);
3334

3435
windowServiceMock = {
@@ -42,27 +43,28 @@ describe('IntacctComponent', () => {
4243
};
4344

4445
await TestBed.configureTestingModule({
45-
declarations: [ IntacctComponent ],
46-
imports: [RouterModule],
46+
declarations: [IntacctComponent],
47+
imports: [SharedModule, HttpClientTestingModule],
4748
providers: [
4849
{ provide: HelperService, useValue: helperSpy },
4950
{ provide: AppcuesService, useValue: appcuesSpy },
50-
{ provide: Router, useValue: routerSpyObj },
5151
{ provide: StorageService, useValue: storageSpy },
5252
{ provide: UserService, useValue: userSpy },
5353
{ provide: SiWorkspaceService, useValue: workspaceSpy },
54-
{ provide: WindowService, useValue: windowServiceMock }
54+
{ provide: WindowService, useValue: windowServiceMock },
55+
provideRouter([])
5556
]
5657
}).compileComponents();
5758

5859
userServiceSpy = TestBed.inject(UserService) as jasmine.SpyObj<UserService>;
5960
workspaceServiceSpy = TestBed.inject(SiWorkspaceService) as jasmine.SpyObj<SiWorkspaceService>;
6061
helperServiceSpy = TestBed.inject(HelperService) as jasmine.SpyObj<HelperService>;
6162
storageServiceSpy = TestBed.inject(StorageService) as jasmine.SpyObj<StorageService>;
62-
routerSpy = TestBed.inject(Router) as jasmine.SpyObj<Router>;
63-
(routerSpy.events as any) = of(new NavigationEnd(0, '', ''));
63+
router = TestBed.inject(Router);
6464
appcuesServiceSpy = TestBed.inject(AppcuesService) as jasmine.SpyObj<AppcuesService>;
6565

66+
spyOn(router, 'navigateByUrl');
67+
spyOnProperty(router, 'events').and.returnValue(of(new NavigationEnd(0, '', '')));
6668
userServiceSpy.getUserProfile.and.returnValue(mockUser);
6769
workspaceServiceSpy.getWorkspace.and.returnValue(of(workspaceResponse));
6870
workspaceServiceSpy.syncFyleDimensions.and.returnValue(of());
@@ -85,7 +87,7 @@ describe('IntacctComponent', () => {
8587
expect(storageServiceSpy.set).toHaveBeenCalledWith('onboarding-state', IntacctOnboardingState.CONNECTION);
8688
expect(workspaceServiceSpy.syncFyleDimensions).toHaveBeenCalled();
8789
expect(workspaceServiceSpy.syncIntacctDimensions).toHaveBeenCalled();
88-
expect(routerSpy.navigateByUrl).toHaveBeenCalledWith('/integrations/intacct/onboarding/landing');
90+
expect(router.navigateByUrl).toHaveBeenCalledWith('/integrations/intacct/onboarding/landing');
8991
});
9092

9193
it('should create a new workspace if none exists', () => {
@@ -97,18 +99,17 @@ describe('IntacctComponent', () => {
9799
expect(workspaceServiceSpy.postWorkspace).toHaveBeenCalled();
98100
expect(storageServiceSpy.set).toHaveBeenCalledWith('workspaceId', 1);
99101
expect(storageServiceSpy.set).toHaveBeenCalledWith('onboarding-state', IntacctOnboardingState.CONNECTION);
100-
expect(routerSpy.navigateByUrl).toHaveBeenCalledWith('/integrations/intacct/onboarding/landing');
102+
expect(router.navigateByUrl).toHaveBeenCalledWith('/integrations/intacct/onboarding/landing');
101103
});
102104

103105
it('should navigate to correct route based on onboarding state', () => {
104-
Object.entries(testOnboardingState).forEach(([state, route ]) => {
105-
routerSpy.navigateByUrl.calls.reset();
106+
Object.entries(testOnboardingState).forEach(([state, route]) => {
106107
const testWorkspace: IntacctWorkspace = { ...workspaceResponse[0], onboarding_state: state as IntacctOnboardingState };
107108
workspaceServiceSpy.getWorkspace.and.returnValue(of([testWorkspace]));
108109

109110
fixture.detectChanges();
110111

111-
expect(routerSpy.navigateByUrl).toHaveBeenCalledWith(route);
112+
expect(router.navigateByUrl).toHaveBeenCalledWith(route);
112113

113114
fixture = TestBed.createComponent(IntacctComponent);
114115
component = fixture.componentInstance;
@@ -119,7 +120,7 @@ describe('IntacctComponent', () => {
119120
component.windowReference.location.pathname = '/some/other/path';
120121
fixture.detectChanges();
121122

122-
expect(routerSpy.navigateByUrl).not.toHaveBeenCalled();
123+
expect(router.navigateByUrl).not.toHaveBeenCalled();
123124
});
124125

125126
it('should initialise Appcues', () => {

src/app/integrations/qbo/qbo.component.spec.ts

+14-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
2-
import { Router } from '@angular/router';
2+
import { provideRouter, Router } from '@angular/router';
33
import { of } from 'rxjs';
44
import { QboComponent } from './qbo.component';
55
import { HelperService } from 'src/app/core/services/common/helper.service';
@@ -10,22 +10,23 @@ import { WorkspaceService } from 'src/app/core/services/common/workspace.service
1010
import { QboHelperService } from 'src/app/core/services/qbo/qbo-core/qbo-helper.service';
1111
import { QBOOnboardingState, AppUrl } from 'src/app/core/models/enum/enum.model';
1212
import { mockUser, mockWorkspace, testOnboardingState } from './qbo.fixture';
13+
import { SharedModule } from 'src/app/shared/shared.module';
14+
import { HttpClientTestingModule } from '@angular/common/http/testing';
1315

1416
describe('QboComponent', () => {
1517
let component: QboComponent;
1618
let fixture: ComponentFixture<QboComponent>;
1719
let helperServiceSpy: jasmine.SpyObj<HelperService>;
1820
let qboHelperServiceSpy: jasmine.SpyObj<QboHelperService>;
19-
let routerSpy: jasmine.SpyObj<Router>;
2021
let storageServiceSpy: jasmine.SpyObj<StorageService>;
2122
let userServiceSpy: jasmine.SpyObj<IntegrationsUserService>;
2223
let workspaceServiceSpy: jasmine.SpyObj<WorkspaceService>;
2324
let windowServiceMock: Partial<WindowService>;
25+
let router: Router;
2426

2527
beforeEach(async () => {
2628
const helperSpy = jasmine.createSpyObj('HelperService', ['setBaseApiURL']);
2729
const qboHelperSpy = jasmine.createSpyObj('QboHelperService', ['syncFyleDimensions', 'syncQBODimensions']);
28-
const routerSpyObj = jasmine.createSpyObj('Router', ['navigateByUrl']);
2930
const storageSpy = jasmine.createSpyObj('StorageService', ['set']);
3031
const userSpy = jasmine.createSpyObj('IntegrationsUserService', ['getUserProfile']);
3132
const workspaceSpy = jasmine.createSpyObj('WorkspaceService', ['getWorkspace', 'postWorkspace']);
@@ -46,24 +47,26 @@ describe('QboComponent', () => {
4647
};
4748

4849
await TestBed.configureTestingModule({
49-
declarations: [ QboComponent ],
50+
declarations: [QboComponent],
51+
imports: [SharedModule, HttpClientTestingModule],
5052
providers: [
5153
{ provide: HelperService, useValue: helperSpy },
5254
{ provide: QboHelperService, useValue: qboHelperSpy },
53-
{ provide: Router, useValue: routerSpyObj },
5455
{ provide: StorageService, useValue: storageSpy },
5556
{ provide: IntegrationsUserService, useValue: userSpy },
5657
{ provide: WorkspaceService, useValue: workspaceSpy },
57-
{ provide: WindowService, useValue: windowServiceMock }
58+
{ provide: WindowService, useValue: windowServiceMock },
59+
provideRouter([])
5860
]
5961
}).compileComponents();
6062

6163
helperServiceSpy = TestBed.inject(HelperService) as jasmine.SpyObj<HelperService>;
6264
qboHelperServiceSpy = TestBed.inject(QboHelperService) as jasmine.SpyObj<QboHelperService>;
63-
routerSpy = TestBed.inject(Router) as jasmine.SpyObj<Router>;
6465
storageServiceSpy = TestBed.inject(StorageService) as jasmine.SpyObj<StorageService>;
6566
userServiceSpy = TestBed.inject(IntegrationsUserService) as jasmine.SpyObj<IntegrationsUserService>;
6667
workspaceServiceSpy = TestBed.inject(WorkspaceService) as jasmine.SpyObj<WorkspaceService>;
68+
router = TestBed.inject(Router);
69+
spyOn(router, 'navigateByUrl');
6770

6871
userServiceSpy.getUserProfile.and.returnValue(mockUser);
6972
qboHelperServiceSpy.syncFyleDimensions.and.returnValue(of(null));
@@ -91,7 +94,7 @@ describe('QboComponent', () => {
9194
expect(storageServiceSpy.set).toHaveBeenCalledWith('onboarding-state', QBOOnboardingState.CONNECTION);
9295
expect(qboHelperServiceSpy.syncFyleDimensions).toHaveBeenCalled();
9396
expect(qboHelperServiceSpy.syncQBODimensions).toHaveBeenCalled();
94-
expect(routerSpy.navigateByUrl).toHaveBeenCalledWith('/integrations/qbo/onboarding/landing');
97+
expect(router.navigateByUrl).toHaveBeenCalledWith('/integrations/qbo/onboarding/landing');
9598
}));
9699

97100
it('should create a new workspace if none exists', fakeAsync(() => {
@@ -104,12 +107,11 @@ describe('QboComponent', () => {
104107
expect(workspaceServiceSpy.postWorkspace).toHaveBeenCalled();
105108
expect(storageServiceSpy.set).toHaveBeenCalledWith('workspaceId', '1');
106109
expect(storageServiceSpy.set).toHaveBeenCalledWith('onboarding-state', QBOOnboardingState.CONNECTION);
107-
expect(routerSpy.navigateByUrl).toHaveBeenCalledWith('/integrations/qbo/onboarding/landing');
110+
expect(router.navigateByUrl).toHaveBeenCalledWith('/integrations/qbo/onboarding/landing');
108111
}));
109112

110113
it('should navigate to correct route based on onboarding state', fakeAsync(() => {
111-
testOnboardingState.forEach(({ state, route }) => {
112-
routerSpy.navigateByUrl.calls.reset();
114+
testOnboardingState.forEach(({ state }) => {
113115
const testWorkspace = { ...mockWorkspace, onboarding_state: state };
114116
workspaceServiceSpy.getWorkspace.and.returnValue(of([testWorkspace]));
115117

@@ -125,6 +127,6 @@ describe('QboComponent', () => {
125127
fixture.detectChanges();
126128
tick();
127129

128-
expect(routerSpy.navigateByUrl).toHaveBeenCalled();
130+
expect(router.navigateByUrl).toHaveBeenCalled();
129131
}));
130132
});

0 commit comments

Comments
 (0)