mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-13 13:03:04 +00:00
56434: EntityPageFields component tests refactoring
This commit is contained in:
@@ -6,11 +6,11 @@
|
|||||||
<ds-metadata-field-wrapper>
|
<ds-metadata-field-wrapper>
|
||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.identifier.number']"
|
[fields]="['journalissue.identifier.number']"
|
||||||
[label]="'journalissue.page.number'">
|
[label]="'journalissue.page.number'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.issuedate']"
|
[fields]="['journalissue.issuedate']"
|
||||||
[label]="'journalissue.page.issuedate'">
|
[label]="'journalissue.page.issuedate'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
@@ -24,11 +24,11 @@
|
|||||||
[entities]="publications$ | async"
|
[entities]="publications$ | async"
|
||||||
[label]="'relationships.isPublicationOfJournalIssue' | translate">
|
[label]="'relationships.isPublicationOfJournalIssue' | translate">
|
||||||
</ds-related-entities>
|
</ds-related-entities>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.identifier.description']"
|
[fields]="['journalissue.identifier.description']"
|
||||||
[label]="'journalissue.page.description'">
|
[label]="'journalissue.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.identifier.keyword']"
|
[fields]="['journalissue.identifier.keyword']"
|
||||||
[label]="'journalissue.page.keyword'">
|
[label]="'journalissue.page.keyword'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
|
@@ -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 { JournalIssuePageFieldsComponent } from './journal-issue-page-fields.component';
|
||||||
import { ItemDataService } from '../../../../core/data/item-data.service';
|
|
||||||
import { Observable } from 'rxjs/Observable';
|
import { Observable } from 'rxjs/Observable';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
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 { RemoteData } from '../../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../core/data/paginated-list';
|
||||||
import { PageInfo } from '../../../../core/shared/page-info.model';
|
import { PageInfo } from '../../../../core/shared/page-info.model';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
|
||||||
|
|
||||||
let comp: JournalIssuePageFieldsComponent;
|
|
||||||
let fixture: ComponentFixture<JournalIssuePageFieldsComponent>;
|
|
||||||
|
|
||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
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', () => {
|
describe('JournalIssuePageFieldsComponent', getEntityPageFieldsTest(mockItem, 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;
|
|
||||||
}
|
|
||||||
|
@@ -6,11 +6,11 @@
|
|||||||
<ds-metadata-field-wrapper>
|
<ds-metadata-field-wrapper>
|
||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalvolume.identifier.volume']"
|
[fields]="['journalvolume.identifier.volume']"
|
||||||
[label]="'journalvolume.page.volume'">
|
[label]="'journalvolume.page.volume'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalvolume.issuedate']"
|
[fields]="['journalvolume.issuedate']"
|
||||||
[label]="'journalvolume.page.issuedate'">
|
[label]="'journalvolume.page.issuedate'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
[entities]="issues$ | async"
|
[entities]="issues$ | async"
|
||||||
[label]="'relationships.isIssueOf' | translate">
|
[label]="'relationships.isIssueOf' | translate">
|
||||||
</ds-related-entities>
|
</ds-related-entities>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalvolume.identifier.description']"
|
[fields]="['journalvolume.identifier.description']"
|
||||||
[label]="'journalvolume.page.description'">
|
[label]="'journalvolume.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
|
@@ -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 { Observable } from 'rxjs/Observable';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
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 { RemoteData } from '../../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../core/data/paginated-list';
|
||||||
import { PageInfo } from '../../../../core/shared/page-info.model';
|
import { PageInfo } from '../../../../core/shared/page-info.model';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
|
||||||
import { JournalVolumePageFieldsComponent } from './journal-volume-page-fields.component';
|
import { JournalVolumePageFieldsComponent } from './journal-volume-page-fields.component';
|
||||||
|
import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
|
||||||
let comp: JournalVolumePageFieldsComponent;
|
|
||||||
let fixture: ComponentFixture<JournalVolumePageFieldsComponent>;
|
|
||||||
|
|
||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
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', () => {
|
describe('JournalVolumePageFieldsComponent', getEntityPageFieldsTest(mockItem, 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;
|
|
||||||
}
|
|
||||||
|
@@ -6,19 +6,19 @@
|
|||||||
<ds-metadata-field-wrapper>
|
<ds-metadata-field-wrapper>
|
||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/orgunit-placeholder.jpg'"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/orgunit-placeholder.jpg'"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.dateestablished']"
|
[fields]="['orgunit.identifier.dateestablished']"
|
||||||
[label]="'orgunit.page.dateestablished'">
|
[label]="'orgunit.page.dateestablished'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.city']"
|
[fields]="['orgunit.identifier.city']"
|
||||||
[label]="'orgunit.page.city'">
|
[label]="'orgunit.page.city'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.country']"
|
[fields]="['orgunit.identifier.country']"
|
||||||
[label]="'orgunit.page.country'">
|
[label]="'orgunit.page.country'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.id']"
|
[fields]="['orgunit.identifier.id']"
|
||||||
[label]="'orgunit.page.id'">
|
[label]="'orgunit.page.id'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
[entities]="publications$ | async"
|
[entities]="publications$ | async"
|
||||||
[label]="'relationships.isPublicationOf' | translate">
|
[label]="'relationships.isPublicationOf' | translate">
|
||||||
</ds-related-entities>
|
</ds-related-entities>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.description']"
|
[fields]="['orgunit.identifier.description']"
|
||||||
[label]="'orgunit.page.description'">
|
[label]="'orgunit.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
|
@@ -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 { Observable } from 'rxjs/Observable';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
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 { RemoteData } from '../../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../core/data/paginated-list';
|
||||||
import { PageInfo } from '../../../../core/shared/page-info.model';
|
import { PageInfo } from '../../../../core/shared/page-info.model';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
|
||||||
import { OrgUnitPageFieldsComponent } from './orgunit-page-fields.component';
|
import { OrgUnitPageFieldsComponent } from './orgunit-page-fields.component';
|
||||||
|
import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
|
||||||
let comp: OrgUnitPageFieldsComponent;
|
|
||||||
let fixture: ComponentFixture<OrgUnitPageFieldsComponent>;
|
|
||||||
|
|
||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
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', () => {
|
describe('OrgUnitPageFieldsComponent', getEntityPageFieldsTest(mockItem, 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;
|
|
||||||
}
|
|
||||||
|
@@ -6,19 +6,19 @@
|
|||||||
<ds-metadata-field-wrapper>
|
<ds-metadata-field-wrapper>
|
||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/person-placeholder.png'"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/person-placeholder.png'"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.email']"
|
[fields]="['person.identifier.email']"
|
||||||
[label]="'person.page.email'">
|
[label]="'person.page.email'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.orcid']"
|
[fields]="['person.identifier.orcid']"
|
||||||
[label]="'person.page.orcid'">
|
[label]="'person.page.orcid'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.birthdate']"
|
[fields]="['person.identifier.birthdate']"
|
||||||
[label]="'person.page.birthdate'">
|
[label]="'person.page.birthdate'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.staffid']"
|
[fields]="['person.identifier.staffid']"
|
||||||
[label]="'person.page.staffid'">
|
[label]="'person.page.staffid'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
@@ -32,15 +32,15 @@
|
|||||||
[entities]="orgUnits$ | async"
|
[entities]="orgUnits$ | async"
|
||||||
[label]="'relationships.isOrgUnitOf' | translate">
|
[label]="'relationships.isOrgUnitOf' | translate">
|
||||||
</ds-related-entities>
|
</ds-related-entities>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.jobtitle']"
|
[fields]="['person.identifier.jobtitle']"
|
||||||
[label]="'person.page.jobtitle'">
|
[label]="'person.page.jobtitle'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.lastname']"
|
[fields]="['person.identifier.lastname']"
|
||||||
[label]="'person.page.lastname'">
|
[label]="'person.page.lastname'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.firstname']"
|
[fields]="['person.identifier.firstname']"
|
||||||
[label]="'person.page.firstname'">
|
[label]="'person.page.firstname'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
|
@@ -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 { Observable } from 'rxjs/Observable';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
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 { RemoteData } from '../../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../core/data/paginated-list';
|
||||||
import { PageInfo } from '../../../../core/shared/page-info.model';
|
import { PageInfo } from '../../../../core/shared/page-info.model';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
|
||||||
import { PersonPageFieldsComponent } from './person-page-fields.component';
|
import { PersonPageFieldsComponent } from './person-page-fields.component';
|
||||||
import { SearchFixedFilterService } from '../../../../+search-page/search-filters/search-filter/search-fixed-filter.service';
|
import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
|
||||||
|
|
||||||
let comp: PersonPageFieldsComponent;
|
|
||||||
let fixture: ComponentFixture<PersonPageFieldsComponent>;
|
|
||||||
|
|
||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
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', () => {
|
describe('PersonPageFieldsComponent', getEntityPageFieldsTest(mockItem, 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;
|
|
||||||
}
|
|
||||||
|
@@ -6,15 +6,15 @@
|
|||||||
<ds-metadata-field-wrapper>
|
<ds-metadata-field-wrapper>
|
||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/project-placeholder.png'"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/project-placeholder.png'"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.status']"
|
[fields]="['project.identifier.status']"
|
||||||
[label]="'project.page.status'">
|
[label]="'project.page.status'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.id']"
|
[fields]="['project.identifier.id']"
|
||||||
[label]="'project.page.id'">
|
[label]="'project.page.id'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.expectedcompletion']"
|
[fields]="['project.identifier.expectedcompletion']"
|
||||||
[label]="'project.page.expectedcompletion'">
|
[label]="'project.page.expectedcompletion'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
@@ -32,11 +32,11 @@
|
|||||||
[entities]="orgUnits$ | async"
|
[entities]="orgUnits$ | async"
|
||||||
[label]="'relationships.isOrgUnitOf' | translate">
|
[label]="'relationships.isOrgUnitOf' | translate">
|
||||||
</ds-related-entities>
|
</ds-related-entities>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.description']"
|
[fields]="['project.identifier.description']"
|
||||||
[label]="'project.page.description'">
|
[label]="'project.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.keyword']"
|
[fields]="['project.identifier.keyword']"
|
||||||
[label]="'project.page.keyword'">
|
[label]="'project.page.keyword'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
|
@@ -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 { Observable } from 'rxjs/Observable';
|
||||||
import { Item } from '../../../../core/shared/item.model';
|
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 { RemoteData } from '../../../../core/data/remote-data';
|
||||||
import { PaginatedList } from '../../../../core/data/paginated-list';
|
import { PaginatedList } from '../../../../core/data/paginated-list';
|
||||||
import { PageInfo } from '../../../../core/shared/page-info.model';
|
import { PageInfo } from '../../../../core/shared/page-info.model';
|
||||||
import { isNotEmpty } from '../../../../shared/empty.util';
|
|
||||||
import { ProjectPageFieldsComponent } from './project-page-fields.component';
|
import { ProjectPageFieldsComponent } from './project-page-fields.component';
|
||||||
|
import { getEntityPageFieldsTest } from '../shared/entity-page-fields.component.spec';
|
||||||
let comp: ProjectPageFieldsComponent;
|
|
||||||
let fixture: ComponentFixture<ProjectPageFieldsComponent>;
|
|
||||||
|
|
||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: Observable.of(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
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', () => {
|
describe('ProjectPageFieldsComponent', getEntityPageFieldsTest(mockItem, 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;
|
|
||||||
}
|
|
||||||
|
@@ -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<any>;
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
Reference in New Issue
Block a user