Skip to content

Commit 2271952

Browse files
authored
Added typescript fix for problem with specs created by "dotnet new angular --auth" (#18295)
1 parent b1dcaca commit 2271952

File tree

6 files changed

+92
-9
lines changed

6 files changed

+92
-9
lines changed

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/ClientApp/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"karma-coverage-istanbul-reporter": "~2.1.0",
4848
"karma-jasmine": "~2.0.1",
4949
"karma-jasmine-html-reporter": "^1.4.2",
50+
"karma-spec-reporter": "0.0.32",
5051
"typescript": "3.5.3"
5152
},
5253
"optionalDependencies": {

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/ClientApp/src/api-authorization/authorize.guard.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { TestBed, inject } from '@angular/core/testing';
2-
2+
import { RouterTestingModule } from '@angular/router/testing';
33
import { AuthorizeGuard } from './authorize.guard';
44

55
describe('AuthorizeGuard', () => {
66
beforeEach(() => {
77
TestBed.configureTestingModule({
8+
imports: [RouterTestingModule],
89
providers: [AuthorizeGuard]
910
});
1011
});

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/ClientApp/src/api-authorization/login-menu/login-menu.component.spec.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
11
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2-
2+
import { RouterTestingModule } from '@angular/router/testing';
33
import { LoginMenuComponent } from './login-menu.component';
4+
import { AuthorizeService } from '../authorize.service';
5+
import { of } from 'rxjs';
46

57
describe('LoginMenuComponent', () => {
68
let component: LoginMenuComponent;
79
let fixture: ComponentFixture<LoginMenuComponent>;
810

911
beforeEach(async(() => {
1012
TestBed.configureTestingModule({
13+
imports: [RouterTestingModule],
1114
declarations: [ LoginMenuComponent ]
1215
})
1316
.compileComponents();
1417
}));
1518

1619
beforeEach(() => {
20+
let authService = TestBed.get(AuthorizeService);
21+
22+
spyOn(authService, 'ensureUserManagerInitialized').and.returnValue(
23+
Promise.resolve());
24+
spyOn(authService, 'getUserFromStorage').and.returnValue(
25+
of(null));
26+
1727
fixture = TestBed.createComponent(LoginMenuComponent);
1828
component = fixture.componentInstance;
1929
fixture.detectChanges();

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/ClientApp/src/api-authorization/login/login.component.spec.ts

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,63 @@
11
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2-
2+
import { RouterTestingModule } from '@angular/router/testing';
33
import { LoginComponent } from './login.component';
4+
import { ActivatedRoute, ActivatedRouteSnapshot, UrlSegment, convertToParamMap, Params, Router } from '@angular/router';
5+
import { of } from 'rxjs';
6+
import { LoginActions } from '../api-authorization.constants';
7+
import { HttpParams } from '@angular/common/http';
8+
import { AuthorizeService } from '../authorize.service';
9+
import { log } from 'util';
10+
import { HomeComponent } from 'src/app/home/home.component';
11+
12+
class RouterStub {
13+
url = '';
14+
navigate(commands: any[], extras?: any) {}
15+
}
416

517
describe('LoginComponent', () => {
618
let component: LoginComponent;
719
let fixture: ComponentFixture<LoginComponent>;
20+
let router: Router;
821

922
beforeEach(async(() => {
23+
log('login.component.spec.ts before each started...');
24+
25+
let tempParams: Params = { id: '1234' };
26+
27+
let segment0: UrlSegment = new UrlSegment('segment0', {});
28+
let segment1: UrlSegment = new UrlSegment(LoginActions.Login, {});
29+
30+
let urlSegments: UrlSegment[] = [segment0, segment1];
31+
1032
TestBed.configureTestingModule({
11-
declarations: [ LoginComponent ]
12-
})
13-
.compileComponents();
33+
imports: [
34+
RouterTestingModule.withRoutes([
35+
{ path: 'authentication/login-failed', component: HomeComponent }
36+
])],
37+
declarations: [LoginComponent, HomeComponent],
38+
providers: [{
39+
provide: ActivatedRoute, useValue: {
40+
snapshot: {
41+
paramMap: convertToParamMap(tempParams),
42+
url: urlSegments,
43+
queryParams: tempParams
44+
}
45+
}
46+
}]
47+
}).compileComponents();
48+
49+
router = TestBed.get(Router);
50+
spyOn(router, 'navigate').and.returnValue(Promise.resolve(true));
51+
52+
log('login.component.spec.ts before each after compileComponents()...');
1453
}));
1554

1655
beforeEach(() => {
56+
let authService = TestBed.get(AuthorizeService);
57+
58+
spyOn(authService, 'ensureUserManagerInitialized').and.returnValue(
59+
Promise.resolve());
60+
1761
fixture = TestBed.createComponent(LoginComponent);
1862
component = fixture.componentInstance;
1963
fixture.detectChanges();

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/ClientApp/src/api-authorization/logout/logout.component.spec.ts

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,40 @@
11
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2-
2+
import { RouterTestingModule } from '@angular/router/testing';
33
import { LogoutComponent } from './logout.component';
4+
import { HomeComponent } from 'src/app/home/home.component';
5+
import { ActivatedRoute, convertToParamMap, Params, UrlSegment } from '@angular/router';
6+
import { log } from 'util';
7+
import { LogoutActions } from '../api-authorization.constants';
48

59
describe('LogoutComponent', () => {
610
let component: LogoutComponent;
711
let fixture: ComponentFixture<LogoutComponent>;
812

913
beforeEach(async(() => {
14+
log('logout.component.spec.ts before each started...');
15+
16+
let tempParams: Params = { id: '1234' };
17+
18+
let segment0: UrlSegment = new UrlSegment('segment0', {});
19+
let segment1: UrlSegment = new UrlSegment(LogoutActions.LoggedOut, {});
20+
21+
let urlSegments: UrlSegment[] = [segment0, segment1];
22+
1023
TestBed.configureTestingModule({
11-
declarations: [ LogoutComponent ]
24+
imports: [
25+
RouterTestingModule.withRoutes([
26+
{ path: 'authentication/login-failed', component: HomeComponent }
27+
])],
28+
declarations: [LogoutComponent, HomeComponent],
29+
providers: [{
30+
provide: ActivatedRoute, useValue: {
31+
snapshot: {
32+
paramMap: convertToParamMap(tempParams),
33+
url: urlSegments,
34+
queryParams: tempParams
35+
}
36+
}
37+
}]
1238
})
1339
.compileComponents();
1440
}));

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/ClientApp/src/karma.conf.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module.exports = function (config) {
99
require('karma-jasmine'),
1010
require('karma-chrome-launcher'),
1111
require('karma-jasmine-html-reporter'),
12+
require('karma-spec-reporter'),
1213
require('karma-coverage-istanbul-reporter'),
1314
require('@angular-devkit/build-angular/plugins/karma')
1415
],
@@ -20,7 +21,7 @@ module.exports = function (config) {
2021
reports: ['html', 'lcovonly'],
2122
fixWebpackSourcePaths: true
2223
},
23-
reporters: ['progress', 'kjhtml'],
24+
reporters: ['progress', 'kjhtml', 'spec'],
2425
port: 9876,
2526
colors: true,
2627
logLevel: config.LOG_INFO,

0 commit comments

Comments
 (0)