From 65516b3880352cd7fe04962dbd4ad46fbfa9e9d8 Mon Sep 17 00:00:00 2001 From: Alessandro Martelli Date: Wed, 28 Oct 2020 17:37:42 +0100 Subject: [PATCH 1/6] [CSTPER-222] handle metadata reading for communities and collections --- src/app/core/shared/collection.model.ts | 23 +++++-- src/app/core/shared/community.model.ts | 23 +++++-- .../comcol-page-handle.component.spec.ts | 62 +++++++++++++++++++ .../comcol-page-handle.component.ts | 7 ++- 4 files changed, 100 insertions(+), 15 deletions(-) create mode 100644 src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts diff --git a/src/app/core/shared/collection.model.ts b/src/app/core/shared/collection.model.ts index c1464d7d39..1505359cfd 100644 --- a/src/app/core/shared/collection.model.ts +++ b/src/app/core/shared/collection.model.ts @@ -1,4 +1,4 @@ -import { autoserialize, deserialize, inheritSerialization } from 'cerialize'; +import { autoserialize, deserialize, deserializeAs, inheritSerialization } from 'cerialize'; import { Observable } from 'rxjs'; import { link, typedObject } from '../cache/builders/build-decorators'; import { PaginatedList } from '../data/paginated-list'; @@ -15,17 +15,16 @@ import { RESOURCE_POLICY } from '../resource-policy/models/resource-policy.resou import { COMMUNITY } from './community.resource-type'; import { Community } from './community.model'; import { ChildHALResource } from './child-hal-resource.model'; +import { excludeFromEquals } from '../utilities/equals.decorators'; @typedObject @inheritSerialization(DSpaceObject) export class Collection extends DSpaceObject implements ChildHALResource { static type = COLLECTION; - /** - * A string representing the unique handle of this Collection - */ - @autoserialize - handle: string; + @excludeFromEquals + @deserializeAs('handle') + private _handle: string; /** * The {@link HALLink}s for this Collection @@ -75,6 +74,18 @@ export class Collection extends DSpaceObject implements ChildHALResource { @link(COMMUNITY, false) parentCommunity?: Observable>; + /** + * A string representing the unique handle of this Collection + */ + get handle(): string { + const metadataValue = this.firstMetadataValue('dc.identifier.uri'); + return metadataValue ? metadataValue : this._handle; + } + + set handle(value: string) { + this._handle = value; + } + /** * The introductory text of this Collection * Corresponds to the metadata field dc.description diff --git a/src/app/core/shared/community.model.ts b/src/app/core/shared/community.model.ts index 796aaa8ece..06f7b70c01 100644 --- a/src/app/core/shared/community.model.ts +++ b/src/app/core/shared/community.model.ts @@ -1,4 +1,4 @@ -import { autoserialize, deserialize, inheritSerialization } from 'cerialize'; +import { autoserialize, deserialize, deserializeAs, inheritSerialization } from 'cerialize'; import { Observable } from 'rxjs'; import { link, typedObject } from '../cache/builders/build-decorators'; import { PaginatedList } from '../data/paginated-list'; @@ -11,17 +11,16 @@ import { COMMUNITY } from './community.resource-type'; import { DSpaceObject } from './dspace-object.model'; import { HALLink } from './hal-link.model'; import { ChildHALResource } from './child-hal-resource.model'; +import { excludeFromEquals } from '../utilities/equals.decorators'; @typedObject @inheritSerialization(DSpaceObject) export class Community extends DSpaceObject implements ChildHALResource { static type = COMMUNITY; - /** - * A string representing the unique handle of this Community - */ - @autoserialize - handle: string; + @excludeFromEquals + @deserializeAs('handle') + private _handle: string; /** * The {@link HALLink}s for this Community @@ -64,6 +63,18 @@ export class Community extends DSpaceObject implements ChildHALResource { @link(COMMUNITY, false) parentCommunity?: Observable>; + /** + * A string representing the unique handle of this Community + */ + get handle(): string { + const metadataValue = this.firstMetadataValue('dc.identifier.uri'); + return metadataValue ? metadataValue : this._handle; + } + + set handle(value: string) { + this._handle = value; + } + /** * The introductory text of this Community * Corresponds to the metadata field dc.description diff --git a/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts new file mode 100644 index 0000000000..e059cb7044 --- /dev/null +++ b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts @@ -0,0 +1,62 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { TranslateModule } from '@ngx-translate/core'; +import { By } from '@angular/platform-browser'; +import { UIURLCombiner } from 'src/app/core/url-combiner/ui-url-combiner'; +import { ComcolPageHandleComponent } from './comcol-page-handle.component'; + +const handleWithProtocol = 'http://localhost:4000/handle/123456789/2'; + +const handleWithoutProtocol = '123456789/2'; +const handleWithoutProtocolUIURLCombined = new UIURLCombiner('/handle/', '123456789/2').toString(); + +describe('ComcolPageHandleComponent', () => { + let component: ComcolPageHandleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [TranslateModule.forRoot()], + declarations: [ ComcolPageHandleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ComcolPageHandleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should be empty if no content is passed', () => { + component.content = undefined; + fixture.detectChanges(); + const div = fixture.debugElement.query(By.css('div')); + expect(div).toBeNull(); + }); + + describe('should create a link pointing the handle', () => { + + it('should use the content if it includes the http protocol', () => { + component.content = handleWithProtocol; + fixture.detectChanges(); + + const link = fixture.debugElement.query(By.css('a')); + expect(link.nativeElement.getAttribute('href')).toBe(handleWithProtocol); + expect(link.nativeElement.innerHTML).toBe(handleWithProtocol); + }); + + it('should combine the base uri to the content if it doesnt include the http protocol', () => { + component.content = handleWithoutProtocol; + fixture.detectChanges(); + const link = fixture.debugElement.query(By.css('a')); + expect(link.nativeElement.getAttribute('href')).toBe(handleWithoutProtocolUIURLCombined); + expect(link.nativeElement.innerHTML).toBe(handleWithoutProtocolUIURLCombined); + }); + + }); + +}); \ No newline at end of file diff --git a/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts b/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts index bf403e9e88..bea3f51e28 100644 --- a/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts +++ b/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts @@ -21,6 +21,7 @@ export class ComcolPageHandleComponent { @Input() content: string; public getHandle(): string { - return new UIURLCombiner('/handle/', this.content).toString(); - } -} + return this.content.includes('http') ? this.content + : new UIURLCombiner('/handle/', this.content).toString(); + }} + From 5c7a111a61ad5415f0c43b15ed855974d3ebeb26 Mon Sep 17 00:00:00 2001 From: Alessandro Martelli Date: Tue, 10 Nov 2020 12:37:38 +0100 Subject: [PATCH 2/6] [CSTPER-222] handle metadata reading for communities and collections --- src/app/core/shared/collection.model.ts | 5 ++--- src/app/core/shared/community.model.ts | 3 +-- .../comcol-page-handle.component.spec.ts | 15 +++------------ .../comcol-page-handle.component.ts | 7 +++---- 4 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/app/core/shared/collection.model.ts b/src/app/core/shared/collection.model.ts index 1505359cfd..3eb9a128d7 100644 --- a/src/app/core/shared/collection.model.ts +++ b/src/app/core/shared/collection.model.ts @@ -78,14 +78,13 @@ export class Collection extends DSpaceObject implements ChildHALResource { * A string representing the unique handle of this Collection */ get handle(): string { - const metadataValue = this.firstMetadataValue('dc.identifier.uri'); - return metadataValue ? metadataValue : this._handle; + return this.firstMetadataValue('dc.identifier.uri'); } set handle(value: string) { this._handle = value; } - + /** * The introductory text of this Collection * Corresponds to the metadata field dc.description diff --git a/src/app/core/shared/community.model.ts b/src/app/core/shared/community.model.ts index 06f7b70c01..4943ff37d9 100644 --- a/src/app/core/shared/community.model.ts +++ b/src/app/core/shared/community.model.ts @@ -67,8 +67,7 @@ export class Community extends DSpaceObject implements ChildHALResource { * A string representing the unique handle of this Community */ get handle(): string { - const metadataValue = this.firstMetadataValue('dc.identifier.uri'); - return metadataValue ? metadataValue : this._handle; + return this.firstMetadataValue('dc.identifier.uri'); } set handle(value: string) { diff --git a/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts index e059cb7044..9c4c31a8e8 100644 --- a/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts +++ b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts @@ -39,7 +39,7 @@ describe('ComcolPageHandleComponent', () => { }); describe('should create a link pointing the handle', () => { - + it('should use the content if it includes the http protocol', () => { component.content = handleWithProtocol; fixture.detectChanges(); @@ -48,15 +48,6 @@ describe('ComcolPageHandleComponent', () => { expect(link.nativeElement.getAttribute('href')).toBe(handleWithProtocol); expect(link.nativeElement.innerHTML).toBe(handleWithProtocol); }); - - it('should combine the base uri to the content if it doesnt include the http protocol', () => { - component.content = handleWithoutProtocol; - fixture.detectChanges(); - const link = fixture.debugElement.query(By.css('a')); - expect(link.nativeElement.getAttribute('href')).toBe(handleWithoutProtocolUIURLCombined); - expect(link.nativeElement.innerHTML).toBe(handleWithoutProtocolUIURLCombined); - }); - }); - -}); \ No newline at end of file + +}); diff --git a/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts b/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts index bea3f51e28..53487c872c 100644 --- a/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts +++ b/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts @@ -21,7 +21,6 @@ export class ComcolPageHandleComponent { @Input() content: string; public getHandle(): string { - return this.content.includes('http') ? this.content - : new UIURLCombiner('/handle/', this.content).toString(); - }} - + return this.content; + } +} From fa113babc76c08528f3658495f5863ef4ae6c1fc Mon Sep 17 00:00:00 2001 From: Alessandro Martelli Date: Tue, 10 Nov 2020 13:59:44 +0100 Subject: [PATCH 3/6] [CSTPER-222] handle metadata reading for communities and collections Community and Collection handle tests --- .../collection-curate.component.spec.ts | 2 +- .../community-curate.component.spec.ts | 2 +- src/app/core/shared/collection.model.spec.ts | 31 +++++++++++++++++++ src/app/core/shared/community.model.spec.ts | 31 +++++++++++++++++++ 4 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/app/core/shared/collection.model.spec.ts create mode 100644 src/app/core/shared/community.model.spec.ts diff --git a/src/app/+collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts b/src/app/+collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts index 91c264cd0f..628dd545df 100644 --- a/src/app/+collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts +++ b/src/app/+collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts @@ -17,7 +17,7 @@ describe('CollectionCurateComponent', () => { let dsoNameService; const collection = Object.assign(new Collection(), { - handle: '123456789/1', metadata: {'dc.title': ['Collection Name']} + metadata: {'dc.title': ['Collection Name'], 'dc.identifier.uri': [ { value: '123456789/1'}]} }); beforeEach(async(() => { diff --git a/src/app/+community-page/edit-community-page/community-curate/community-curate.component.spec.ts b/src/app/+community-page/edit-community-page/community-curate/community-curate.component.spec.ts index 42dc0f08a9..3217fee3c1 100644 --- a/src/app/+community-page/edit-community-page/community-curate/community-curate.component.spec.ts +++ b/src/app/+community-page/edit-community-page/community-curate/community-curate.component.spec.ts @@ -17,7 +17,7 @@ describe('CommunityCurateComponent', () => { let dsoNameService; const community = Object.assign(new Community(), { - handle: '123456789/1', metadata: {'dc.title': ['Community Name']} + metadata: {'dc.title': ['Community Name'], 'dc.identifier.uri': [ { value: '123456789/1'}]} }); beforeEach(async(() => { diff --git a/src/app/core/shared/collection.model.spec.ts b/src/app/core/shared/collection.model.spec.ts new file mode 100644 index 0000000000..6c2f015b5b --- /dev/null +++ b/src/app/core/shared/collection.model.spec.ts @@ -0,0 +1,31 @@ +import {Collection} from './collection.model'; + +fdescribe('Collection', () => { + + fdescribe('Collection handle value', () => { + + let metadataValue; + let handleValue; + + beforeEach(() => { + metadataValue = {'dc.identifier.uri': [ { value: '123456789/1'}]}; + handleValue = '11111111111/1'; + }) + + it('should return the handle value from metadata', () => { + const community = Object.assign(new Collection(), { metadata: metadataValue }); + expect(community.handle).toEqual('123456789/1'); + }); + + it('should return the handle value from metadata even when the handle field is provided', () => { + const community = Object.assign(new Collection(), { handle: handleValue, metadata: metadataValue }); + expect(community.handle).toEqual('123456789/1'); + }); + + it('should return undefined if the handle value from metadata is not present', () => { + const community = Object.assign(new Collection(), { handle: handleValue }); + expect(community.handle).toEqual(undefined); + }); + }); + +}); diff --git a/src/app/core/shared/community.model.spec.ts b/src/app/core/shared/community.model.spec.ts new file mode 100644 index 0000000000..3822509720 --- /dev/null +++ b/src/app/core/shared/community.model.spec.ts @@ -0,0 +1,31 @@ +import {Community} from './community.model'; + +fdescribe('Community', () => { + + fdescribe('Community handle value', () => { + + let metadataValue; + let handleValue; + + beforeEach(() => { + metadataValue = {'dc.identifier.uri': [ { value: '123456789/1'}]}; + handleValue = '11111111111/1'; + }) + + it('should return the handle value from metadata', () => { + const community = Object.assign(new Community(), { metadata: metadataValue }); + expect(community.handle).toEqual('123456789/1'); + }); + + it('should return the handle value from metadata even when the handle field is provided', () => { + const community = Object.assign(new Community(), { handle: handleValue, metadata: metadataValue }); + expect(community.handle).toEqual('123456789/1'); + }); + + it('should return undefined if the handle value from metadata is not present', () => { + const community = Object.assign(new Community(), { handle: handleValue }); + expect(community.handle).toEqual(undefined); + }); + }); + +}); From 4a2fe76ef08de10690a5c1d4277bb9643440771e Mon Sep 17 00:00:00 2001 From: Alessandro Martelli Date: Tue, 10 Nov 2020 14:30:52 +0100 Subject: [PATCH 4/6] [CSTPER-222] handle metadata reading for communities and collections Fixed tests --- src/app/core/shared/collection.model.spec.ts | 4 ++-- src/app/core/shared/community.model.spec.ts | 4 ++-- .../comcol-page-handle.component.spec.ts | 23 ++++++++----------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/app/core/shared/collection.model.spec.ts b/src/app/core/shared/collection.model.spec.ts index 6c2f015b5b..82e90f05cd 100644 --- a/src/app/core/shared/collection.model.spec.ts +++ b/src/app/core/shared/collection.model.spec.ts @@ -1,8 +1,8 @@ import {Collection} from './collection.model'; -fdescribe('Collection', () => { +describe('Collection', () => { - fdescribe('Collection handle value', () => { + describe('Collection handle value', () => { let metadataValue; let handleValue; diff --git a/src/app/core/shared/community.model.spec.ts b/src/app/core/shared/community.model.spec.ts index 3822509720..1b688c9df9 100644 --- a/src/app/core/shared/community.model.spec.ts +++ b/src/app/core/shared/community.model.spec.ts @@ -1,8 +1,8 @@ import {Community} from './community.model'; -fdescribe('Community', () => { +describe('Community', () => { - fdescribe('Community handle value', () => { + describe('Community handle value', () => { let metadataValue; let handleValue; diff --git a/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts index 9c4c31a8e8..0fb1b458e1 100644 --- a/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts +++ b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts @@ -1,15 +1,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { TranslateModule } from '@ngx-translate/core'; import { By } from '@angular/platform-browser'; -import { UIURLCombiner } from 'src/app/core/url-combiner/ui-url-combiner'; import { ComcolPageHandleComponent } from './comcol-page-handle.component'; -const handleWithProtocol = 'http://localhost:4000/handle/123456789/2'; +const handle = 'http://localhost:4000/handle/123456789/2'; -const handleWithoutProtocol = '123456789/2'; -const handleWithoutProtocolUIURLCombined = new UIURLCombiner('/handle/', '123456789/2').toString(); - -describe('ComcolPageHandleComponent', () => { +fdescribe('ComcolPageHandleComponent', () => { let component: ComcolPageHandleComponent; let fixture: ComponentFixture; @@ -38,16 +34,15 @@ describe('ComcolPageHandleComponent', () => { expect(div).toBeNull(); }); - describe('should create a link pointing the handle', () => { + it('should create a link pointing the handle when present', () => { - it('should use the content if it includes the http protocol', () => { - component.content = handleWithProtocol; - fixture.detectChanges(); + component.content = handle; + fixture.detectChanges(); + + const link = fixture.debugElement.query(By.css('a')); + expect(link.nativeElement.getAttribute('href')).toBe(handle); + expect(link.nativeElement.innerHTML).toBe(handle); - const link = fixture.debugElement.query(By.css('a')); - expect(link.nativeElement.getAttribute('href')).toBe(handleWithProtocol); - expect(link.nativeElement.innerHTML).toBe(handleWithProtocol); - }); }); }); From fa8ecd16a7420bc7b20caf2242b21291a00ba7ac Mon Sep 17 00:00:00 2001 From: Alessandro Martelli Date: Tue, 10 Nov 2020 14:50:46 +0100 Subject: [PATCH 5/6] [CSTPER-222] handle metadata reading for communities and collections Fixed unused imports. --- src/app/core/shared/collection.model.ts | 2 +- src/app/core/shared/community.model.ts | 2 +- .../shared/comcol-page-handle/comcol-page-handle.component.ts | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/core/shared/collection.model.ts b/src/app/core/shared/collection.model.ts index 3eb9a128d7..d0033ee7ca 100644 --- a/src/app/core/shared/collection.model.ts +++ b/src/app/core/shared/collection.model.ts @@ -1,4 +1,4 @@ -import { autoserialize, deserialize, deserializeAs, inheritSerialization } from 'cerialize'; +import { deserialize, deserializeAs, inheritSerialization } from 'cerialize'; import { Observable } from 'rxjs'; import { link, typedObject } from '../cache/builders/build-decorators'; import { PaginatedList } from '../data/paginated-list'; diff --git a/src/app/core/shared/community.model.ts b/src/app/core/shared/community.model.ts index 4943ff37d9..1f76cb66de 100644 --- a/src/app/core/shared/community.model.ts +++ b/src/app/core/shared/community.model.ts @@ -1,4 +1,4 @@ -import { autoserialize, deserialize, deserializeAs, inheritSerialization } from 'cerialize'; +import { deserialize, deserializeAs, inheritSerialization } from 'cerialize'; import { Observable } from 'rxjs'; import { link, typedObject } from '../cache/builders/build-decorators'; import { PaginatedList } from '../data/paginated-list'; diff --git a/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts b/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts index 53487c872c..2ce49ebea2 100644 --- a/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts +++ b/src/app/shared/comcol-page-handle/comcol-page-handle.component.ts @@ -1,5 +1,4 @@ import { Component, Injectable, Input } from '@angular/core'; -import { UIURLCombiner } from '../../core/url-combiner/ui-url-combiner'; /** * This component builds a URL from the value of "handle" From 2369892c3ffa85465d10f31d8542c2a420ba0685 Mon Sep 17 00:00:00 2001 From: Alessandro Martelli Date: Wed, 18 Nov 2020 12:08:57 +0100 Subject: [PATCH 6/6] [CSTPER-222] handle metadata reading for communities and collections Removed handle field and the setter from community and collection models. --- src/app/core/shared/collection.model.spec.ts | 9 +-------- src/app/core/shared/collection.model.ts | 11 +---------- src/app/core/shared/community.model.spec.ts | 9 +-------- src/app/core/shared/community.model.ts | 11 +---------- .../comcol-page-handle.component.spec.ts | 2 +- .../export-metadata-selector.component.spec.ts | 18 ++++++++++++++++-- .../search-form/search-form.component.spec.ts | 18 ++++++++++++++---- .../search-results.component.spec.ts | 14 ++++++++++++-- 8 files changed, 47 insertions(+), 45 deletions(-) diff --git a/src/app/core/shared/collection.model.spec.ts b/src/app/core/shared/collection.model.spec.ts index 82e90f05cd..b35fa7415b 100644 --- a/src/app/core/shared/collection.model.spec.ts +++ b/src/app/core/shared/collection.model.spec.ts @@ -5,11 +5,9 @@ describe('Collection', () => { describe('Collection handle value', () => { let metadataValue; - let handleValue; beforeEach(() => { metadataValue = {'dc.identifier.uri': [ { value: '123456789/1'}]}; - handleValue = '11111111111/1'; }) it('should return the handle value from metadata', () => { @@ -17,13 +15,8 @@ describe('Collection', () => { expect(community.handle).toEqual('123456789/1'); }); - it('should return the handle value from metadata even when the handle field is provided', () => { - const community = Object.assign(new Collection(), { handle: handleValue, metadata: metadataValue }); - expect(community.handle).toEqual('123456789/1'); - }); - it('should return undefined if the handle value from metadata is not present', () => { - const community = Object.assign(new Collection(), { handle: handleValue }); + const community = Object.assign(new Collection(), { }); expect(community.handle).toEqual(undefined); }); }); diff --git a/src/app/core/shared/collection.model.ts b/src/app/core/shared/collection.model.ts index d0033ee7ca..a82f0646c5 100644 --- a/src/app/core/shared/collection.model.ts +++ b/src/app/core/shared/collection.model.ts @@ -1,4 +1,4 @@ -import { deserialize, deserializeAs, inheritSerialization } from 'cerialize'; +import { deserialize, inheritSerialization } from 'cerialize'; import { Observable } from 'rxjs'; import { link, typedObject } from '../cache/builders/build-decorators'; import { PaginatedList } from '../data/paginated-list'; @@ -15,17 +15,12 @@ import { RESOURCE_POLICY } from '../resource-policy/models/resource-policy.resou import { COMMUNITY } from './community.resource-type'; import { Community } from './community.model'; import { ChildHALResource } from './child-hal-resource.model'; -import { excludeFromEquals } from '../utilities/equals.decorators'; @typedObject @inheritSerialization(DSpaceObject) export class Collection extends DSpaceObject implements ChildHALResource { static type = COLLECTION; - @excludeFromEquals - @deserializeAs('handle') - private _handle: string; - /** * The {@link HALLink}s for this Collection */ @@ -81,10 +76,6 @@ export class Collection extends DSpaceObject implements ChildHALResource { return this.firstMetadataValue('dc.identifier.uri'); } - set handle(value: string) { - this._handle = value; - } - /** * The introductory text of this Collection * Corresponds to the metadata field dc.description diff --git a/src/app/core/shared/community.model.spec.ts b/src/app/core/shared/community.model.spec.ts index 1b688c9df9..5697686853 100644 --- a/src/app/core/shared/community.model.spec.ts +++ b/src/app/core/shared/community.model.spec.ts @@ -5,11 +5,9 @@ describe('Community', () => { describe('Community handle value', () => { let metadataValue; - let handleValue; beforeEach(() => { metadataValue = {'dc.identifier.uri': [ { value: '123456789/1'}]}; - handleValue = '11111111111/1'; }) it('should return the handle value from metadata', () => { @@ -17,13 +15,8 @@ describe('Community', () => { expect(community.handle).toEqual('123456789/1'); }); - it('should return the handle value from metadata even when the handle field is provided', () => { - const community = Object.assign(new Community(), { handle: handleValue, metadata: metadataValue }); - expect(community.handle).toEqual('123456789/1'); - }); - it('should return undefined if the handle value from metadata is not present', () => { - const community = Object.assign(new Community(), { handle: handleValue }); + const community = Object.assign(new Community(), { }); expect(community.handle).toEqual(undefined); }); }); diff --git a/src/app/core/shared/community.model.ts b/src/app/core/shared/community.model.ts index 1f76cb66de..778696486b 100644 --- a/src/app/core/shared/community.model.ts +++ b/src/app/core/shared/community.model.ts @@ -1,4 +1,4 @@ -import { deserialize, deserializeAs, inheritSerialization } from 'cerialize'; +import { deserialize, inheritSerialization } from 'cerialize'; import { Observable } from 'rxjs'; import { link, typedObject } from '../cache/builders/build-decorators'; import { PaginatedList } from '../data/paginated-list'; @@ -11,17 +11,12 @@ import { COMMUNITY } from './community.resource-type'; import { DSpaceObject } from './dspace-object.model'; import { HALLink } from './hal-link.model'; import { ChildHALResource } from './child-hal-resource.model'; -import { excludeFromEquals } from '../utilities/equals.decorators'; @typedObject @inheritSerialization(DSpaceObject) export class Community extends DSpaceObject implements ChildHALResource { static type = COMMUNITY; - @excludeFromEquals - @deserializeAs('handle') - private _handle: string; - /** * The {@link HALLink}s for this Community */ @@ -70,10 +65,6 @@ export class Community extends DSpaceObject implements ChildHALResource { return this.firstMetadataValue('dc.identifier.uri'); } - set handle(value: string) { - this._handle = value; - } - /** * The introductory text of this Community * Corresponds to the metadata field dc.description diff --git a/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts index 0fb1b458e1..e3e0c65920 100644 --- a/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts +++ b/src/app/shared/comcol-page-handle/comcol-page-handle.component.spec.ts @@ -5,7 +5,7 @@ import { ComcolPageHandleComponent } from './comcol-page-handle.component'; const handle = 'http://localhost:4000/handle/123456789/2'; -fdescribe('ComcolPageHandleComponent', () => { +describe('ComcolPageHandleComponent', () => { let component: ComcolPageHandleComponent; let fixture: ComponentFixture; diff --git a/src/app/shared/dso-selector/modal-wrappers/export-metadata-selector/export-metadata-selector.component.spec.ts b/src/app/shared/dso-selector/modal-wrappers/export-metadata-selector/export-metadata-selector.component.spec.ts index 40aab2fad5..ef9abbb5ee 100644 --- a/src/app/shared/dso-selector/modal-wrappers/export-metadata-selector/export-metadata-selector.component.spec.ts +++ b/src/app/shared/dso-selector/modal-wrappers/export-metadata-selector/export-metadata-selector.component.spec.ts @@ -53,12 +53,26 @@ describe('ExportMetadataSelectorComponent', () => { const mockCollection: Collection = Object.assign(new Collection(), { id: 'test-collection-1-1', name: 'test-collection-1', - handle: 'fake/test-collection-1', + metadata: { + 'dc.identifier.uri': [ + { + language: null, + value: 'fake/test-collection-1' + } + ] + } }); const mockCommunity = Object.assign(new Community(), { id: 'test-uuid', - handle: 'fake/test-community-1', + metadata: { + 'dc.identifier.uri': [ + { + language: null, + value: 'fake/test-community-1' + } + ] + } }); const itemRD = createSuccessfulRemoteDataObject(mockItem); diff --git a/src/app/shared/search-form/search-form.component.spec.ts b/src/app/shared/search-form/search-form.component.spec.ts index ffd8dd87a2..45339d98d2 100644 --- a/src/app/shared/search-form/search-form.component.spec.ts +++ b/src/app/shared/search-form/search-form.component.spec.ts @@ -109,7 +109,6 @@ describe('SearchFormComponent', () => { export const objects: DSpaceObject[] = [ Object.assign(new Community(), { - handle: '10673/11', logo: { self: { _isScalar: true, @@ -162,12 +161,17 @@ export const objects: DSpaceObject[] = [ language: null, value: 'OR2017 - Demonstration' } - ] + ], + 'dc.identifier.uri': [ + { + language: null, + value: 'http://localhost:4000/handle/10673/11' + } + ], } }), Object.assign(new Community(), { - handle: '10673/1', logo: { self: { _isScalar: true, @@ -220,7 +224,13 @@ export const objects: DSpaceObject[] = [ language: null, value: 'Sample Community' } - ] + ], + 'dc.identifier.uri': [ + { + language: null, + value: 'http://localhost:4000/handle/10673/1' + } + ], } } ) diff --git a/src/app/shared/search/search-results/search-results.component.spec.ts b/src/app/shared/search/search-results/search-results.component.spec.ts index b4586129e2..0386787654 100644 --- a/src/app/shared/search/search-results/search-results.component.spec.ts +++ b/src/app/shared/search/search-results/search-results.component.spec.ts @@ -96,7 +96,6 @@ describe('SearchResultsComponent', () => { export const objects = [ Object.assign(new Community(), { - handle: '10673/11', logo: { self: { _isScalar: true, @@ -149,12 +148,17 @@ export const objects = [ language: null, value: 'OR2017 - Demonstration' } + ], + 'dc.identifier.uri': [ + { + language: null, + value: 'http://localhost:4000/handle/10673/11' + } ] } }), Object.assign(new Community(), { - handle: '10673/1', logo: { self: { _isScalar: true, @@ -207,6 +211,12 @@ export const objects = [ language: null, value: 'Sample Community' } + ], + 'dc.identifier.uri': [ + { + language: null, + value: 'http://localhost:4000/handle/10673/1' + } ] } }