Skip to content

Commit f1cac6e

Browse files
author
Zahraa Chreim
committed
114858: Add Tests for new Guards - Done
1 parent 0eb61dd commit f1cac6e

5 files changed

Lines changed: 378 additions & 10 deletions

File tree

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import { TestBed } from '@angular/core/testing';
2+
import {
3+
Router,
4+
UrlTree,
5+
} from '@angular/router';
6+
import { Store } from '@ngrx/store';
7+
import { TranslateService } from '@ngx-translate/core';
8+
import {
9+
Observable,
10+
of as observableOf,
11+
} from 'rxjs';
12+
import { AuthService } from 'src/app/core/auth/auth.service';
13+
import { AuthorizationDataService } from 'src/app/core/data/feature-authorization/authorization-data.service';
14+
import { FeatureID } from 'src/app/core/data/feature-authorization/feature-id';
15+
import { bitstreamPageAuthorizationsGuard } from './bitstream-page-authorizations.guard';
16+
import { BitstreamDataService } from '../core/data/bitstream-data.service';
17+
import { Bitstream } from '../core/shared/bitstream.model';
18+
import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
19+
20+
describe('bitstreamPageAuthorizationsGuard', () => {
21+
let authorizationService: AuthorizationDataService;
22+
let authService: AuthService;
23+
let router: Router;
24+
let route;
25+
let parentRoute;
26+
let bitstreamService: BitstreamDataService;
27+
let bitstream: Bitstream;
28+
let uuid = '1234-abcdef-54321-fedcba';
29+
let bitstreamSelfLink = 'test.url/1234-abcdef-54321-fedcba';
30+
31+
beforeEach(() => {
32+
authorizationService = jasmine.createSpyObj('authorizationService', {
33+
isAuthorized: observableOf(true),
34+
});
35+
router = jasmine.createSpyObj('router', {
36+
parseUrl: {},
37+
navigateByUrl: undefined,
38+
});
39+
authService = jasmine.createSpyObj('authService', {
40+
isAuthenticated: observableOf(true),
41+
});
42+
43+
parentRoute = {
44+
params: {
45+
id: '3e1a5327-dabb-41ff-af93-e6cab9d032f0',
46+
},
47+
};
48+
route = {
49+
params: {},
50+
parent: parentRoute,
51+
};
52+
bitstream = new Bitstream();
53+
bitstream.uuid = uuid;
54+
bitstream._links = { self: { href: bitstreamSelfLink } } as any;
55+
bitstreamService = jasmine.createSpyObj('bitstreamService', { findById: createSuccessfulRemoteDataObject$(bitstream) });
56+
57+
TestBed.configureTestingModule({
58+
providers: [
59+
{ provide: AuthorizationDataService, useValue: authorizationService },
60+
{ provide: Router, useValue: router },
61+
{ provide: AuthService, useValue: authService },
62+
{ provide: BitstreamDataService, useValue: bitstreamService },
63+
],
64+
});
65+
});
66+
67+
it('should call authorizationService.isAuthorized with the appropriate arguments', (done) => {
68+
const result$ = TestBed.runInInjectionContext(() => {
69+
return bitstreamPageAuthorizationsGuard(route, { url: 'current-url' } as any);
70+
}) as Observable<boolean | UrlTree>;
71+
72+
result$.subscribe((result) => {
73+
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
74+
FeatureID.CanManagePolicies,
75+
bitstreamSelfLink,
76+
undefined,
77+
);
78+
done();
79+
});
80+
81+
});
82+
});
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import { TestBed } from '@angular/core/testing';
2+
import {
3+
Router,
4+
UrlTree,
5+
} from '@angular/router';
6+
import { Store } from '@ngrx/store';
7+
import { TranslateService } from '@ngx-translate/core';
8+
import {
9+
Observable,
10+
of as observableOf,
11+
} from 'rxjs';
12+
import { AuthService } from 'src/app/core/auth/auth.service';
13+
import { AuthorizationDataService } from 'src/app/core/data/feature-authorization/authorization-data.service';
14+
import { FeatureID } from 'src/app/core/data/feature-authorization/feature-id';
15+
16+
import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface';
17+
import { ItemDataService } from '../../core/data/item-data.service';
18+
import { Item } from '../../core/shared/item.model';
19+
import { getMockTranslateService } from '../../shared/mocks/translate.service.mock';
20+
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
21+
import { itemPageDeleteGuard } from './item-page-delete.guard';
22+
23+
describe('itemPageDeleteGuard', () => {
24+
let authorizationService: AuthorizationDataService;
25+
let authService: AuthService;
26+
let router: Router;
27+
let route;
28+
let parentRoute;
29+
let store: Store;
30+
let itemService: ItemDataService;
31+
let item: Item;
32+
let uuid = '1234-abcdef-54321-fedcba';
33+
let itemSelfLink = 'test.url/1234-abcdef-54321-fedcba';
34+
35+
beforeEach(() => {
36+
37+
store = jasmine.createSpyObj('store', {
38+
dispatch: {},
39+
pipe: observableOf(true),
40+
});
41+
authorizationService = jasmine.createSpyObj('authorizationService', {
42+
isAuthorized: observableOf(true),
43+
});
44+
router = jasmine.createSpyObj('router', {
45+
parseUrl: {},
46+
navigateByUrl: undefined,
47+
});
48+
authService = jasmine.createSpyObj('authService', {
49+
isAuthenticated: observableOf(true),
50+
});
51+
52+
parentRoute = {
53+
params: {
54+
id: '3e1a5327-dabb-41ff-af93-e6cab9d032f0',
55+
},
56+
};
57+
route = {
58+
params: {},
59+
parent: parentRoute,
60+
};
61+
item = new Item();
62+
item.uuid = uuid;
63+
item._links = { self: { href: itemSelfLink } } as any;
64+
itemService = jasmine.createSpyObj('itemService', { findById: createSuccessfulRemoteDataObject$(item) });
65+
66+
TestBed.configureTestingModule({
67+
providers: [
68+
{ provide: AuthorizationDataService, useValue: authorizationService },
69+
{ provide: Router, useValue: router },
70+
{ provide: AuthService, useValue: authService },
71+
{ provide: Store, useValue: store },
72+
{ provide: APP_DATA_SERVICES_MAP, useValue: {} },
73+
{ provide: TranslateService, useValue: getMockTranslateService() },
74+
{ provide: ItemDataService, useValue: itemService },
75+
],
76+
});
77+
});
78+
79+
it('should call authorizationService.isAuthorized with the appropriate arguments', (done) => {
80+
const result$ = TestBed.runInInjectionContext(() => {
81+
return itemPageDeleteGuard(route, { url: 'current-url' } as any);
82+
}) as Observable<boolean | UrlTree>;
83+
84+
result$.subscribe((result) => {
85+
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
86+
FeatureID.CanDelete,
87+
itemSelfLink, // This value is retrieved from the itemDataService.findById's return item's self link
88+
undefined, // dsoPageSingleFeatureGuard never provides a function to retrieve a person ID
89+
);
90+
done();
91+
});
92+
93+
});
94+
});

src/app/item-page/edit-item-page/item-page-edit-authorizations.guard.spec.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
import { TestBed } from '@angular/core/testing';
2-
import { Router, UrlTree } from '@angular/router';
3-
import { Observable, of as observableOf } from 'rxjs';
2+
import {
3+
Router,
4+
UrlTree,
5+
} from '@angular/router';
6+
import { Store } from '@ngrx/store';
7+
import { TranslateService } from '@ngx-translate/core';
8+
import {
9+
Observable,
10+
of as observableOf,
11+
} from 'rxjs';
412
import { AuthService } from 'src/app/core/auth/auth.service';
513
import { AuthorizationDataService } from 'src/app/core/data/feature-authorization/authorization-data.service';
614
import { FeatureID } from 'src/app/core/data/feature-authorization/feature-id';
7-
import { Store, } from '@ngrx/store';
815

9-
import { itemPageEditAuthorizationsGuard } from './item-page-edit-authorizations.guard';
1016
import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface';
11-
import { TranslateService } from '@ngx-translate/core';
12-
import { getMockTranslateService } from '../../shared/mocks/translate.service.mock';
1317
import { ItemDataService } from '../../core/data/item-data.service';
14-
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
1518
import { Item } from '../../core/shared/item.model';
19+
import { getMockTranslateService } from '../../shared/mocks/translate.service.mock';
20+
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
21+
import { itemPageEditAuthorizationsGuard } from './item-page-edit-authorizations.guard';
1622

1723
describe('itemPageEditAuthorizationsGuard', () => {
1824
let authorizationService: AuthorizationDataService;
@@ -55,7 +61,7 @@ describe('itemPageEditAuthorizationsGuard', () => {
5561
item = new Item();
5662
item.uuid = uuid;
5763
item._links = { self: { href: itemSelfLink } } as any;
58-
itemService = jasmine.createSpyObj('itemService', { findById: createSuccessfulRemoteDataObject$(item) })
64+
itemService = jasmine.createSpyObj('itemService', { findById: createSuccessfulRemoteDataObject$(item) });
5965

6066
TestBed.configureTestingModule({
6167
providers: [
@@ -75,9 +81,7 @@ describe('itemPageEditAuthorizationsGuard', () => {
7581
return itemPageEditAuthorizationsGuard(route, { url: 'current-url' } as any);
7682
}) as Observable<boolean | UrlTree>;
7783

78-
console.log('will subscribe');
7984
result$.subscribe((result) => {
80-
console.log('result inside subscribe:', result);
8185
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
8286
FeatureID.CanManagePolicies,
8387
itemSelfLink, // This value is retrieved from the itemDataService.findById's return item's self link
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import { TestBed } from '@angular/core/testing';
2+
import {
3+
Router,
4+
UrlTree,
5+
} from '@angular/router';
6+
import { Store } from '@ngrx/store';
7+
import { TranslateService } from '@ngx-translate/core';
8+
import {
9+
Observable,
10+
of as observableOf,
11+
} from 'rxjs';
12+
import { AuthService } from 'src/app/core/auth/auth.service';
13+
import { AuthorizationDataService } from 'src/app/core/data/feature-authorization/authorization-data.service';
14+
import { FeatureID } from 'src/app/core/data/feature-authorization/feature-id';
15+
16+
import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface';
17+
import { ItemDataService } from '../../core/data/item-data.service';
18+
import { Item } from '../../core/shared/item.model';
19+
import { getMockTranslateService } from '../../shared/mocks/translate.service.mock';
20+
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
21+
import { itemPageMoveGuard } from './item-page-move.guard';
22+
23+
describe('itemPageMoveGuard', () => {
24+
let authorizationService: AuthorizationDataService;
25+
let authService: AuthService;
26+
let router: Router;
27+
let route;
28+
let parentRoute;
29+
let store: Store;
30+
let itemService: ItemDataService;
31+
let item: Item;
32+
let uuid = '1234-abcdef-54321-fedcba';
33+
let itemSelfLink = 'test.url/1234-abcdef-54321-fedcba';
34+
35+
beforeEach(() => {
36+
37+
store = jasmine.createSpyObj('store', {
38+
dispatch: {},
39+
pipe: observableOf(true),
40+
});
41+
authorizationService = jasmine.createSpyObj('authorizationService', {
42+
isAuthorized: observableOf(true),
43+
});
44+
router = jasmine.createSpyObj('router', {
45+
parseUrl: {},
46+
navigateByUrl: undefined,
47+
});
48+
authService = jasmine.createSpyObj('authService', {
49+
isAuthenticated: observableOf(true),
50+
});
51+
52+
parentRoute = {
53+
params: {
54+
id: '3e1a5327-dabb-41ff-af93-e6cab9d032f0',
55+
},
56+
};
57+
route = {
58+
params: {},
59+
parent: parentRoute,
60+
};
61+
item = new Item();
62+
item.uuid = uuid;
63+
item._links = { self: { href: itemSelfLink } } as any;
64+
itemService = jasmine.createSpyObj('itemService', { findById: createSuccessfulRemoteDataObject$(item) });
65+
66+
TestBed.configureTestingModule({
67+
providers: [
68+
{ provide: AuthorizationDataService, useValue: authorizationService },
69+
{ provide: Router, useValue: router },
70+
{ provide: AuthService, useValue: authService },
71+
{ provide: Store, useValue: store },
72+
{ provide: APP_DATA_SERVICES_MAP, useValue: {} },
73+
{ provide: TranslateService, useValue: getMockTranslateService() },
74+
{ provide: ItemDataService, useValue: itemService },
75+
],
76+
});
77+
});
78+
79+
it('should call authorizationService.isAuthorized with the appropriate arguments', (done) => {
80+
const result$ = TestBed.runInInjectionContext(() => {
81+
return itemPageMoveGuard(route, { url: 'current-url' } as any);
82+
}) as Observable<boolean | UrlTree>;
83+
84+
result$.subscribe((result) => {
85+
expect(authorizationService.isAuthorized).toHaveBeenCalledWith(
86+
FeatureID.CanMove,
87+
itemSelfLink, // This value is retrieved from the itemDataService.findById's return item's self link
88+
undefined, // dsoPageSingleFeatureGuard never provides a function to retrieve a person ID
89+
);
90+
done();
91+
});
92+
93+
});
94+
});

0 commit comments

Comments
 (0)