Skip to content

Commit 5a76fde

Browse files
Hristo313Copilotdamyanpetev
authored
fix(igx-ts): fix spec files (#1661)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: damyanpetev <damyanpetev@users.noreply.github.com>
1 parent 096e057 commit 5a76fde

7 files changed

Lines changed: 170 additions & 71 deletions

File tree

packages/igx-templates/igx-ts/bullet-graph/default/files/src/app/__path__/__filePrefix__.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describe('<%=ClassName%>', () => {
1818
component = fixture.componentInstance;
1919
fixture.detectChanges();
2020
// disable animation
21-
component.bulletGraph.transitionDuration = 0;
21+
component.bulletGraph().transitionDuration = 0;
2222
});
2323

2424
it('should create', () => {

packages/igx-templates/igx-ts/linear-gauge/default/files/src/app/__path__/__filePrefix__.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ describe('<%=ClassName%>', () => {
2222
it('should create', () => {
2323
expect(component).toBeTruthy();
2424
// disable animation
25-
component.linearGauge.transitionDuration = 0;
25+
component.linearGauge().transitionDuration = 0;
2626
});
2727
});

packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/auth.guard.spec.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import { TestBed } from '@angular/core/testing';
2+
import { Router } from '@angular/router';
13
import { AuthGuard } from './auth.guard';
4+
import { UserStore } from './services/user-store';
25

36
describe('AuthGuard', () => {
47
let mockRouter: any;
@@ -13,20 +16,28 @@ describe('AuthGuard', () => {
1316
mockUserService = {
1417
currentUser: true
1518
};
19+
20+
TestBed.configureTestingModule({
21+
providers: [
22+
AuthGuard,
23+
{ provide: Router, useValue: mockRouter },
24+
{ provide: UserStore, useValue: mockUserService }
25+
]
26+
});
1627
});
1728

1829
it('Should properly initialize', () => {
19-
const authGuard = new AuthGuard(mockRouter, mockUserService);
30+
const authGuard = TestBed.inject(AuthGuard);
2031
expect(authGuard).toBeDefined();
2132
});
2233

23-
it(`Should properly call 'canActivate'`, () => {
24-
const authGuard = new AuthGuard(mockRouter, mockUserService);
34+
it(`Should return true from 'canActivate' for authenticated user`, () => {
35+
const authGuard = TestBed.inject(AuthGuard);
2536
const mockSpy = vi.fn();
2637
expect(authGuard.canActivate(mockSpy as any, mockSpy as any)).toEqual(true);
2738
});
28-
it(`Should properly call 'canActivate'`, () => {
29-
const authGuard = new AuthGuard(mockRouter, mockUserService);
39+
it(`Should redirect and return false from 'canActivate' for unauthenticated user`, () => {
40+
const authGuard = TestBed.inject(AuthGuard);
3041
const mockSpy = vi.fn();
3142
mockUserService.currentUser = false;
3243
vi.spyOn(mockRouter, 'navigate');

packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/login-bar/login-bar.spec.ts

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { Component } from '@angular/core';
21
import { ComponentFixture, TestBed } from '@angular/core/testing';
32
import { By } from '@angular/platform-browser';
43
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
@@ -14,28 +13,11 @@ import {
1413
IgxRippleModule,
1514
IgxToggleModule
1615
} from 'igniteui-angular';
17-
import { LoginDialog } from '../login-dialog/login-dialog';
1816
import { ExternalAuth } from '../services/external-auth';
1917
import { UserStore } from '../services/user-store';
2018
import { provideAuthentication } from '../provide-authentication';
2119
import { LoginBar } from './login-bar';
2220

23-
@Component({
24-
selector: 'app-login-dialog',
25-
template: '',
26-
imports: [RouterTestingModule,
27-
IgxAvatarModule,
28-
IgxButtonModule,
29-
IgxDialogModule,
30-
IgxDropDownModule,
31-
IgxIconModule,
32-
IgxRippleModule,
33-
IgxToggleModule]
34-
})
35-
class TestLoginDialog extends LoginDialog {
36-
override open() { }
37-
}
38-
3921
describe('LoginBar', () => {
4022
let component: LoginBar;
4123
let fixture: ComponentFixture<LoginBar>;
@@ -64,8 +46,7 @@ describe('LoginBar', () => {
6446
IgxIconModule,
6547
IgxRippleModule,
6648
IgxToggleModule,
67-
LoginBar,
68-
TestLoginDialog
49+
LoginBar
6950
],
7051
providers: [
7152
...provideAuthentication(),
@@ -103,13 +84,10 @@ describe('LoginBar', () => {
10384
});
10485

10586
it('should open dialog on button click (not logged)', () => {
106-
// override ViewChild:
107-
component.loginDialog = new TestLoginDialog();
108-
10987
const button = fixture.debugElement.query(By.css('button'));
110-
vi.spyOn(component.loginDialog, 'open');
88+
vi.spyOn(component.loginDialog(), 'open');
11189
button.triggerEventHandler('click', {});
112-
expect(component.loginDialog.open).toHaveBeenCalled();
90+
expect(component.loginDialog().open).toHaveBeenCalled();
11391
});
11492

11593
it('should open drop down on button click (logged in)', async () => {
@@ -122,7 +100,7 @@ describe('LoginBar', () => {
122100
const button = fixture.debugElement.query(By.css('button'));
123101
button.triggerEventHandler('click', {});
124102
await fixture.whenStable();
125-
expect(component.igxDropDown.collapsed).toBeFalsy();
103+
expect(component.igxDropDown().collapsed).toBeFalsy();
126104
});
127105

128106
it('should handle user menu items', async () => {
@@ -133,11 +111,12 @@ describe('LoginBar', () => {
133111
vi.spyOn(userStore, 'clearCurrentUser');
134112
vi.spyOn(externalAuth, 'logout');
135113

136-
component.igxDropDown.open();
137-
component.igxDropDown.setSelectedItem(0);
114+
const dropdown = component.igxDropDown();
115+
dropdown.open();
116+
dropdown.setSelectedItem(0);
138117
expect(router.navigate).toHaveBeenCalledWith(['/auth/profile']);
139118

140-
component.igxDropDown.setSelectedItem(1);
119+
dropdown.setSelectedItem(1);
141120
expect(router.navigate).toHaveBeenCalledWith(['/home']);
142121
expect(userStore.clearCurrentUser).toHaveBeenCalled();
143122
expect(externalAuth.logout).toHaveBeenCalled();

packages/igx-templates/igx-ts/projects/side-nav-auth/files/src/app/authentication/services/jwt.spec.ts

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,59 @@ import { Observable } from 'rxjs';
22
import { take } from 'rxjs/operators';
33
import { decodeBase64Url, decodeJWT, parseUser } from './jwt-util';
44
import { JwtInterceptor } from './jwt.interceptor';
5+
import { TestBed } from '@angular/core/testing';
6+
import { UserStore } from './user-store';
57

68
describe('JWT Tests', () => {
9+
let interceptor: JwtInterceptor;
10+
let mockUserStore: any;
11+
12+
beforeEach(() => {
13+
mockUserStore = {
14+
currentUser: null
15+
};
16+
17+
TestBed.configureTestingModule({
18+
providers: [
19+
JwtInterceptor,
20+
{ provide: UserStore, useValue: mockUserStore }
21+
]
22+
});
23+
24+
interceptor = TestBed.inject(JwtInterceptor);
25+
});
26+
727
afterEach(() => { vi.restoreAllMocks(); });
828

929
describe(`JWT Interceptor`, () => {
10-
const mockService = {} as any;
11-
const jwtInterceptor = new JwtInterceptor(mockService);
12-
1330
it(`Should properly initialize`, () => {
14-
expect(jwtInterceptor).toBeTruthy();
31+
expect(interceptor).toBeTruthy();
1532
});
1633

1734
it(`Should properly handle 'intercept'`, () => {
1835
const mockRequest = {
19-
clone: () => { }
36+
clone: vi.fn().mockReturnValue({})
2037
} as any;
2138
const mockNext = {
22-
handle: () => new Observable()
39+
handle: vi.fn(() => new Observable(sub => sub.complete()))
2340
} as any;
24-
vi.spyOn(mockNext, 'handle');
25-
mockService.currentUser = false;
41+
42+
mockUserStore.currentUser = false;
2643
// call w/o current user
27-
jwtInterceptor.intercept(mockRequest, mockNext).pipe(take(1)).subscribe(() => { });
44+
interceptor.intercept(mockRequest, mockNext).pipe(take(1)).subscribe();
2845
expect(mockNext.handle).toHaveBeenCalledTimes(1);
2946
expect(mockNext.handle).toHaveBeenCalledWith(mockRequest);
30-
mockService.currentUser = {
47+
mockUserStore.currentUser = {
3148
token: ''
3249
};
33-
jwtInterceptor.intercept(mockRequest, mockNext).pipe(take(1)).subscribe(() => { });
50+
interceptor.intercept(mockRequest, mockNext).pipe(take(1)).subscribe();
3451
expect(mockNext.handle).toHaveBeenCalledTimes(2);
3552
expect(mockNext.handle).toHaveBeenCalledWith(mockRequest);
36-
mockService.currentUser = {
53+
mockUserStore.currentUser = {
3754
token: 'test_token'
3855
};
39-
vi.spyOn(mockRequest, 'clone');
40-
jwtInterceptor.intercept(mockRequest, mockNext).pipe(take(1)).subscribe(() => { });
56+
57+
interceptor.intercept(mockRequest, mockNext).pipe(take(1)).subscribe();
4158
expect(mockRequest.clone).toHaveBeenCalledWith({
4259
setHeaders: {
4360
Authorization: `Bearer test_token`

0 commit comments

Comments
 (0)