Commits
Tim Donohue authored and GitHub committed 157eedade48 Merge
1 + | import { of as observableOf } from 'rxjs'; |
2 + | import { RouteService } from './route.service'; |
3 + | import { BrowserReferrerService } from './browser.referrer.service'; |
4 + | |
5 + | describe(`BrowserReferrerService`, () => { |
6 + | let service: BrowserReferrerService; |
7 + | const documentReferrer = 'https://www.referrer.com'; |
8 + | const origin = 'https://www.dspace.org'; |
9 + | let routeService: RouteService; |
10 + | |
11 + | beforeEach(() => { |
12 + | routeService = { |
13 + | getHistory: () => observableOf([]) |
14 + | } as any; |
15 + | service = new BrowserReferrerService( |
16 + | { referrer: documentReferrer }, |
17 + | routeService, |
18 + | { getCurrentOrigin: () => origin } as any |
19 + | ); |
20 + | }); |
21 + | |
22 + | describe(`getReferrer`, () => { |
23 + | describe(`when the history is an empty`, () => { |
24 + | beforeEach(() => { |
25 + | spyOn(routeService, 'getHistory').and.returnValue(observableOf([])); |
26 + | }); |
27 + | |
28 + | it(`should return document.referrer`, (done: DoneFn) => { |
29 + | service.getReferrer().subscribe((emittedReferrer: string) => { |
30 + | expect(emittedReferrer).toBe(documentReferrer); |
31 + | done(); |
32 + | }); |
33 + | }); |
34 + | }); |
35 + | |
36 + | describe(`when the history only contains the current route`, () => { |
37 + | beforeEach(() => { |
38 + | spyOn(routeService, 'getHistory').and.returnValue(observableOf(['/current/route'])); |
39 + | }); |
40 + | |
41 + | it(`should return document.referrer`, (done: DoneFn) => { |
42 + | service.getReferrer().subscribe((emittedReferrer: string) => { |
43 + | expect(emittedReferrer).toBe(documentReferrer); |
44 + | done(); |
45 + | }); |
46 + | }); |
47 + | }); |
48 + | |
49 + | describe(`when the history contains multiple routes`, () => { |
50 + | const prevUrl = '/the/route/we/need'; |
51 + | beforeEach(() => { |
52 + | spyOn(routeService, 'getHistory').and.returnValue(observableOf([ |
53 + | '/first/route', |
54 + | '/second/route', |
55 + | prevUrl, |
56 + | '/current/route' |
57 + | ])); |
58 + | }); |
59 + | |
60 + | it(`should return the last route before the current one combined with the origin from HardRedirectService`, (done: DoneFn) => { |
61 + | service.getReferrer().subscribe((emittedReferrer: string) => { |
62 + | expect(emittedReferrer).toBe(origin + prevUrl); |
63 + | done(); |
64 + | }); |
65 + | }); |
66 + | }); |
67 + | }); |
68 + | }); |