From b833407dd1050e919edc33322d4ce5f53f9d9ea2 Mon Sep 17 00:00:00 2001 From: lotte Date: Tue, 16 Mar 2021 16:46:58 +0100 Subject: [PATCH] 77472: Fix unclickable titles in search lists --- ...arch-result-list-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...in-workflow-list-element.component.spec.ts | 3 +++ ...t-admin-workflow-list-element.component.ts | 8 ++++-- .../core/breadcrumbs/dso-name.service.spec.ts | 2 +- src/app/core/breadcrumbs/dso-name.service.ts | 7 ++++- ...arch-result-list-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...n-sidebar-search-list-element.component.ts | 7 +++-- ...-list-submission-element.component.spec.ts | 3 +++ ...esult-list-submission-element.component.ts | 8 ++++-- ...esult-list-submission-element.component.ts | 8 ++++-- src/app/shared/mocks/dso-name.service.mock.ts | 9 +++++++ ...ch-result-detail-element.component.spec.ts | 5 +++- ...ch-result-detail-element.component.spec.ts | 5 +++- ...ch-result-detail-element.component.spec.ts | 5 +++- ...arch-result-list-element.component.spec.ts | 5 +++- ...ed-search-result-list-element.component.ts | 6 +++-- ...arch-result-list-element.component.spec.ts | 5 +++- ...ed-search-result-list-element.component.ts | 6 +++-- ...arch-result-list-element.component.spec.ts | 5 +++- ...ed-search-result-list-element.component.ts | 6 +++-- ...-list-element-submission.component.spec.ts | 3 +++ ...arch-result-list-element.component.spec.ts | 5 +++- ...ol-search-result-list-element.component.ts | 6 +++-- ...arch-result-list-element.component.spec.ts | 3 +++ ...em-search-result-list-element.component.ts | 6 +++-- ...arch-result-list-element.component.spec.ts | 3 +++ ...em-search-result-list-element.component.ts | 6 +++-- ...-search-result-list-element.component.html | 4 +-- ...arch-result-list-element.component.spec.ts | 3 +++ ...-search-result-list-element.component.html | 4 +-- ...arch-result-list-element.component.spec.ts | 3 +++ ...-search-result-list-element.component.html | 8 +++--- ...arch-result-list-element.component.spec.ts | 27 ++++++++++++------- .../search-result-list-element.component.ts | 5 +++- ...ebar-search-list-element.component.spec.ts | 3 +++ .../sidebar-search-list-element.component.ts | 7 +++-- src/assets/i18n/en.json5 | 4 +++ 44 files changed, 190 insertions(+), 58 deletions(-) create mode 100644 src/app/shared/mocks/dso-name.service.mock.ts diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts index 218cbc0ca2..56e25264cf 100644 --- a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts +++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component.spec.ts @@ -11,6 +11,8 @@ import { Collection } from '../../../../../core/shared/collection.model'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; import { getCollectionEditRoute } from '../../../../../+collection-page/collection-page-routing-paths'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; describe('CollectionAdminSearchResultListElementComponent', () => { let component: CollectionAdminSearchResultListElementComponent; @@ -33,7 +35,8 @@ describe('CollectionAdminSearchResultListElementComponent', () => { RouterTestingModule.withRoutes([]) ], declarations: [CollectionAdminSearchResultListElementComponent], - providers: [{ provide: TruncatableService, useValue: {} }], + providers: [{ provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock }], schemas: [NO_ERRORS_SCHEMA] }) .compileComponents(); diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts index 69fe8856dd..29d9925326 100644 --- a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts +++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component.spec.ts @@ -11,6 +11,8 @@ import { CommunityAdminSearchResultListElementComponent } from './community-admi import { CommunitySearchResult } from '../../../../../shared/object-collection/shared/community-search-result.model'; import { Community } from '../../../../../core/shared/community.model'; import { getCommunityEditRoute } from '../../../../../+community-page/community-page-routing-paths'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; describe('CommunityAdminSearchResultListElementComponent', () => { let component: CommunityAdminSearchResultListElementComponent; @@ -33,7 +35,8 @@ describe('CommunityAdminSearchResultListElementComponent', () => { RouterTestingModule.withRoutes([]) ], declarations: [CommunityAdminSearchResultListElementComponent], - providers: [{ provide: TruncatableService, useValue: {} }], + providers: [{ provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock }], schemas: [NO_ERRORS_SCHEMA] }) .compileComponents(); diff --git a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts index 1d2f25c2eb..3774a07757 100644 --- a/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts +++ b/src/app/+admin/admin-search-page/admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component.spec.ts @@ -8,6 +8,8 @@ import { RouterTestingModule } from '@angular/router/testing'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { ItemAdminSearchResultListElementComponent } from './item-admin-search-result-list-element.component'; import { Item } from '../../../../../core/shared/item.model'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; describe('ItemAdminSearchResultListElementComponent', () => { let component: ItemAdminSearchResultListElementComponent; @@ -30,7 +32,8 @@ describe('ItemAdminSearchResultListElementComponent', () => { RouterTestingModule.withRoutes([]) ], declarations: [ItemAdminSearchResultListElementComponent], - providers: [{ provide: TruncatableService, useValue: {} }], + providers: [{ provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock }], schemas: [NO_ERRORS_SCHEMA] }) .compileComponents(); diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.spec.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.spec.ts index 47907999a2..a792a606e9 100644 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.spec.ts +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.spec.ts @@ -16,6 +16,8 @@ import { Item } from '../../../../../core/shared/item.model'; import { WorkflowItemSearchResult } from '../../../../../shared/object-collection/shared/workflow-item-search-result.model'; import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils'; import { getMockLinkService } from '../../../../../shared/mocks/link-service.mock'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; describe('WorkflowItemAdminWorkflowListElementComponent', () => { let component: WorkflowItemSearchResultAdminWorkflowListElementComponent; @@ -49,6 +51,7 @@ describe('WorkflowItemAdminWorkflowListElementComponent', () => { providers: [ { provide: TruncatableService, useValue: mockTruncatableService }, { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }) diff --git a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.ts b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.ts index 80225db09f..3dd17faf25 100644 --- a/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.ts +++ b/src/app/+admin/admin-workflow-page/admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component.ts @@ -12,6 +12,7 @@ import { Item } from '../../../../../core/shared/item.model'; import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { WorkflowItemSearchResult } from '../../../../../shared/object-collection/shared/workflow-item-search-result.model'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; @listableObjectComponent(WorkflowItemSearchResult, ViewMode.ListElement, Context.AdminWorkflowSearch) @Component({ @@ -29,8 +30,11 @@ export class WorkflowItemSearchResultAdminWorkflowListElementComponent extends S */ public item$: Observable; - constructor(private linkService: LinkService, protected truncatableService: TruncatableService) { - super(truncatableService); + constructor(private linkService: LinkService, + protected truncatableService: TruncatableService, + protected dsoNameService: DSONameService + ) { + super(truncatableService, dsoNameService); } /** diff --git a/src/app/core/breadcrumbs/dso-name.service.spec.ts b/src/app/core/breadcrumbs/dso-name.service.spec.ts index 5dd02032b9..7a399ce748 100644 --- a/src/app/core/breadcrumbs/dso-name.service.spec.ts +++ b/src/app/core/breadcrumbs/dso-name.service.spec.ts @@ -45,7 +45,7 @@ describe(`DSONameService`, () => { } }); - service = new DSONameService(); + service = new DSONameService({ instant: (a) => a } as any); }); describe(`getName`, () => { diff --git a/src/app/core/breadcrumbs/dso-name.service.ts b/src/app/core/breadcrumbs/dso-name.service.ts index 7f8af2352b..38363d1989 100644 --- a/src/app/core/breadcrumbs/dso-name.service.ts +++ b/src/app/core/breadcrumbs/dso-name.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { hasValue } from '../../shared/empty.util'; import { DSpaceObject } from '../shared/dspace-object.model'; +import { TranslateService } from '@ngx-translate/core'; /** * Returns a name for a {@link DSpaceObject} based @@ -11,6 +12,10 @@ import { DSpaceObject } from '../shared/dspace-object.model'; }) export class DSONameService { + constructor(private translateService: TranslateService) { + + } + /** * Functions to generate the specific names. * @@ -29,7 +34,7 @@ export class DSONameService { }, Default: (dso: DSpaceObject): string => { // If object doesn't have dc.title metadata use name property - return dso.firstMetadataValue('dc.title') || dso.name; + return dso.firstMetadataValue('dc.title') || dso.name || this.translateService.instant('dso.name.untitled'); } }; diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts index 9f15cc9816..b47a767be2 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-issue/journal-issue-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { JournalIssueSearchResultListElementComponent } from './journal-issue-se import { Item } from '../../../../../core/shared/item.model'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; let journalIssueListElementComponent: JournalIssueSearchResultListElementComponent; let fixture: ComponentFixture; @@ -60,7 +62,8 @@ describe('JournalIssueSearchResultListElementComponent', () => { TestBed.configureTestingModule({ declarations: [JournalIssueSearchResultListElementComponent, TruncatePipe], providers: [ - { provide: TruncatableService, useValue: {} } + { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts index b39129fbd2..d03bc29d6b 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { Item } from '../../../../../core/shared/item.model'; import { JournalVolumeSearchResultListElementComponent } from './journal-volume-search-result-list-element.component'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; let journalVolumeListElementComponent: JournalVolumeSearchResultListElementComponent; let fixture: ComponentFixture; @@ -59,7 +61,8 @@ describe('JournalVolumeSearchResultListElementComponent', () => { TestBed.configureTestingModule({ declarations: [JournalVolumeSearchResultListElementComponent, TruncatePipe], providers: [ - { provide: TruncatableService, useValue: {} } + { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock }, ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts index 5ab60e97b7..9aca414ec6 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { Item } from '../../../../../core/shared/item.model'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; let journalListElementComponent: JournalSearchResultListElementComponent; let fixture: ComponentFixture; @@ -55,7 +57,8 @@ describe('JournalSearchResultListElementComponent', () => { TestBed.configureTestingModule({ declarations: [JournalSearchResultListElementComponent, TruncatePipe], providers: [ - { provide: TruncatableService, useValue: {} } + { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock }, ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts index 29bb069121..d116b2ade7 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { Item } from '../../../../../core/shared/item.model'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; let orgUnitListElementComponent: OrgUnitSearchResultListElementComponent; let fixture: ComponentFixture; @@ -53,7 +55,8 @@ describe('OrgUnitSearchResultListElementComponent', () => { TestBed.configureTestingModule({ declarations: [ OrgUnitSearchResultListElementComponent , TruncatePipe], providers: [ - { provide: TruncatableService, useValue: {} } + { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [ NO_ERRORS_SCHEMA ] diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts index 08fdf821d3..2acb02da7d 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { PersonSearchResultListElementComponent } from './person-search-result-l import { Item } from '../../../../../core/shared/item.model'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; let personListElementComponent: PersonSearchResultListElementComponent; let fixture: ComponentFixture; @@ -53,7 +55,8 @@ describe('PersonSearchResultListElementComponent', () => { TestBed.configureTestingModule({ declarations: [PersonSearchResultListElementComponent, TruncatePipe], providers: [ - { provide: TruncatableService, useValue: {} } + { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts index 1d45d98281..8b27a86f6d 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts @@ -6,6 +6,8 @@ import { ProjectSearchResultListElementComponent } from './project-search-result import { Item } from '../../../../../core/shared/item.model'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; let projectListElementComponent: ProjectSearchResultListElementComponent; let fixture: ComponentFixture; @@ -53,7 +55,8 @@ describe('ProjectSearchResultListElementComponent', () => { TestBed.configureTestingModule({ declarations: [ProjectSearchResultListElementComponent, TruncatePipe], providers: [ - { provide: TruncatableService, useValue: {} } + { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts index ade080f2e2..281f22ddb4 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts @@ -9,6 +9,7 @@ import { isNotEmpty } from '../../../../../shared/empty.util'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { LinkService } from '../../../../../core/cache/builders/link.service'; import { TranslateService } from '@ngx-translate/core'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; @listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.SideBarSearchModal) @listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.SideBarSearchModalCurrent) @@ -23,8 +24,10 @@ import { TranslateService } from '@ngx-translate/core'; export class PersonSidebarSearchListElementComponent extends SidebarSearchListElementComponent { constructor(protected truncatableService: TruncatableService, protected linkService: LinkService, - protected translateService: TranslateService) { - super(truncatableService, linkService); + protected translateService: TranslateService, + protected dsoNameService: DSONameService + ) { + super(truncatableService, linkService, dsoNameService); } /** diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts index ff74c6554f..13a307e18f 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts @@ -27,6 +27,8 @@ import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote- import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { OrgUnitSearchResultListSubmissionElementComponent } from './org-unit-search-result-list-submission-element.component'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; let personListElementComponent: OrgUnitSearchResultListSubmissionElementComponent; let fixture: ComponentFixture; @@ -115,6 +117,7 @@ describe('OrgUnitSearchResultListSubmissionElementComponent', () => { { provide: DSOChangeAnalyzer, useValue: {} }, { provide: DefaultChangeAnalyzer, useValue: {} }, { provide: BitstreamDataService, useValue: mockBitstreamDataService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts index 0c6d2b450c..091549dcea 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts @@ -19,6 +19,8 @@ import { MetadataValue } from '../../../../../core/shared/metadata.models'; import { ItemDataService } from '../../../../../core/data/item-data.service'; import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; import { NameVariantModalComponent } from '../../name-variant-modal/name-variant-modal.component'; +import { LinkService } from '../../../../../core/cache/builders/link.service'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; @listableObjectComponent('OrgUnitSearchResult', ViewMode.ListElement, Context.EntitySearchModal) @listableObjectComponent('OrgUnitSearchResult', ViewMode.ListElement, Context.EntitySearchModalWithNameVariants) @@ -44,8 +46,10 @@ export class OrgUnitSearchResultListSubmissionElementComponent extends SearchRes private modalService: NgbModal, private itemDataService: ItemDataService, private bitstreamDataService: BitstreamDataService, - private selectableListService: SelectableListService) { - super(truncatableService); + private selectableListService: SelectableListService, + protected dsoNameService: DSONameService + ) { + super(truncatableService, dsoNameService); } ngOnInit() { diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts index 96be3d1b4e..2d991d5c64 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.ts @@ -19,6 +19,8 @@ import { NameVariantModalComponent } from '../../name-variant-modal/name-variant import { MetadataValue } from '../../../../../core/shared/metadata.models'; import { ItemDataService } from '../../../../../core/data/item-data.service'; import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; +import { LinkService } from '../../../../../core/cache/builders/link.service'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; @listableObjectComponent('PersonSearchResult', ViewMode.ListElement, Context.EntitySearchModalWithNameVariants) @Component({ @@ -42,8 +44,10 @@ export class PersonSearchResultListSubmissionElementComponent extends SearchResu private modalService: NgbModal, private itemDataService: ItemDataService, private bitstreamDataService: BitstreamDataService, - private selectableListService: SelectableListService) { - super(truncatableService); + private selectableListService: SelectableListService, + protected dsoNameService: DSONameService + ) { + super(truncatableService, dsoNameService); } ngOnInit() { diff --git a/src/app/shared/mocks/dso-name.service.mock.ts b/src/app/shared/mocks/dso-name.service.mock.ts new file mode 100644 index 0000000000..f4947cc860 --- /dev/null +++ b/src/app/shared/mocks/dso-name.service.mock.ts @@ -0,0 +1,9 @@ +import { DSpaceObject } from '../../core/shared/dspace-object.model'; + +export const UNDEFINED_NAME = 'Undefined'; + +export class DSONameServiceMock { + public getName(dso: DSpaceObject) { + return UNDEFINED_NAME; + } +} diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.spec.ts index f5f19fc041..8e0458d49f 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/pool-search-result/pool-search-result-detail-element.component.spec.ts @@ -15,6 +15,8 @@ import { VarDirective } from '../../../utils/var.directive'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { By } from '@angular/platform-browser'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: PoolSearchResultDetailElementComponent; let fixture: ComponentFixture; @@ -67,7 +69,8 @@ describe('PoolSearchResultDetailElementComponent', () => { providers: [ { provide: 'objectElementProvider', useValue: (mockResultObject) }, { provide: 'indexElementProvider', useValue: (compIndex) }, - { provide: LinkService, useValue: linkService } + { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock }, ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(PoolSearchResultDetailElementComponent, { diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts index 8745697fbe..536bd6d0bb 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workflow-item-search-result/workflow-item-search-result-detail-element.component.spec.ts @@ -12,6 +12,8 @@ import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { LinkService } from '../../../../core/cache/builders/link.service'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: WorkflowItemSearchResultDetailElementComponent; let fixture: ComponentFixture; @@ -62,7 +64,8 @@ describe('WorkflowItemSearchResultDetailElementComponent', () => { providers: [ { provide: 'objectElementProvider', useValue: (mockResultObject) }, { provide: 'indexElementProvider', useValue: (compIndex) }, - { provide: LinkService, useValue: linkService } + { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock }, ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(WorkflowItemSearchResultDetailElementComponent, { diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts index 1662e033d7..00a20b006a 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts @@ -12,6 +12,8 @@ import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { LinkService } from '../../../../core/cache/builders/link.service'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: WorkspaceItemSearchResultDetailElementComponent; let fixture: ComponentFixture; @@ -62,7 +64,8 @@ describe('WorkspaceItemSearchResultDetailElementComponent', () => { providers: [ { provide: 'objectElementProvider', useValue: (mockResultObject) }, { provide: 'indexElementProvider', useValue: (compIndex) }, - { provide: LinkService, useValue: linkService } + { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock }, ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(WorkspaceItemSearchResultDetailElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts index e56999472e..b85b31c8ba 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.spec.ts @@ -15,6 +15,8 @@ import { LinkService } from '../../../../../core/cache/builders/link.service'; import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { ClaimedApprovedTaskSearchResult } from '../../../../object-collection/shared/claimed-approved-task-search-result.model'; import { ClaimedApprovedSearchResultListElementComponent } from './claimed-approved-search-result-list-element.component'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../mocks/dso-name.service.mock'; let component: ClaimedApprovedSearchResultListElementComponent; let fixture: ComponentFixture; @@ -64,7 +66,8 @@ describe('ClaimedApprovedSearchResultListElementComponent', () => { declarations: [ClaimedApprovedSearchResultListElementComponent, VarDirective], providers: [ { provide: TruncatableService, useValue: {} }, - { provide: LinkService, useValue: linkService } + { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(ClaimedApprovedSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts index 36e468808a..5571782ce2 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-approved-search-result/claimed-approved-search-result-list-element.component.ts @@ -12,6 +12,7 @@ import { followLink } from '../../../../utils/follow-link-config.model'; import { SearchResultListElementComponent } from '../../../search-result-list-element/search-result-list-element.component'; import { ClaimedTaskSearchResult } from '../../../../object-collection/shared/claimed-task-search-result.model'; import { ClaimedTask } from '../../../../../core/tasks/models/claimed-task-object.model'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; /** * This component renders claimed task approved object for the search result in the list view. @@ -41,9 +42,10 @@ export class ClaimedApprovedSearchResultListElementComponent extends SearchResul public constructor( protected linkService: LinkService, - protected truncatableService: TruncatableService + protected truncatableService: TruncatableService, + protected dsoNameService: DSONameService ) { - super(truncatableService); + super(truncatableService, dsoNameService); } /** diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declided-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declided-search-result-list-element.component.spec.ts index 8a8d542063..291c8244b7 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declided-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declided-search-result-list-element.component.spec.ts @@ -15,6 +15,8 @@ import { VarDirective } from '../../../../utils/var.directive'; import { TruncatableService } from '../../../../truncatable/truncatable.service'; import { LinkService } from '../../../../../core/cache/builders/link.service'; import { MyDspaceItemStatusType } from '../../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../../mocks/dso-name.service.mock'; let component: ClaimedDeclinedSearchResultListElementComponent; let fixture: ComponentFixture; @@ -64,7 +66,8 @@ describe('ClaimedDeclinedSearchResultListElementComponent', () => { declarations: [ClaimedDeclinedSearchResultListElementComponent, VarDirective], providers: [ { provide: TruncatableService, useValue: {} }, - { provide: LinkService, useValue: linkService } + { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(ClaimedDeclinedSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts index 7db12c1725..630aa699a7 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-declined-search-result/claimed-declined-search-result-list-element.component.ts @@ -13,6 +13,7 @@ import { followLink } from '../../../../utils/follow-link-config.model'; import { SearchResultListElementComponent } from '../../../search-result-list-element/search-result-list-element.component'; import { ClaimedTaskSearchResult } from '../../../../object-collection/shared/claimed-task-search-result.model'; import { ClaimedTask } from '../../../../../core/tasks/models/claimed-task-object.model'; +import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; /** * This component renders claimed task declined object for the search result in the list view. @@ -42,9 +43,10 @@ export class ClaimedDeclinedSearchResultListElementComponent extends SearchResul public constructor( protected linkService: LinkService, - protected truncatableService: TruncatableService + protected truncatableService: TruncatableService, + protected dsoNameService: DSONameService ) { - super(truncatableService); + super(truncatableService, dsoNameService); } /** diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts index 5dad421f68..7896061a73 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.spec.ts @@ -16,6 +16,8 @@ import { VarDirective } from '../../../utils/var.directive'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { By } from '@angular/platform-browser'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: ClaimedSearchResultListElementComponent; let fixture: ComponentFixture; @@ -65,7 +67,8 @@ describe('ClaimedSearchResultListElementComponent', () => { declarations: [ClaimedSearchResultListElementComponent, VarDirective], providers: [ { provide: TruncatableService, useValue: {} }, - { provide: LinkService, useValue: linkService } + { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(ClaimedSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts index cef1056401..dae3272889 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts @@ -12,6 +12,7 @@ import { WorkflowItem } from '../../../../core/submission/models/workflowitem.mo import { followLink } from '../../../utils/follow-link-config.model'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.model'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; @Component({ selector: 'ds-claimed-search-result-list-element', @@ -38,9 +39,10 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle public constructor( protected linkService: LinkService, - protected truncatableService: TruncatableService + protected truncatableService: TruncatableService, + protected dsoNameService: DSONameService ) { - super(truncatableService); + super(truncatableService, dsoNameService); } /** diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts index e2017e8748..d1871d0996 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.spec.ts @@ -10,6 +10,8 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search- import { ItemSearchResultListElementSubmissionComponent } from './item-search-result-list-element-submission.component'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { By } from '@angular/platform-browser'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: ItemSearchResultListElementSubmissionComponent; let fixture: ComponentFixture; @@ -54,6 +56,7 @@ describe('ItemMyDSpaceResultListElementComponent', () => { declarations: [ItemSearchResultListElementSubmissionComponent], providers: [ { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(ItemSearchResultListElementSubmissionComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts index e55b45aed7..18db9abd67 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.spec.ts @@ -16,6 +16,8 @@ import { VarDirective } from '../../../utils/var.directive'; import { LinkService } from '../../../../core/cache/builders/link.service'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { By } from '@angular/platform-browser'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: PoolSearchResultListElementComponent; let fixture: ComponentFixture; @@ -65,7 +67,8 @@ describe('PoolSearchResultListElementComponent', () => { declarations: [PoolSearchResultListElementComponent, VarDirective], providers: [ { provide: TruncatableService, useValue: {} }, - { provide: LinkService, useValue: linkService } + { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(PoolSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts index b130d5001c..fe4fa715ee 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts @@ -13,6 +13,7 @@ import { SearchResultListElementComponent } from '../../search-result-list-eleme import { TruncatableService } from '../../../truncatable/truncatable.service'; import { followLink } from '../../../utils/follow-link-config.model'; import { LinkService } from '../../../../core/cache/builders/link.service'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; /** * This component renders pool task object for the search result in the list view. @@ -48,9 +49,10 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen constructor( protected linkService: LinkService, - protected truncatableService: TruncatableService + protected truncatableService: TruncatableService, + protected dsoNameService: DSONameService ) { - super(truncatableService); + super(truncatableService, dsoNameService); } /** diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts index 3743a9bd22..61337b0cb3 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.spec.ts @@ -16,6 +16,8 @@ import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { WorkflowItemSearchResultListElementComponent } from './workflow-item-search-result-list-element.component'; import { By } from '@angular/platform-browser'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: WorkflowItemSearchResultListElementComponent; let fixture: ComponentFixture; @@ -67,6 +69,7 @@ describe('WorkflowItemSearchResultListElementComponent', () => { { provide: TruncatableService, useValue: {} }, { provide: ItemDataService, useValue: {} }, { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(WorkflowItemSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts index 432f69f28c..836a3ee268 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts @@ -15,6 +15,7 @@ import { WorkflowItemSearchResult } from '../../../object-collection/shared/work import { TruncatableService } from '../../../truncatable/truncatable.service'; import { followLink } from '../../../utils/follow-link-config.model'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; /** * This component renders workflowitem object for the search result in the list view. @@ -40,9 +41,10 @@ export class WorkflowItemSearchResultListElementComponent extends SearchResultLi constructor( protected truncatableService: TruncatableService, - protected linkService: LinkService + protected linkService: LinkService, + protected dsoNameService: DSONameService ) { - super(truncatableService); + super(truncatableService, dsoNameService); } /** diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts index b1f2a2aeb9..87f5fd3733 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts @@ -16,6 +16,8 @@ import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { WorkspaceItemSearchResultListElementComponent } from './workspace-item-search-result-list-element.component'; import { By } from '@angular/platform-browser'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let component: WorkspaceItemSearchResultListElementComponent; let fixture: ComponentFixture; @@ -66,6 +68,7 @@ describe('WorkspaceItemSearchResultListElementComponent', () => { { provide: TruncatableService, useValue: {} }, { provide: ItemDataService, useValue: {} }, { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(WorkspaceItemSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts index b9d89ef6ab..5edfc1929e 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts @@ -15,6 +15,7 @@ import { WorkspaceItemSearchResult } from '../../../object-collection/shared/wor import { TruncatableService } from '../../../truncatable/truncatable.service'; import { followLink } from '../../../utils/follow-link-config.model'; import { SearchResultListElementComponent } from '../../search-result-list-element/search-result-list-element.component'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; /** * This component renders workspaceitem object for the search result in the list view. @@ -40,9 +41,10 @@ export class WorkspaceItemSearchResultListElementComponent extends SearchResultL constructor( protected truncatableService: TruncatableService, - protected linkService: LinkService + protected linkService: LinkService, + protected dsoNameService: DSONameService ) { - super(truncatableService); + super(truncatableService, dsoNameService); } /** diff --git a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html index 1c081e2805..c98003cd1d 100644 --- a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.html @@ -1,4 +1,4 @@ - - + +
diff --git a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.spec.ts b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.spec.ts index d50fdccb80..bdfe825c82 100644 --- a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { TruncatePipe } from '../../../utils/truncate.pipe'; import { Collection } from '../../../../core/shared/collection.model'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let collectionSearchResultListElementComponent: CollectionSearchResultListElementComponent; let fixture: ComponentFixture; @@ -47,6 +49,7 @@ describe('CollectionSearchResultListElementComponent', () => { declarations: [CollectionSearchResultListElementComponent, TruncatePipe], providers: [ { provide: TruncatableService, useValue: truncatableServiceStub }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(CollectionSearchResultListElementComponent, { diff --git a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html index 08b02d123a..e0f0319ffc 100644 --- a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.html @@ -1,4 +1,4 @@ - - + +
diff --git a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.spec.ts b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.spec.ts index c5588f5371..529594671c 100644 --- a/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/search-result-list-element/community-search-result/community-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { TruncatePipe } from '../../../utils/truncate.pipe'; import { Community } from '../../../../core/shared/community.model'; import { TruncatableService } from '../../../truncatable/truncatable.service'; import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model'; +import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; let communitySearchResultListElementComponent: CommunitySearchResultListElementComponent; let fixture: ComponentFixture; @@ -47,6 +49,7 @@ describe('CommunitySearchResultListElementComponent', () => { declarations: [CommunitySearchResultListElementComponent, TruncatePipe], providers: [ { provide: TruncatableService, useValue: truncatableServiceStub }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html index 01a026eec9..80a4fd81fd 100644 --- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.html @@ -2,10 +2,10 @@ - + [routerLink]="[itemPageRoute]" class="lead item-list-title" + [innerHTML]="dsoTitle"> + diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts index f8a8be415d..d32ac8058d 100644 --- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component.spec.ts @@ -7,6 +7,8 @@ import { Item } from '../../../../../../core/shared/item.model'; import { TruncatePipe } from '../../../../../utils/truncate.pipe'; import { TruncatableService } from '../../../../../truncatable/truncatable.service'; import { ItemSearchResult } from '../../../../../object-collection/shared/item-search-result.model'; +import { DSONameService } from '../../../../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock, UNDEFINED_NAME } from '../../../../../mocks/dso-name.service.mock'; let publicationListElementComponent: ItemSearchResultListElementComponent; let fixture: ComponentFixture; @@ -53,23 +55,18 @@ const mockItemWithoutMetadata: ItemSearchResult = Object.assign(new ItemSearchRe indexableObject: Object.assign(new Item(), { bundles: observableOf({}), - metadata: { - 'dc.title': [ - { - language: 'en_US', - value: 'This is just another title' - } - ] - } + metadata: {} }) }); + describe('ItemListElementComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ItemSearchResultListElementComponent, TruncatePipe], providers: [ - { provide: TruncatableService, useValue: {} } + { provide: TruncatableService, useValue: {} }, + { provide: DSONameService, useClass: DSONameServiceMock } ], schemas: [NO_ERRORS_SCHEMA] @@ -179,4 +176,16 @@ describe('ItemListElementComponent', () => { expect(abstractField).toBeNull(); }); }); + + describe('When the item has no title', () => { + beforeEach(() => { + publicationListElementComponent.object = mockItemWithoutMetadata; + fixture.detectChanges(); + }); + + it('should show the fallback untitled translation', () => { + const titleField = fixture.debugElement.query(By.css('.item-list-title')); + expect(titleField.nativeElement.textContent.trim()).toEqual(UNDEFINED_NAME); + }); + }); }); diff --git a/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts b/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts index 3ad4f5e7e6..afd0363e7a 100644 --- a/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts +++ b/src/app/shared/object-list/search-result-list-element/search-result-list-element.component.ts @@ -7,6 +7,7 @@ import { hasValue } from '../../empty.util'; import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component'; import { TruncatableService } from '../../truncatable/truncatable.service'; import { Metadata } from '../../../core/shared/metadata.utils'; +import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; @Component({ selector: 'ds-search-result-list-element', @@ -17,8 +18,9 @@ export class SearchResultListElementComponent, K exten * The DSpaceObject of the search result */ dso: K; + dsoTitle: string; - public constructor(protected truncatableService: TruncatableService) { + public constructor(protected truncatableService: TruncatableService, protected dsoNameService: DSONameService) { super(); } @@ -28,6 +30,7 @@ export class SearchResultListElementComponent, K exten ngOnInit(): void { if (hasValue(this.object)) { this.dso = this.object.indexableObject; + this.dsoTitle = this.dsoNameService.getName(this.dso); } } diff --git a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts index 3d402ca0e4..31ad68ec63 100644 --- a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts +++ b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec.ts @@ -10,6 +10,8 @@ import { LinkService } from '../../../core/cache/builders/link.service'; import { createSuccessfulRemoteDataObject$ } from '../../remote-data.utils'; import { HALResource } from '../../../core/shared/hal-resource.model'; import { ChildHALResource } from '../../../core/shared/child-hal-resource.model'; +import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; +import { DSONameServiceMock } from '../../mocks/dso-name.service.mock'; export function createSidebarSearchListElementTests( componentClass: any, @@ -38,6 +40,7 @@ export function createSidebarSearchListElementTests( providers: [ { provide: TruncatableService, useValue: {} }, { provide: LinkService, useValue: linkService }, + { provide: DSONameService, useClass: DSONameServiceMock }, ...extraProviders ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts index 478bf50771..a0d70a43c7 100644 --- a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts +++ b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts @@ -12,6 +12,7 @@ import { followLink } from '../../utils/follow-link-config.model'; import { RemoteData } from '../../../core/data/remote-data'; import { of as observableOf } from 'rxjs'; import { Context } from '../../../core/shared/context.model'; +import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; @Component({ selector: 'ds-sidebar-search-list-element', @@ -39,8 +40,10 @@ export class SidebarSearchListElementComponent, K exte description: string; public constructor(protected truncatableService: TruncatableService, - protected linkService: LinkService) { - super(truncatableService); + protected linkService: LinkService, + protected dsoNameService: DSONameService + ) { + super(truncatableService, dsoNameService); } /** diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index a16d41a9e3..f60abfb253 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -1098,6 +1098,10 @@ + "dso.name.untitled": "Untitled", + + + "dso-selector.create.collection.head": "New collection", "dso-selector.create.collection.sub-level": "Create a new collection in",