Commits
Giuseppe Digilio authored b8c26a71c33
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 | }); |