@@ -9,6 +9,10 @@ describe(`DSONameService`, () => {
99 let service : DSONameService ;
1010 let mockPersonName : string ;
1111 let mockPerson : DSpaceObject ;
12+ let mockEPersonNameFirst : string ;
13+ let mockEPersonFirst : DSpaceObject ;
14+ let mockEPersonName : string ;
15+ let mockEPerson : DSpaceObject ;
1216 let mockOrgUnitName : string ;
1317 let mockOrgUnit : DSpaceObject ;
1418 let mockDSOName : string ;
@@ -25,6 +29,26 @@ describe(`DSONameService`, () => {
2529 } ,
2630 } ) ;
2731
32+ mockEPersonName = 'John Doe' ;
33+ mockEPerson = Object . assign ( new DSpaceObject ( ) , {
34+ firstMetadataValue ( keyOrKeys : string | string [ ] , valueFilter ?: MetadataValueFilter ) : string {
35+ return mockEPersonName ;
36+ } ,
37+ getRenderTypes ( ) : ( string | GenericConstructor < ListableObject > ) [ ] {
38+ return [ 'EPerson' , Item , DSpaceObject ] ;
39+ } ,
40+ } ) ;
41+
42+ mockEPersonNameFirst = 'John' ;
43+ mockEPersonFirst = Object . assign ( new DSpaceObject ( ) , {
44+ firstMetadataValue ( keyOrKeys : string | string [ ] , valueFilter ?: MetadataValueFilter ) : string {
45+ return mockEPersonNameFirst ;
46+ } ,
47+ getRenderTypes ( ) : ( string | GenericConstructor < ListableObject > ) [ ] {
48+ return [ 'EPerson' , Item , DSpaceObject ] ;
49+ } ,
50+ } ) ;
51+
2852 mockOrgUnitName = 'Molecular Spectroscopy' ;
2953 mockOrgUnit = Object . assign ( new DSpaceObject ( ) , {
3054 firstMetadataValue ( keyOrKeys : string | string [ ] , valueFilter ?: MetadataValueFilter ) : string {
@@ -67,6 +91,15 @@ describe(`DSONameService`, () => {
6791 expect ( result ) . toBe ( 'Bingo!' ) ;
6892 } ) ;
6993
94+ it ( `should use the EPerson factory for EPerson objects` , ( ) => {
95+ spyOn ( ( service as any ) . factories , 'EPerson' ) . and . returnValue ( 'Bingo!' ) ;
96+
97+ const result = service . getName ( mockEPerson ) ;
98+
99+ expect ( ( service as any ) . factories . EPerson ) . toHaveBeenCalledWith ( mockEPerson ) ;
100+ expect ( result ) . toBe ( 'Bingo!' ) ;
101+ } ) ;
102+
70103 it ( `should use the Default factory for regular DSpaceObjects` , ( ) => {
71104 spyOn ( ( service as any ) . factories , 'Default' ) . and . returnValue ( 'Bingo!' ) ;
72105
@@ -107,6 +140,35 @@ describe(`DSONameService`, () => {
107140 } ) ;
108141 } ) ;
109142
143+ describe ( `factories.EPerson` , ( ) => {
144+ describe ( `with eperson.firstname and without eperson.lastname` , ( ) => {
145+ beforeEach ( ( ) => {
146+ spyOn ( mockEPerson , 'firstMetadataValue' ) . and . returnValues ( ...mockEPersonName . split ( ' ' ) ) ;
147+ } ) ;
148+
149+ it ( `should return 'eperson.firstname' and 'eperson.lastname'` , ( ) => {
150+ const result = ( service as any ) . factories . EPerson ( mockEPerson ) ;
151+ expect ( result ) . toBe ( mockEPersonName ) ;
152+ expect ( mockEPerson . firstMetadataValue ) . toHaveBeenCalledWith ( 'eperson.firstname' ) ;
153+ expect ( mockEPerson . firstMetadataValue ) . toHaveBeenCalledWith ( 'eperson.lastname' ) ;
154+ } ) ;
155+ } ) ;
156+
157+ describe ( ` with eperson.firstname and without eperson.lastname` , ( ) => {
158+ beforeEach ( ( ) => {
159+ spyOn ( mockEPersonFirst , 'firstMetadataValue' ) . and . returnValues ( mockEPersonNameFirst , undefined ) ;
160+ } ) ;
161+
162+ it ( `should return 'eperson.firstname'` , ( ) => {
163+ const result = ( service as any ) . factories . EPerson ( mockEPersonFirst ) ;
164+ expect ( result ) . toBe ( mockEPersonNameFirst ) ;
165+ expect ( mockEPersonFirst . firstMetadataValue ) . toHaveBeenCalledWith ( 'eperson.firstname' ) ;
166+ expect ( mockEPersonFirst . firstMetadataValue ) . toHaveBeenCalledWith ( 'eperson.lastname' ) ;
167+ } ) ;
168+ } ) ;
169+ } ) ;
170+
171+
110172 describe ( `factories.OrgUnit` , ( ) => {
111173 beforeEach ( ( ) => {
112174 spyOn ( mockOrgUnit , 'firstMetadataValue' ) . and . callThrough ( ) ;
0 commit comments