Skip to content

Commit 97fade0

Browse files
extend eperson render type for display of dso name
DSpace#2947
1 parent 0a1764c commit 97fade0

2 files changed

Lines changed: 63 additions & 1 deletion

File tree

src/app/core/breadcrumbs/dso-name.service.spec.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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();

src/app/core/eperson/models/eperson.model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ export class EPerson extends DSpaceObject {
9191
public groups?: Observable<RemoteData<PaginatedList<Group>>>;
9292

9393
getRenderTypes(): (string | GenericConstructor<ListableObject>)[] {
94-
return [this.constructor.name, ...super.getRenderTypes()];
94+
return ['EPerson', this.constructor.name, ...super.getRenderTypes()];
9595
}
9696

9797
}

0 commit comments

Comments
 (0)