diff --git a/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.html b/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.html
index c2e9fa1c05..b02000a9e4 100644
--- a/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.html
+++ b/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.html
@@ -6,11 +6,11 @@
-
-
@@ -20,7 +20,7 @@
[entities]="volumes$ | async"
[label]="'relationships.isVolumeOf' | translate">
-
diff --git a/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.spec.ts b/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.spec.ts
new file mode 100644
index 0000000000..1b7142b108
--- /dev/null
+++ b/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.spec.ts
@@ -0,0 +1,88 @@
+import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
+import { ITEM } from '../../../../shared/entities/switcher/entity-type-switcher.component';
+import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
+import { ItemDataService } from '../../../../core/data/item-data.service';
+import { Observable } from 'rxjs/Observable';
+import { Item } from '../../../../core/shared/item.model';
+import { By } from '@angular/platform-browser';
+import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
+import { MockTranslateLoader } from '../../../../shared/mocks/mock-translate-loader';
+import { GenericItemPageFieldComponent } from '../../field-components/specific-field/generic/generic-item-page-field.component';
+import { RemoteData } from '../../../../core/data/remote-data';
+import { PaginatedList } from '../../../../core/data/paginated-list';
+import { PageInfo } from '../../../../core/shared/page-info.model';
+import { isNotEmpty } from '../../../../shared/empty.util';
+import { JournalPageFieldsComponent } from './journal-page-fields.component';
+
+let comp: JournalPageFieldsComponent;
+let fixture: ComponentFixture;
+
+const mockItem: Item = Object.assign(new Item(), {
+ bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
+ metadata: [
+ {
+ key: 'journal.identifier.issn',
+ language: 'en_US',
+ value: '1234'
+ },
+ {
+ key: 'journal.publisher',
+ language: 'en_US',
+ value: 'Atmire'
+ },
+ {
+ key: 'journal.identifier.description',
+ language: 'en_US',
+ value: 'desc'
+ }]
+});
+
+describe('JournalPageFieldsComponent', () => {
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useClass: MockTranslateLoader
+ }
+ })],
+ declarations: [JournalPageFieldsComponent, GenericItemPageFieldComponent, TruncatePipe],
+ providers: [
+ {provide: ITEM, useValue: mockItem},
+ {provide: ItemDataService, useValue: {}},
+ {provide: TruncatableService, useValue: {}}
+ ],
+
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(JournalPageFieldsComponent, {
+ set: {changeDetection: ChangeDetectionStrategy.Default}
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(JournalPageFieldsComponent);
+ comp = fixture.componentInstance;
+ fixture.detectChanges();
+ }));
+
+ for (const metadata of mockItem.metadata) {
+ it(`should be calling a component with metadata field ${metadata.key}`, () => {
+ const fields = fixture.debugElement.queryAll(By.css('.item-page-fields'));
+ expect(containsFieldInput(fields, metadata.key)).toBeTruthy();
+ });
+ }
+});
+
+function containsFieldInput(fields: DebugElement[], metadataKey: string): boolean {
+ for (const field of fields) {
+ const fieldComp = field.componentInstance;
+ if (isNotEmpty(fieldComp.fields)) {
+ if (fieldComp.fields.indexOf(metadataKey) > -1) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
diff --git a/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.ts b/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.ts
index b43805ec52..e7640fdd82 100644
--- a/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.ts
+++ b/src/app/+item-page/simple/entity-types/journal/journal-page-fields.component.ts
@@ -9,6 +9,7 @@ import {
EntityPageFieldsComponent, filterRelationsByTypeLabel,
relationsToItems
} from '../shared/entity-page-fields.component';
+import { isNotEmpty } from '../../../../shared/empty.util';
@rendersEntityType('Journal', ElementViewMode.Full)
@Component({
@@ -28,9 +29,11 @@ export class JournalPageFieldsComponent extends EntityPageFieldsComponent {
ngOnInit(): void {
super.ngOnInit();
- this.volumes$ = this.resolvedRelsAndTypes$.pipe(
- filterRelationsByTypeLabel('isVolumeOfJournal'),
- relationsToItems(this.item.id, this.ids)
- );
+ if (isNotEmpty(this.resolvedRelsAndTypes$)) {
+ this.volumes$ = this.resolvedRelsAndTypes$.pipe(
+ filterRelationsByTypeLabel('isVolumeOfJournal'),
+ relationsToItems(this.item.id, this.ids)
+ );
+ }
}
}