@@ -10,14 +10,15 @@ import { RequestService } from './request.service';
1010import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils' ;
1111import { Item } from '../shared/item.model' ;
1212import { EMBED_SEPARATOR } from './base/base-data.service' ;
13+ import { HardRedirectService } from '../services/hard-redirect.service' ;
1314
1415describe ( 'DsoRedirectService' , ( ) => {
1516 let scheduler : TestScheduler ;
1617 let service : DsoRedirectService ;
1718 let halService : HALEndpointService ;
1819 let requestService : RequestService ;
1920 let rdbService : RemoteDataBuildService ;
20- let router ;
21+ let redirectService : HardRedirectService ;
2122 let remoteData ;
2223 const dsoUUID = '9b4f22f4-164a-49db-8817-3316b6ee5746' ;
2324 const dsoHandle = '1234567789/22' ;
@@ -27,9 +28,6 @@ describe('DsoRedirectService', () => {
2728 const requestUUIDURL = `https://rest.api/rest/api/pid/find?id=${ dsoUUID } ` ;
2829 const requestUUID = '34cfed7c-f597-49ef-9cbe-ea351f0023c2' ;
2930 const objectCache = { } as ObjectCacheService ;
30- const mockResponse = jasmine . createSpyObj ( [ 'redirect' ] ) ;
31- const mockPlatformBrowser = 'browser' ;
32- const mockPlatformServer = 'server' ;
3331
3432 beforeEach ( ( ) => {
3533 scheduler = getTestScheduler ( ) ;
@@ -41,9 +39,6 @@ describe('DsoRedirectService', () => {
4139 generateRequestId : requestUUID ,
4240 send : true
4341 } ) ;
44- router = {
45- navigate : jasmine . createSpy ( 'navigate' )
46- } ;
4742
4843 remoteData = createSuccessfulRemoteDataObject ( Object . assign ( new Item ( ) , {
4944 type : 'item' ,
@@ -55,14 +50,17 @@ describe('DsoRedirectService', () => {
5550 a : remoteData
5651 } )
5752 } ) ;
53+
54+ redirectService = jasmine . createSpyObj ( 'redirectService' , {
55+ redirect : { }
56+ } ) ;
57+
5858 service = new DsoRedirectService (
5959 requestService ,
6060 rdbService ,
6161 objectCache ,
6262 halService ,
63- router ,
64- mockResponse ,
65- mockPlatformBrowser // default to CSR except where explicitly SSR below
63+ redirectService
6664 ) ;
6765 } ) ;
6866
@@ -109,7 +107,7 @@ describe('DsoRedirectService', () => {
109107 redir . subscribe ( ) ;
110108 scheduler . schedule ( ( ) => redir ) ;
111109 scheduler . flush ( ) ;
112- expect ( router . navigate ) . toHaveBeenCalledWith ( [ '/items/' + remoteData . payload . uuid ] ) ;
110+ expect ( redirectService . redirect ) . toHaveBeenCalledWith ( '/items/' + remoteData . payload . uuid , 301 ) ;
113111 } ) ;
114112 it ( 'should navigate to entities route with the corresponding entity type' , ( ) => {
115113 remoteData . payload . type = 'item' ;
@@ -126,7 +124,7 @@ describe('DsoRedirectService', () => {
126124 redir . subscribe ( ) ;
127125 scheduler . schedule ( ( ) => redir ) ;
128126 scheduler . flush ( ) ;
129- expect ( router . navigate ) . toHaveBeenCalledWith ( [ '/entities/publication/' + remoteData . payload . uuid ] ) ;
127+ expect ( redirectService . redirect ) . toHaveBeenCalledWith ( '/entities/publication/' + remoteData . payload . uuid , 301 ) ;
130128 } ) ;
131129
132130 it ( 'should navigate to collections route' , ( ) => {
@@ -135,7 +133,7 @@ describe('DsoRedirectService', () => {
135133 redir . subscribe ( ) ;
136134 scheduler . schedule ( ( ) => redir ) ;
137135 scheduler . flush ( ) ;
138- expect ( router . navigate ) . toHaveBeenCalledWith ( [ '/collections/' + remoteData . payload . uuid ] ) ;
136+ expect ( redirectService . redirect ) . toHaveBeenCalledWith ( '/collections/' + remoteData . payload . uuid , 301 ) ;
139137 } ) ;
140138
141139 it ( 'should navigate to communities route' , ( ) => {
@@ -144,26 +142,7 @@ describe('DsoRedirectService', () => {
144142 redir . subscribe ( ) ;
145143 scheduler . schedule ( ( ) => redir ) ;
146144 scheduler . flush ( ) ;
147- expect ( router . navigate ) . toHaveBeenCalledWith ( [ '/communities/' + remoteData . payload . uuid ] ) ;
148- } ) ;
149-
150- it ( 'should return 301 redirect when SSR is used' , ( ) => {
151- service = new DsoRedirectService (
152- requestService ,
153- rdbService ,
154- objectCache ,
155- halService ,
156- router ,
157- mockResponse ,
158- mockPlatformServer // explicitly SSR mode
159- ) ;
160- remoteData . payload . type = 'item' ;
161- const redir = service . findByIdAndIDType ( dsoHandle , IdentifierType . HANDLE ) ;
162- // The framework would normally subscribe but do it here so we can test navigation.
163- redir . subscribe ( ) ;
164- scheduler . schedule ( ( ) => redir ) ;
165- scheduler . flush ( ) ;
166- expect ( mockResponse . redirect ) . toHaveBeenCalledWith ( 301 , '/items/' + remoteData . payload . uuid ) ;
145+ expect ( redirectService . redirect ) . toHaveBeenCalledWith ( '/communities/' + remoteData . payload . uuid , 301 ) ;
167146 } ) ;
168147 } ) ;
169148
0 commit comments