From d9ed91df05be56b32c693a793e675e0a19afd32d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paulo=20Gra=C3=A7a?= Date: Tue, 30 May 2023 11:46:59 +0100 Subject: [PATCH] new project metadata representation component --- ...-item-metadata-list-element.component.html | 12 +++++ ...em-metadata-list-element.component.spec.ts | 46 +++++++++++++++++++ ...ct-item-metadata-list-element.component.ts | 15 ++++++ 3 files changed, 73 insertions(+) create mode 100644 src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.html create mode 100644 src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts create mode 100644 src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts diff --git a/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.html b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.html new file mode 100644 index 0000000000..f8eca9da6a --- /dev/null +++ b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.html @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts new file mode 100644 index 0000000000..a20120b691 --- /dev/null +++ b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts @@ -0,0 +1,46 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; +import { By } from '@angular/platform-browser'; + +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; + +import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-representation/item/item-metadata-representation.model'; +import { Item } from '../../../../core/shared/item.model'; +import { ProjectItemMetadataListElementComponent } from './project-item-metadata-list-element.component'; +import { MetadataValue } from '../../../../core/shared/metadata.models'; + +const projectTitle = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.'; +const mockItem = Object.assign(new Item(), { metadata: { 'dc.title': [{ value: projectTitle }] } }); +const virtMD = Object.assign(new MetadataValue(), { value: projectTitle }); + +const mockItemMetadataRepresentation = Object.assign(new ItemMetadataRepresentation(virtMD), mockItem); + +describe('ProjectItemMetadataListElementComponent', () => { + let comp: ProjectItemMetadataListElementComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports:[ + NgbModule + ], + declarations: [ProjectItemMetadataListElementComponent], + schemas: [NO_ERRORS_SCHEMA] + }).overrideComponent(ProjectItemMetadataListElementComponent, { + set: { changeDetection: ChangeDetectionStrategy.Default } + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ProjectItemMetadataListElementComponent); + comp = fixture.componentInstance; + comp.metadataRepresentation = mockItemMetadataRepresentation; + fixture.detectChanges(); + }); + + it('should show the project\'s name as a link', () => { + const linkText = fixture.debugElement.query(By.css('a')).nativeElement.textContent; + expect(linkText).toBe(projectTitle); + }); + +}); diff --git a/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts new file mode 100644 index 0000000000..7f291b0996 --- /dev/null +++ b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts @@ -0,0 +1,15 @@ +import { Component } from '@angular/core'; +import { metadataRepresentationComponent } from '../../../../shared/metadata-representation/metadata-representation.decorator'; +import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model'; +import { ItemMetadataRepresentationListElementComponent } from '../../../../shared/object-list/metadata-representation-list-element/item/item-metadata-representation-list-element.component'; + +@metadataRepresentationComponent('Project', MetadataRepresentationType.Item) +@Component({ + selector: 'ds-project-item-metadata-list-element', + templateUrl: './project-item-metadata-list-element.component.html' +}) +/** + * The component for displaying an item of the type Project as a metadata field + */ +export class ProjectItemMetadataListElementComponent extends ItemMetadataRepresentationListElementComponent { +}