Commits

Giuseppe Digilio authored b8c26a71c33
[DURACOM-234] Fixes after migrating to functional guards
No tags

src/app/item-page/edit-item-page/edit-item-page.component.spec.ts

Modified
1 -/* eslint-disable max-classes-per-file */
2 1 import {
3 2 ChangeDetectionStrategy,
4 3 NO_ERRORS_SCHEMA,
5 4 } from '@angular/core';
6 5 import {
7 6 ComponentFixture,
8 7 fakeAsync,
9 8 TestBed,
10 9 waitForAsync,
11 10 } from '@angular/core/testing';
12 11 import { By } from '@angular/platform-browser';
13 12 import {
14 13 ActivatedRoute,
15 14 ActivatedRouteSnapshot,
15 + CanActivateFn,
16 16 RouterModule,
17 17 RouterStateSnapshot,
18 - UrlTree,
19 18 } from '@angular/router';
20 19 import {
21 20 TranslateLoader,
22 21 TranslateModule,
23 22 } from '@ngx-translate/core';
24 23 import {
25 24 Observable,
26 25 of as observableOf,
27 26 } from 'rxjs';
28 27
29 28 import { Item } from '../../core/shared/item.model';
30 29 import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock';
31 30 import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils';
32 31 import { EditItemPageComponent } from './edit-item-page.component';
33 32
34 -describe('ItemPageComponent', () => {
33 +describe('EditItemPageComponent', () => {
35 34 let comp: EditItemPageComponent;
36 35 let fixture: ComponentFixture<EditItemPageComponent>;
37 36
38 - class AcceptAllGuard {
39 - canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
40 - return observableOf(true);
41 - }
42 - }
37 + const AcceptAllGuard: CanActivateFn = (
38 + route: ActivatedRouteSnapshot,
39 + state: RouterStateSnapshot,
40 + ): Observable<boolean> => {
41 + return observableOf(true);
42 + };
43 43
44 - class AcceptNoneGuard {
45 - canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
46 - return observableOf(false);
47 - }
48 - }
44 + const AcceptNoneGuard: CanActivateFn = (
45 + route: ActivatedRouteSnapshot,
46 + state: RouterStateSnapshot,
47 + ): Observable<boolean> => {
48 + return observableOf(false);
49 + };
49 50
50 - const accesiblePages = ['accessible'];
51 - const inaccesiblePages = ['inaccessible', 'inaccessibleDoubleGuard'];
51 + const accessiblePages = ['accessible'];
52 + const inaccessiblePages = ['inaccessible', 'inaccessibleDoubleGuard'];
52 53 const mockRoute = {
53 54 snapshot: {
54 55 firstChild: {
55 56 routeConfig: {
56 - path: accesiblePages[0],
57 + path: accessiblePages[0],
57 58 },
58 59 },
59 60 routerState: {
60 61 snapshot: undefined,
61 62 },
62 63 },
63 64 routeConfig: {
64 65 children: [
65 66 {
66 - path: accesiblePages[0],
67 + path: accessiblePages[0],
67 68 canActivate: [AcceptAllGuard],
68 69 }, {
69 - path: inaccesiblePages[0],
70 + path: inaccessiblePages[0],
70 71 canActivate: [AcceptNoneGuard],
71 72 }, {
72 - path: inaccesiblePages[1],
73 + path: inaccessiblePages[1],
73 74 canActivate: [AcceptAllGuard, AcceptNoneGuard],
74 75 },
75 76 ],
76 77 },
77 78 data: observableOf({ dso: createSuccessfulRemoteDataObject(new Item()) }),
78 79 };
79 80
80 - const mockRouter = {
81 - routerState: {
82 - snapshot: undefined,
83 - },
84 - events: observableOf(undefined),
85 - };
86 -
87 81 beforeEach(waitForAsync(() => {
88 82 TestBed.configureTestingModule({
89 83 imports: [
90 84 RouterModule.forRoot([]),
91 85 TranslateModule.forRoot({
92 86 loader: {
93 87 provide: TranslateLoader,
94 88 useClass: TranslateLoaderMock,
95 89 },
96 90 }),
97 91 EditItemPageComponent,
98 92 ],
99 93 providers: [
100 94 { provide: ActivatedRoute, useValue: mockRoute },
101 - AcceptAllGuard,
102 - AcceptNoneGuard,
103 95 ],
104 96 schemas: [NO_ERRORS_SCHEMA],
105 97 }).overrideComponent(EditItemPageComponent, {
106 98 set: { changeDetection: ChangeDetectionStrategy.Default },
107 99 }).compileComponents();
108 100 }));
109 101
110 102 beforeEach(waitForAsync(() => {
111 103 fixture = TestBed.createComponent(EditItemPageComponent);
112 104 comp = fixture.componentInstance;
113 - spyOn((comp as any).injector, 'get').and.callFake((a) => new a());
105 + // spyOn((comp as any).injector, 'get').and.callFake((a) => new a());
114 106 fixture.detectChanges();
115 107 }));
116 108
117 109 describe('ngOnInit', () => {
118 110 it('should enable tabs that the user can activate', fakeAsync(() => {
119 111 const enabledItems = fixture.debugElement.queryAll(By.css('a.nav-link'));
120 - expect(enabledItems.length).toBe(accesiblePages.length);
112 + expect(enabledItems.length).toBe(accessiblePages.length);
121 113 }));
122 114
123 115 it('should disable tabs that the user can not activate', () => {
124 116 const disabledItems = fixture.debugElement.queryAll(By.css('button.nav-link.disabled'));
125 - expect(disabledItems.length).toBe(inaccesiblePages.length);
117 + expect(disabledItems.length).toBe(inaccessiblePages.length);
126 118 });
127 119 });
128 120 });

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut