@@ -3,7 +3,7 @@ import { SiteDataService } from '../site-data.service';
33import { AuthService } from '../../auth/auth.service' ;
44import { Site } from '../../shared/site.model' ;
55import { EPerson } from '../../eperson/models/eperson.model' ;
6- import { of as observableOf } from 'rxjs' ;
6+ import { of as observableOf , combineLatest as observableCombineLatest , Observable } from 'rxjs' ;
77import { FeatureID } from './feature-id' ;
88import { hasValue } from '../../../shared/empty.util' ;
99import { RequestParam } from '../../cache/models/request-param.model' ;
@@ -17,6 +17,7 @@ describe('AuthorizationDataService', () => {
1717 let service : AuthorizationDataService ;
1818 let siteService : SiteDataService ;
1919 let authService : AuthService ;
20+ let objectCache ;
2021
2122 let site : Site ;
2223 let ePerson : EPerson ;
@@ -43,7 +44,11 @@ describe('AuthorizationDataService', () => {
4344 isAuthenticated : ( ) => observableOf ( true ) ,
4445 getAuthenticatedUserFromStore : ( ) => observableOf ( ePerson )
4546 } as AuthService ;
46- service = new AuthorizationDataService ( requestService , undefined , undefined , undefined , undefined , undefined , undefined , undefined , authService , siteService ) ;
47+ objectCache = jasmine . createSpyObj ( 'objectCache' , {
48+ addDependency : undefined ,
49+ removeDependents : undefined ,
50+ } ) ;
51+ service = new AuthorizationDataService ( requestService , undefined , undefined , objectCache , undefined , undefined , undefined , undefined , authService , siteService ) ;
4752 }
4853
4954 beforeEach ( ( ) => {
@@ -110,6 +115,43 @@ describe('AuthorizationDataService', () => {
110115 expect ( service . searchBy ) . toHaveBeenCalledWith ( 'object' , createExpected ( objectUrl , ePersonUuid , FeatureID . LoginOnBehalfOf ) , true , true ) ;
111116 } ) ;
112117 } ) ;
118+
119+ describe ( 'dependencies' , ( ) => {
120+ let addDependencySpy ;
121+
122+ beforeEach ( ( ) => {
123+ ( service . searchBy as any ) . and . returnValue ( observableOf ( 'searchBy RD$' ) ) ;
124+ addDependencySpy = spyOn ( service as any , 'addDependency' ) ;
125+ } ) ;
126+
127+ it ( 'should add a dependency on the objectUrl' , ( done ) => {
128+ addDependencySpy . and . callFake ( ( href$ : Observable < string > , dependsOn$ : Observable < string > ) => {
129+ observableCombineLatest ( [ href$ , dependsOn$ ] ) . subscribe ( ( [ href , dependsOn ] ) => {
130+ expect ( href ) . toBe ( 'searchBy RD$' ) ;
131+ expect ( dependsOn ) . toBe ( 'object-href' ) ;
132+ } ) ;
133+ } ) ;
134+
135+ service . searchByObject ( FeatureID . AdministratorOf , 'object-href' ) . subscribe ( ( ) => {
136+ expect ( addDependencySpy ) . toHaveBeenCalled ( ) ;
137+ done ( ) ;
138+ } ) ;
139+ } ) ;
140+
141+ it ( 'should add a dependency on the Site object if no objectUrl is given' , ( done ) => {
142+ addDependencySpy . and . callFake ( ( object$ : Observable < any > , dependsOn$ : Observable < string > ) => {
143+ observableCombineLatest ( [ object$ , dependsOn$ ] ) . subscribe ( ( [ object , dependsOn ] ) => {
144+ expect ( object ) . toBe ( 'searchBy RD$' ) ;
145+ expect ( dependsOn ) . toBe ( 'test-site-href' ) ;
146+ } ) ;
147+ } ) ;
148+
149+ service . searchByObject ( FeatureID . AdministratorOf ) . subscribe ( ( ) => {
150+ expect ( addDependencySpy ) . toHaveBeenCalled ( ) ;
151+ done ( ) ;
152+ } ) ;
153+ } ) ;
154+ } ) ;
113155 } ) ;
114156
115157 describe ( 'isAuthorized' , ( ) => {
0 commit comments