diff --git a/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.html b/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.html
index 9a7262334b..73fee41f8f 100644
--- a/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.html
+++ b/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.html
@@ -6,11 +6,11 @@
-
-
@@ -24,11 +24,11 @@
[entities]="publications$ | async"
[label]="'relationships.isPublicationOfJournalIssue' | translate">
-
-
diff --git a/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.spec.ts b/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.spec.ts
index adf5529212..28802d68aa 100644
--- a/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.spec.ts
+++ b/src/app/+item-page/simple/entity-types/journal-issue/journal-issue-page-fields.component.spec.ts
@@ -1,23 +1,10 @@
-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 { JournalIssuePageFieldsComponent } from './journal-issue-page-fields.component';
-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';
-
-let comp: JournalIssuePageFieldsComponent;
-let fixture: ComponentFixture;
+import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
const mockItem: Item = Object.assign(new Item(), {
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
@@ -44,50 +31,4 @@ const mockItem: Item = Object.assign(new Item(), {
}]
});
-describe('JournalIssuePageFieldsComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useClass: MockTranslateLoader
- }
- })],
- declarations: [JournalIssuePageFieldsComponent, GenericItemPageFieldComponent, TruncatePipe],
- providers: [
- {provide: ITEM, useValue: mockItem},
- {provide: ItemDataService, useValue: {}},
- {provide: TruncatableService, useValue: {}}
- ],
-
- schemas: [NO_ERRORS_SCHEMA]
- }).overrideComponent(JournalIssuePageFieldsComponent, {
- set: {changeDetection: ChangeDetectionStrategy.Default}
- }).compileComponents();
- }));
-
- beforeEach(async(() => {
- fixture = TestBed.createComponent(JournalIssuePageFieldsComponent);
- 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;
-}
+describe('JournalIssuePageFieldsComponent', getEntityPageFieldsTest(mockItem, JournalIssuePageFieldsComponent));
diff --git a/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.html b/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.html
index ebac09b398..df770b06d8 100644
--- a/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.html
+++ b/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.html
@@ -6,11 +6,11 @@
-
-
@@ -24,7 +24,7 @@
[entities]="issues$ | async"
[label]="'relationships.isIssueOf' | translate">
-
diff --git a/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.spec.ts b/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.spec.ts
index ab77c4ae62..bd406db360 100644
--- a/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.spec.ts
+++ b/src/app/+item-page/simple/entity-types/journal-volume/journal-volume-page-fields.component.spec.ts
@@ -1,23 +1,10 @@
-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 { JournalVolumePageFieldsComponent } from './journal-volume-page-fields.component';
-
-let comp: JournalVolumePageFieldsComponent;
-let fixture: ComponentFixture;
+import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
const mockItem: Item = Object.assign(new Item(), {
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
@@ -39,50 +26,4 @@ const mockItem: Item = Object.assign(new Item(), {
}]
});
-describe('JournalVolumePageFieldsComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useClass: MockTranslateLoader
- }
- })],
- declarations: [JournalVolumePageFieldsComponent, GenericItemPageFieldComponent, TruncatePipe],
- providers: [
- {provide: ITEM, useValue: mockItem},
- {provide: ItemDataService, useValue: {}},
- {provide: TruncatableService, useValue: {}}
- ],
-
- schemas: [NO_ERRORS_SCHEMA]
- }).overrideComponent(JournalVolumePageFieldsComponent, {
- set: {changeDetection: ChangeDetectionStrategy.Default}
- }).compileComponents();
- }));
-
- beforeEach(async(() => {
- fixture = TestBed.createComponent(JournalVolumePageFieldsComponent);
- 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;
-}
+describe('JournalVolumePageFieldsComponent', getEntityPageFieldsTest(mockItem, JournalVolumePageFieldsComponent));
diff --git a/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.html b/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.html
index 8314eeae08..e5a02b54e5 100644
--- a/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.html
+++ b/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.html
@@ -6,19 +6,19 @@
-
-
-
-
@@ -36,7 +36,7 @@
[entities]="publications$ | async"
[label]="'relationships.isPublicationOf' | translate">
-
diff --git a/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.spec.ts b/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.spec.ts
index cb066c0783..7ae90a7a9d 100644
--- a/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.spec.ts
+++ b/src/app/+item-page/simple/entity-types/orgunit/orgunit-page-fields.component.spec.ts
@@ -1,23 +1,10 @@
-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 { OrgUnitPageFieldsComponent } from './orgunit-page-fields.component';
-
-let comp: OrgUnitPageFieldsComponent;
-let fixture: ComponentFixture;
+import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
const mockItem: Item = Object.assign(new Item(), {
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
@@ -49,50 +36,4 @@ const mockItem: Item = Object.assign(new Item(), {
}]
});
-describe('OrgUnitPageFieldsComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useClass: MockTranslateLoader
- }
- })],
- declarations: [OrgUnitPageFieldsComponent, GenericItemPageFieldComponent, TruncatePipe],
- providers: [
- {provide: ITEM, useValue: mockItem},
- {provide: ItemDataService, useValue: {}},
- {provide: TruncatableService, useValue: {}}
- ],
-
- schemas: [NO_ERRORS_SCHEMA]
- }).overrideComponent(OrgUnitPageFieldsComponent, {
- set: {changeDetection: ChangeDetectionStrategy.Default}
- }).compileComponents();
- }));
-
- beforeEach(async(() => {
- fixture = TestBed.createComponent(OrgUnitPageFieldsComponent);
- 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;
-}
+describe('OrgUnitPageFieldsComponent', getEntityPageFieldsTest(mockItem, OrgUnitPageFieldsComponent));
diff --git a/src/app/+item-page/simple/entity-types/person/person-page-fields.component.html b/src/app/+item-page/simple/entity-types/person/person-page-fields.component.html
index b712c5e479..548f46624d 100644
--- a/src/app/+item-page/simple/entity-types/person/person-page-fields.component.html
+++ b/src/app/+item-page/simple/entity-types/person/person-page-fields.component.html
@@ -6,19 +6,19 @@
-
-
-
-
@@ -32,15 +32,15 @@
[entities]="orgUnits$ | async"
[label]="'relationships.isOrgUnitOf' | translate">
-
-
-
diff --git a/src/app/+item-page/simple/entity-types/person/person-page-fields.component.spec.ts b/src/app/+item-page/simple/entity-types/person/person-page-fields.component.spec.ts
index 02f75966da..99432a3e66 100644
--- a/src/app/+item-page/simple/entity-types/person/person-page-fields.component.spec.ts
+++ b/src/app/+item-page/simple/entity-types/person/person-page-fields.component.spec.ts
@@ -1,24 +1,10 @@
-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 { PersonPageFieldsComponent } from './person-page-fields.component';
-import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
-
-let comp: PersonPageFieldsComponent;
-let fixture: ComponentFixture;
+import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
const mockItem: Item = Object.assign(new Item(), {
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
@@ -60,51 +46,4 @@ const mockItem: Item = Object.assign(new Item(), {
}]
});
-describe('PersonPageFieldsComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useClass: MockTranslateLoader
- }
- })],
- declarations: [PersonPageFieldsComponent, GenericItemPageFieldComponent, TruncatePipe],
- providers: [
- {provide: ITEM, useValue: mockItem},
- {provide: ItemDataService, useValue: {}},
- {provide: SearchFixedFilterService, useValue: {}},
- {provide: TruncatableService, useValue: {}}
- ],
-
- schemas: [NO_ERRORS_SCHEMA]
- }).overrideComponent(PersonPageFieldsComponent, {
- set: {changeDetection: ChangeDetectionStrategy.Default}
- }).compileComponents();
- }));
-
- beforeEach(async(() => {
- fixture = TestBed.createComponent(PersonPageFieldsComponent);
- 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;
-}
+describe('PersonPageFieldsComponent', getEntityPageFieldsTest(mockItem, PersonPageFieldsComponent));
diff --git a/src/app/+item-page/simple/entity-types/project/project-page-fields.component.html b/src/app/+item-page/simple/entity-types/project/project-page-fields.component.html
index 159ae84584..36a71bd71a 100644
--- a/src/app/+item-page/simple/entity-types/project/project-page-fields.component.html
+++ b/src/app/+item-page/simple/entity-types/project/project-page-fields.component.html
@@ -6,15 +6,15 @@
-
-
-
@@ -32,11 +32,11 @@
[entities]="orgUnits$ | async"
[label]="'relationships.isOrgUnitOf' | translate">
-
-
diff --git a/src/app/+item-page/simple/entity-types/project/project-page-fields.component.spec.ts b/src/app/+item-page/simple/entity-types/project/project-page-fields.component.spec.ts
index 6494b19215..013e7e1c00 100644
--- a/src/app/+item-page/simple/entity-types/project/project-page-fields.component.spec.ts
+++ b/src/app/+item-page/simple/entity-types/project/project-page-fields.component.spec.ts
@@ -1,23 +1,10 @@
-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 { ProjectPageFieldsComponent } from './project-page-fields.component';
-
-let comp: ProjectPageFieldsComponent;
-let fixture: ComponentFixture;
+import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
const mockItem: Item = Object.assign(new Item(), {
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
@@ -49,50 +36,4 @@ const mockItem: Item = Object.assign(new Item(), {
}]
});
-describe('ProjectPageFieldsComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- imports: [TranslateModule.forRoot({
- loader: {
- provide: TranslateLoader,
- useClass: MockTranslateLoader
- }
- })],
- declarations: [ProjectPageFieldsComponent, GenericItemPageFieldComponent, TruncatePipe],
- providers: [
- {provide: ITEM, useValue: mockItem},
- {provide: ItemDataService, useValue: {}},
- {provide: TruncatableService, useValue: {}}
- ],
-
- schemas: [NO_ERRORS_SCHEMA]
- }).overrideComponent(ProjectPageFieldsComponent, {
- set: {changeDetection: ChangeDetectionStrategy.Default}
- }).compileComponents();
- }));
-
- beforeEach(async(() => {
- fixture = TestBed.createComponent(ProjectPageFieldsComponent);
- 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;
-}
+describe('ProjectPageFieldsComponent', getEntityPageFieldsTest(mockItem, ProjectPageFieldsComponent));
diff --git a/src/app/+item-page/simple/entity-types/shared/entity-page-fields.component.spec.ts b/src/app/+item-page/simple/entity-types/shared/entity-page-fields.component.spec.ts
new file mode 100644
index 0000000000..a0d880ca15
--- /dev/null
+++ b/src/app/+item-page/simple/entity-types/shared/entity-page-fields.component.spec.ts
@@ -0,0 +1,81 @@
+import { Item } from '../../../../core/shared/item.model';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { GenericItemPageFieldComponent } from '../../field-components/specific-field/generic/generic-item-page-field.component';
+import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
+import { ItemDataService } from '../../../../core/data/item-data.service';
+import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
+import { MockTranslateLoader } from '../../../../shared/mocks/mock-translate-loader';
+import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
+import { ITEM } from '../../../../shared/entities/switcher/entity-type-switcher.component';
+import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
+import { isNotEmpty } from '../../../../shared/empty.util';
+import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
+
+/**
+ * Create a generic test for an entity-page-fields component using a mockItem and the type of component
+ * @param {Item} mockItem The item to use for testing. The item needs to contain just the metadata necessary to
+ * execute the tests for it's component.
+ * @param component The type of component to create test cases for.
+ * @returns {() => void} Returns a specDefinition for the test.
+ */
+export function getEntityPageFieldsTest(mockItem: Item, component) {
+ return () => {
+ let comp: any;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ imports: [TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useClass: MockTranslateLoader
+ }
+ })],
+ declarations: [component, GenericItemPageFieldComponent, TruncatePipe],
+ providers: [
+ {provide: ITEM, useValue: mockItem},
+ {provide: ItemDataService, useValue: {}},
+ {provide: SearchFixedFilterService, useValue: {}},
+ {provide: TruncatableService, useValue: {}}
+ ],
+
+ schemas: [NO_ERRORS_SCHEMA]
+ }).overrideComponent(component, {
+ set: {changeDetection: ChangeDetectionStrategy.Default}
+ }).compileComponents();
+ }));
+
+ beforeEach(async(() => {
+ fixture = TestBed.createComponent(component);
+ 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('ds-generic-item-page-field'));
+ expect(containsFieldInput(fields, metadata.key)).toBeTruthy();
+ });
+ }
+ }
+}
+
+/**
+ * Checks whether in a list of debug elements, at least one of them contains a specific metadata key in their
+ * fields property.
+ * @param {DebugElement[]} fields List of debug elements to check
+ * @param {string} metadataKey A metadata key to look for
+ * @returns {boolean}
+ */
+export 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;
+}