mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 05:23:06 +00:00
120 lines
3.6 KiB
TypeScript
120 lines
3.6 KiB
TypeScript
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
import { By } from '@angular/platform-browser';
|
|
import { MetadataRepresentationListComponent } from './metadata-representation-list.component';
|
|
import { RelationshipService } from '../../../core/data/relationship.service';
|
|
import { Item } from '../../../core/shared/item.model';
|
|
import { Relationship } from '../../../core/shared/item-relationships/relationship.model';
|
|
import { createSuccessfulRemoteDataObject$ } from '../../../shared/testing/utils';
|
|
import { TranslateModule } from '@ngx-translate/core';
|
|
import { VarDirective } from '../../../shared/utils/var.directive';
|
|
import { of as observableOf } from 'rxjs';
|
|
|
|
const itemType = 'Person';
|
|
const metadataField = 'dc.contributor.author';
|
|
const parentItem: Item = Object.assign(new Item(), {
|
|
id: 'parent-item',
|
|
metadata: {
|
|
'dc.contributor.author': [
|
|
{
|
|
language: null,
|
|
value: 'Related Author with authority',
|
|
authority: 'virtual::related-author',
|
|
place: 2
|
|
},
|
|
{
|
|
language: null,
|
|
value: 'Author without authority',
|
|
place: 1
|
|
}
|
|
],
|
|
'dc.title': [
|
|
{
|
|
language: null,
|
|
value: 'Parent Item'
|
|
}
|
|
]
|
|
}
|
|
});
|
|
const relatedAuthor: Item = Object.assign(new Item(), {
|
|
id: 'related-author',
|
|
metadata: {
|
|
'dc.title': [
|
|
{
|
|
language: null,
|
|
value: 'Related Author'
|
|
}
|
|
]
|
|
}
|
|
});
|
|
const relation: Relationship = Object.assign(new Relationship(), {
|
|
leftItem: createSuccessfulRemoteDataObject$(parentItem),
|
|
rightItem: createSuccessfulRemoteDataObject$(relatedAuthor)
|
|
});
|
|
let relationshipService: RelationshipService;
|
|
|
|
describe('MetadataRepresentationListComponent', () => {
|
|
let comp: MetadataRepresentationListComponent;
|
|
let fixture: ComponentFixture<MetadataRepresentationListComponent>;
|
|
|
|
relationshipService = jasmine.createSpyObj('relationshipService',
|
|
{
|
|
findById: createSuccessfulRemoteDataObject$(relation)
|
|
}
|
|
);
|
|
|
|
beforeEach(async(() => {
|
|
TestBed.configureTestingModule({
|
|
imports: [TranslateModule.forRoot()],
|
|
declarations: [MetadataRepresentationListComponent, VarDirective],
|
|
providers: [
|
|
{ provide: RelationshipService, useValue: relationshipService }
|
|
],
|
|
schemas: [NO_ERRORS_SCHEMA]
|
|
}).overrideComponent(MetadataRepresentationListComponent, {
|
|
set: {changeDetection: ChangeDetectionStrategy.Default}
|
|
}).compileComponents();
|
|
}));
|
|
|
|
beforeEach(async(() => {
|
|
fixture = TestBed.createComponent(MetadataRepresentationListComponent);
|
|
comp = fixture.componentInstance;
|
|
comp.parentItem = parentItem;
|
|
comp.itemType = itemType;
|
|
comp.metadataField = metadataField;
|
|
fixture.detectChanges();
|
|
}));
|
|
|
|
it('should load 2 ds-metadata-representation-loader components', () => {
|
|
const fields = fixture.debugElement.queryAll(By.css('ds-metadata-representation-loader'));
|
|
expect(fields.length).toBe(2);
|
|
});
|
|
|
|
it('should contain one page of items', () => {
|
|
expect(comp.objects.length).toEqual(1);
|
|
});
|
|
|
|
describe('when increase is called', () => {
|
|
beforeEach(() => {
|
|
comp.increase();
|
|
});
|
|
|
|
it('should add a new page to the list', () => {
|
|
expect(comp.objects.length).toEqual(2);
|
|
});
|
|
});
|
|
|
|
describe('when decrease is called', () => {
|
|
beforeEach(() => {
|
|
// Add a second page
|
|
comp.objects.push(observableOf(undefined));
|
|
comp.decrease();
|
|
});
|
|
|
|
it('should decrease the list of pages', () => {
|
|
expect(comp.objects.length).toEqual(1);
|
|
});
|
|
});
|
|
|
|
});
|