untyped-item.component.spec.ts (dspace-angular-dspace-7.0) | : | untyped-item.component.spec.ts (dspace-angular-dspace-7.1) | ||
---|---|---|---|---|
skipping to change at line 15 | skipping to change at line 15 | |||
import { Store } from '@ngrx/store'; | import { Store } from '@ngrx/store'; | |||
import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; | import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; | |||
import { Observable } from 'rxjs/internal/Observable'; | import { Observable } from 'rxjs/internal/Observable'; | |||
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-d ata-build.service'; | import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-d ata-build.service'; | |||
import { ObjectCacheService } from '../../../../core/cache/object-cache.service' ; | import { ObjectCacheService } from '../../../../core/cache/object-cache.service' ; | |||
import { BitstreamDataService } from '../../../../core/data/bitstream-data.servi ce'; | import { BitstreamDataService } from '../../../../core/data/bitstream-data.servi ce'; | |||
import { CommunityDataService } from '../../../../core/data/community-data.servi ce'; | import { CommunityDataService } from '../../../../core/data/community-data.servi ce'; | |||
import { DefaultChangeAnalyzer } from '../../../../core/data/default-change-anal yzer.service'; | import { DefaultChangeAnalyzer } from '../../../../core/data/default-change-anal yzer.service'; | |||
import { DSOChangeAnalyzer } from '../../../../core/data/dso-change-analyzer.ser vice'; | import { DSOChangeAnalyzer } from '../../../../core/data/dso-change-analyzer.ser vice'; | |||
import { ItemDataService } from '../../../../core/data/item-data.service'; | import { ItemDataService } from '../../../../core/data/item-data.service'; | |||
import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; | ||||
import { RelationshipService } from '../../../../core/data/relationship.service' ; | import { RelationshipService } from '../../../../core/data/relationship.service' ; | |||
import { RemoteData } from '../../../../core/data/remote-data'; | import { RemoteData } from '../../../../core/data/remote-data'; | |||
import { Bitstream } from '../../../../core/shared/bitstream.model'; | import { Bitstream } from '../../../../core/shared/bitstream.model'; | |||
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service '; | import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service '; | |||
import { Item } from '../../../../core/shared/item.model'; | import { Item } from '../../../../core/shared/item.model'; | |||
import { MetadataMap } from '../../../../core/shared/metadata.models'; | import { MetadataMap } from '../../../../core/shared/metadata.models'; | |||
import { PageInfo } from '../../../../core/shared/page-info.model'; | ||||
import { UUIDService } from '../../../../core/shared/uuid.service'; | import { UUIDService } from '../../../../core/shared/uuid.service'; | |||
import { TranslateLoaderMock } from '../../../../shared/mocks/translate-loader.m ock'; | import { TranslateLoaderMock } from '../../../../shared/mocks/translate-loader.m ock'; | |||
import { NotificationsService } from '../../../../shared/notifications/notificat ions.service'; | import { NotificationsService } from '../../../../shared/notifications/notificat ions.service'; | |||
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-dat a.utils'; | import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-dat a.utils'; | |||
import { TruncatableService } from '../../../../shared/truncatable/truncatable.s ervice'; | import { TruncatableService } from '../../../../shared/truncatable/truncatable.s ervice'; | |||
import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; | import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; | |||
import { GenericItemPageFieldComponent } from '../../field-components/specific-f ield/generic/generic-item-page-field.component'; | import { GenericItemPageFieldComponent } from '../../field-components/specific-f ield/generic/generic-item-page-field.component'; | |||
import { createRelationshipsObservable } from '../shared/item.component.spec'; | import { | |||
createRelationshipsObservable, | ||||
iiifEnabled, | ||||
iiifSearchEnabled, mockRouteService | ||||
} from '../shared/item.component.spec'; | ||||
import { UntypedItemComponent } from './untyped-item.component'; | import { UntypedItemComponent } from './untyped-item.component'; | |||
import { RouteService } from '../../../../core/services/route.service'; | ||||
const mockItem: Item = Object.assign(new Item(), { | import { of } from 'rxjs'; | |||
bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), | import { createPaginatedList } from '../../../../shared/testing/utils.test'; | |||
[])), | import { VersionHistoryDataService } from '../../../../core/data/version-history | |||
metadata: new MetadataMap(), | -data.service'; | |||
relationships: createRelationshipsObservable() | import { VersionDataService } from '../../../../core/data/version-data.service'; | |||
}); | import { RouterTestingModule } from '@angular/router/testing'; | |||
import { WorkspaceitemDataService } from '../../../../core/submission/workspacei | ||||
tem-data.service'; | ||||
import { SearchService } from '../../../../core/shared/search/search.service'; | ||||
import { ItemVersionsSharedService } from '../../../../shared/item/item-versions | ||||
/item-versions-shared.service'; | ||||
const iiifEnabledMap: MetadataMap = { | ||||
'dspace.iiif.enabled': [iiifEnabled], | ||||
}; | ||||
const iiifEnabledWithSearchMap: MetadataMap = { | ||||
'dspace.iiif.enabled': [iiifEnabled], | ||||
'iiif.search.enabled': [iiifSearchEnabled], | ||||
}; | ||||
const noMetadata = new MetadataMap(); | ||||
function getItem(metadata: MetadataMap) { | ||||
return Object.assign(new Item(), { | ||||
bundles: createSuccessfulRemoteDataObject$(createPaginatedList([])), | ||||
metadata: metadata, | ||||
relationships: createRelationshipsObservable() | ||||
}); | ||||
} | ||||
describe('UntypedItemComponent', () => { | describe('UntypedItemComponent', () => { | |||
let comp: UntypedItemComponent; | let comp: UntypedItemComponent; | |||
let fixture: ComponentFixture<UntypedItemComponent>; | let fixture: ComponentFixture<UntypedItemComponent>; | |||
beforeEach(waitForAsync(() => { | beforeEach(waitForAsync(() => { | |||
const mockBitstreamDataService = { | const mockBitstreamDataService = { | |||
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> { | getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> { | |||
return createSuccessfulRemoteDataObject$(new Bitstream()); | return createSuccessfulRemoteDataObject$(new Bitstream()); | |||
} | } | |||
}; | }; | |||
TestBed.configureTestingModule({ | TestBed.configureTestingModule({ | |||
imports: [TranslateModule.forRoot({ | imports: [ | |||
loader: { | TranslateModule.forRoot({ | |||
provide: TranslateLoader, | loader: { | |||
useClass: TranslateLoaderMock | provide: TranslateLoader, | |||
} | useClass: TranslateLoaderMock | |||
})], | } | |||
declarations: [UntypedItemComponent, GenericItemPageFieldComponent, Trunca | }), | |||
tePipe], | RouterTestingModule, | |||
], | ||||
declarations: [UntypedItemComponent, GenericItemPageFieldComponent, Trunca | ||||
tePipe ], | ||||
providers: [ | providers: [ | |||
{ provide: ItemDataService, useValue: {} }, | { provide: ItemDataService, useValue: {} }, | |||
{ provide: TruncatableService, useValue: {} }, | { provide: TruncatableService, useValue: {} }, | |||
{ provide: RelationshipService, useValue: {} }, | { provide: RelationshipService, useValue: {} }, | |||
{ provide: ObjectCacheService, useValue: {} }, | { provide: ObjectCacheService, useValue: {} }, | |||
{ provide: UUIDService, useValue: {} }, | { provide: UUIDService, useValue: {} }, | |||
{ provide: Store, useValue: {} }, | { provide: Store, useValue: {} }, | |||
{ provide: RemoteDataBuildService, useValue: {} }, | { provide: RemoteDataBuildService, useValue: {} }, | |||
{ provide: CommunityDataService, useValue: {} }, | { provide: CommunityDataService, useValue: {} }, | |||
{ provide: HALEndpointService, useValue: {} }, | { provide: HALEndpointService, useValue: {} }, | |||
{ provide: NotificationsService, useValue: {} }, | { provide: NotificationsService, useValue: {} }, | |||
{ provide: HttpClient, useValue: {} }, | { provide: HttpClient, useValue: {} }, | |||
{ provide: DSOChangeAnalyzer, useValue: {} }, | { provide: DSOChangeAnalyzer, useValue: {} }, | |||
{ provide: DefaultChangeAnalyzer, useValue: {} }, | { provide: DefaultChangeAnalyzer, useValue: {} }, | |||
{ provide: VersionHistoryDataService, useValue: {} }, | ||||
{ provide: VersionDataService, useValue: {} }, | ||||
{ provide: BitstreamDataService, useValue: mockBitstreamDataService }, | { provide: BitstreamDataService, useValue: mockBitstreamDataService }, | |||
{ provide: WorkspaceitemDataService, useValue: {} }, | ||||
{ provide: SearchService, useValue: {} }, | ||||
{ provide: ItemDataService, useValue: {} }, | ||||
{ provide: ItemVersionsSharedService, useValue: {} }, | ||||
{ provide: RouteService, useValue: mockRouteService } | ||||
], | ], | |||
schemas: [NO_ERRORS_SCHEMA] | schemas: [NO_ERRORS_SCHEMA] | |||
}).overrideComponent(UntypedItemComponent, { | }).overrideComponent(UntypedItemComponent, { | |||
set: { changeDetection: ChangeDetectionStrategy.Default } | set: {changeDetection: ChangeDetectionStrategy.Default} | |||
}).compileComponents(); | }).compileComponents(); | |||
})); | })); | |||
beforeEach(waitForAsync(() => { | describe('default view', () => { | |||
fixture = TestBed.createComponent(UntypedItemComponent); | beforeEach(waitForAsync(() => { | |||
comp = fixture.componentInstance; | fixture = TestBed.createComponent(UntypedItemComponent); | |||
comp.object = mockItem; | comp = fixture.componentInstance; | |||
fixture.detectChanges(); | comp.object = getItem(noMetadata); | |||
})); | fixture.detectChanges(); | |||
})); | ||||
it('should contain a component to display the date', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-item-page-date-field | it('should contain a component to display the date', () => { | |||
')); | const fields = fixture.debugElement.queryAll(By.css('ds-item-page-date-fie | |||
expect(fields.length).toBeGreaterThanOrEqual(1); | ld')); | |||
}); | expect(fields.length).toBeGreaterThanOrEqual(1); | |||
}); | ||||
it('should not contain a metadata only author field', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-item-page-author-fie | it('should not contain a metadata only author field', () => { | |||
ld')); | const fields = fixture.debugElement.queryAll(By.css('ds-item-page-author-f | |||
expect(fields.length).toBe(0); | ield')); | |||
}); | expect(fields.length).toBe(0); | |||
}); | ||||
it('should contain a mixed metadata and relationship field for authors', () => | ||||
{ | it('should contain a mixed metadata and relationship field for authors', () | |||
const fields = fixture.debugElement.queryAll(By.css('.ds-item-page-mixed-aut | => { | |||
hor-field')); | const fields = fixture.debugElement.queryAll(By.css('.ds-item-page-mixed-a | |||
expect(fields.length).toBe(1); | uthor-field')); | |||
}); | expect(fields.length).toBe(1); | |||
}); | ||||
it('should contain a component to display the abstract', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-item-page-abstract-f | it('should contain a component to display the abstract', () => { | |||
ield')); | const fields = fixture.debugElement.queryAll(By.css('ds-item-page-abstract | |||
expect(fields.length).toBeGreaterThanOrEqual(1); | -field')); | |||
}); | expect(fields.length).toBeGreaterThanOrEqual(1); | |||
}); | ||||
it('should contain a component to display the uri', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-item-page-uri-field' | it('should contain a component to display the uri', () => { | |||
)); | const fields = fixture.debugElement.queryAll(By.css('ds-item-page-uri-fiel | |||
expect(fields.length).toBeGreaterThanOrEqual(1); | d')); | |||
}); | expect(fields.length).toBeGreaterThanOrEqual(1); | |||
}); | ||||
it('should contain a component to display the collections', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-item-page-collecti | ||||
ons')); | ||||
expect(fields.length).toBeGreaterThanOrEqual(1); | ||||
}); | ||||
it('should not contain an iiif viewer component', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-mirador-viewer')); | ||||
expect(fields.length).toBe(0); | ||||
}); | ||||
}); | ||||
describe('with IIIF viewer', () => { | ||||
beforeEach(waitForAsync(() => { | ||||
fixture = TestBed.createComponent(UntypedItemComponent); | ||||
comp = fixture.componentInstance; | ||||
comp.object = getItem(iiifEnabledMap); | ||||
fixture.detectChanges(); | ||||
})); | ||||
it('should contain an iiif viewer component', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-mirador-viewer')); | ||||
expect(fields.length).toBeGreaterThanOrEqual(1); | ||||
}); | ||||
}); | ||||
describe('with IIIF viewer and search', () => { | ||||
beforeEach(waitForAsync(() => { | ||||
mockRouteService.getPreviousUrl.and.returnValue(of(['/search?q=bird&motiva | ||||
tion=painting','/item'])); | ||||
fixture = TestBed.createComponent(UntypedItemComponent); | ||||
comp = fixture.componentInstance; | ||||
comp.object = getItem(iiifEnabledWithSearchMap); | ||||
fixture.detectChanges(); | ||||
})); | ||||
it('should contain an iiif viewer component', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-mirador-viewer')); | ||||
expect(fields.length).toBeGreaterThanOrEqual(1); | ||||
}); | ||||
it('should call the RouteService getHistory method', () => { | ||||
expect(mockRouteService.getPreviousUrl).toHaveBeenCalled(); | ||||
}); | ||||
it('should contain a component to display the collections', () => { | ||||
const fields = fixture.debugElement.queryAll(By.css('ds-item-page-collection | ||||
s')); | ||||
expect(fields.length).toBeGreaterThanOrEqual(1); | ||||
}); | }); | |||
}); | }); | |||
End of changes. 11 change blocks. | ||||
61 lines changed or deleted | 141 lines changed or added |