diff --git a/src/app/+community-page/delete-community-page/delete-community-page.component.spec.ts b/src/app/+community-page/delete-community-page/delete-community-page.component.spec.ts index c23df93976..613be9deb3 100644 --- a/src/app/+community-page/delete-community-page/delete-community-page.component.spec.ts +++ b/src/app/+community-page/delete-community-page/delete-community-page.component.spec.ts @@ -1,15 +1,14 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ActivatedRoute, Router } from '@angular/router'; -import { TranslateModule } from '@ngx-translate/core'; import { CommonModule } from '@angular/common'; -import { RouterTestingModule } from '@angular/router/testing'; import { NO_ERRORS_SCHEMA } from '@angular/core'; -import { RouteService } from '../../core/services/route.service'; -import { SharedModule } from '../../shared/shared.module'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { ActivatedRoute } from '@angular/router'; +import { RouterTestingModule } from '@angular/router/testing'; +import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { DeleteCommunityPageComponent } from './delete-community-page.component'; import { CommunityDataService } from '../../core/data/community-data.service'; +import { NotificationsService } from '../../shared/notifications/notifications.service'; +import { SharedModule } from '../../shared/shared.module'; +import { DeleteCommunityPageComponent } from './delete-community-page.component'; describe('DeleteCommunityPageComponent', () => { let comp: DeleteCommunityPageComponent; diff --git a/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.spec.ts b/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.spec.ts index e07df15651..09a3989571 100644 --- a/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.spec.ts +++ b/src/app/+item-page/edit-item-page/item-metadata/edit-in-place-field/edit-in-place-field.component.spec.ts @@ -1,23 +1,22 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { CUSTOM_ELEMENTS_SCHEMA, DebugElement } from '@angular/core'; -import { EditInPlaceFieldComponent } from './edit-in-place-field.component'; -import { RegistryService } from '../../../../core/registry/registry.service'; -import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service'; -import { of as observableOf } from 'rxjs'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { PaginatedList } from '../../../../core/data/paginated-list'; -import { By } from '@angular/platform-browser'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; -import { SharedModule } from '../../../../shared/shared.module'; +import { By } from '@angular/platform-browser'; +import { TranslateModule } from '@ngx-translate/core'; import { getTestScheduler } from 'jasmine-marbles'; +import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions'; -import { TranslateModule } from '@ngx-translate/core'; -import { MetadatumViewModel } from '../../../../core/shared/metadata.models'; -import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'; +import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service'; +import { PaginatedList } from '../../../../core/data/paginated-list'; import { MetadataField } from '../../../../core/metadata/metadata-field.model'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils'; +import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'; +import { RegistryService } from '../../../../core/registry/registry.service'; +import { MetadatumViewModel } from '../../../../core/shared/metadata.models'; import { InputSuggestion } from '../../../../shared/input-suggestions/input-suggestions.model'; +import { SharedModule } from '../../../../shared/shared.module'; +import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils'; +import { EditInPlaceFieldComponent } from './edit-in-place-field.component'; let comp: EditInPlaceFieldComponent; let fixture: ComponentFixture; diff --git a/src/app/core/data/request.reducer.spec.ts b/src/app/core/data/request.reducer.spec.ts index 493f694546..f79618d48d 100644 --- a/src/app/core/data/request.reducer.spec.ts +++ b/src/app/core/data/request.reducer.spec.ts @@ -1,3 +1,4 @@ +// TODO Fix on complete test run import * as deepFreeze from 'deep-freeze'; import { RestResponse } from '../cache/response.models'; import { @@ -38,12 +39,12 @@ describe('requestReducer', () => { deepFreeze(testState); // TODO Fix - // it('should return the current state when no valid actions have been made', () => { - // const action = new NullAction(); - // const newState = requestReducer(testState, action); - // - // expect(newState).toEqual(testState); - // }); + it('should return the current state when no valid actions have been made', () => { + const action = new NullAction(); + const newState = requestReducer(testState, action); + + expect(newState).toEqual(testState); + }); it('should start with an empty state', () => { const action = new NullAction(); diff --git a/src/app/core/data/request.service.spec.ts b/src/app/core/data/request.service.spec.ts index 01560380c2..9d83af91d7 100644 --- a/src/app/core/data/request.service.spec.ts +++ b/src/app/core/data/request.service.spec.ts @@ -1,7 +1,9 @@ +// TODO Fix on complete test run import * as ngrx from '@ngrx/store'; import { ActionsSubject, Store } from '@ngrx/store'; import { cold, getTestScheduler, hot } from 'jasmine-marbles'; import { BehaviorSubject, EMPTY, of as observableOf } from 'rxjs'; +import { TestScheduler } from 'rxjs/testing'; import { getMockObjectCacheService } from '../../shared/mocks/mock-object-cache.service'; import { defaultUUID, getMockUUIDService } from '../../shared/mocks/mock-uuid.service'; @@ -19,9 +21,8 @@ import { PutRequest, RestRequest } from './request.models'; -import { RequestService } from './request.service'; -import { TestScheduler } from 'rxjs/testing'; import { RequestEntry } from './request.reducer'; +import { RequestService } from './request.service'; describe('RequestService', () => { let scheduler: TestScheduler; diff --git a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts index 39d7d9ccce..22bda8f056 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts @@ -1,19 +1,34 @@ +import { HttpClient } from '@angular/common/http'; import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { Store } from '@ngrx/store'; +import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; +import { Observable } from 'rxjs/internal/Observable'; +import { GenericItemPageFieldComponent } from '../../../../+item-page/simple/field-components/specific-field/generic/generic-item-page-field.component'; +import { NormalizedObjectBuildService } from '../../../../core/cache/builders/normalized-object-build.service'; +import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; +import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; +import { CommunityDataService } from '../../../../core/data/community-data.service'; +import { DefaultChangeAnalyzer } from '../../../../core/data/default-change-analyzer.service'; +import { DSOChangeAnalyzer } from '../../../../core/data/dso-change-analyzer.service'; +import { ItemDataService } from '../../../../core/data/item-data.service'; +import { PaginatedList } from '../../../../core/data/paginated-list'; +import { RelationshipService } from '../../../../core/data/relationship.service'; +import { RemoteData } from '../../../../core/data/remote-data'; +import { Bitstream } from '../../../../core/shared/bitstream.model'; +import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service'; +import { Item } from '../../../../core/shared/item.model'; +import { PageInfo } from '../../../../core/shared/page-info.model'; +import { UUIDService } from '../../../../core/shared/uuid.service'; +import { isNotEmpty } from '../../../../shared/empty.util'; +import { MockTranslateLoader } from '../../../../shared/mocks/mock-translate-loader'; +import { NotificationsService } from '../../../../shared/notifications/notifications.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; -import { ItemDataService } from '../../../../core/data/item-data.service'; -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 { PaginatedList } from '../../../../core/data/paginated-list'; -import { PageInfo } from '../../../../core/shared/page-info.model'; -import { isNotEmpty } from '../../../../shared/empty.util'; import { JournalComponent } from './journal.component'; -import { GenericItemPageFieldComponent } from '../../../../+item-page/simple/field-components/specific-field/generic/generic-item-page-field.component'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils'; -import { RelationshipService } from '../../../../core/data/relationship.service'; let comp: JournalComponent; let fixture: ComponentFixture; @@ -43,6 +58,11 @@ const mockItem: Item = Object.assign(new Item(), { }); describe('JournalComponent', () => { + const mockBitstreamDataService = { + getThumbnailFor(item: Item): Observable> { + return createSuccessfulRemoteDataObject$(new Bitstream()); + } + }; beforeEach(async(() => { TestBed.configureTestingModule({ imports: [TranslateModule.forRoot({ @@ -53,14 +73,26 @@ describe('JournalComponent', () => { })], declarations: [JournalComponent, GenericItemPageFieldComponent, TruncatePipe], providers: [ - {provide: ItemDataService, useValue: {}}, - {provide: TruncatableService, useValue: {}}, - {provide: RelationshipService, useValue: {}} + { provide: ItemDataService, useValue: {} }, + { provide: TruncatableService, useValue: {} }, + { provide: RelationshipService, useValue: {} }, + { provide: ObjectCacheService, useValue: {} }, + { provide: UUIDService, useValue: {} }, + { provide: Store, useValue: {} }, + { provide: RemoteDataBuildService, useValue: {} }, + { provide: NormalizedObjectBuildService, useValue: {} }, + { provide: CommunityDataService, useValue: {} }, + { provide: HALEndpointService, useValue: {} }, + { provide: HttpClient, useValue: {} }, + { provide: DSOChangeAnalyzer, useValue: {} }, + { provide: NotificationsService, useValue: {} }, + { provide: DefaultChangeAnalyzer, useValue: {} }, + { provide: BitstreamDataService, useValue: mockBitstreamDataService }, ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(JournalComponent, { - set: {changeDetection: ChangeDetectionStrategy.Default} + set: { changeDetection: ChangeDetectionStrategy.Default } }).compileComponents(); })); diff --git a/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts b/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts index 6792000fd0..72857654ce 100644 --- a/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts @@ -1,14 +1,12 @@ -import { Item } from '../../../../core/shared/item.model'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { PaginatedList } from '../../../../core/data/paginated-list'; -import { PageInfo } from '../../../../core/shared/page-info.model'; -import { ProjectComponent } from './project.component'; -import { of as observableOf } from 'rxjs'; import { createRelationshipsObservable, getItemPageFieldsTest } from '../../../../+item-page/simple/item-types/shared/item.component.spec'; +import { PaginatedList } from '../../../../core/data/paginated-list'; +import { Item } from '../../../../core/shared/item.model'; +import { PageInfo } from '../../../../core/shared/page-info.model'; import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils'; +import { ProjectComponent } from './project.component'; const mockItem: Item = Object.assign(new Item(), { bundles: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])), diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts index 2a77b64f43..2a49c1923d 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts @@ -1,21 +1,34 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { HttpClient } from '@angular/common/http'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; -import { of as observableOf } from 'rxjs'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { OrgUnitSearchResultListSubmissionElementComponent } from './org-unit-search-result-list-submission-element.component'; -import { Item } from '../../../../../core/shared/item.model'; -import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; -import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; -import { RelationshipService } from '../../../../../core/data/relationship.service'; -import { NotificationsService } from '../../../../../shared/notifications/notifications.service'; -import { TranslateService } from '@ngx-translate/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { ItemDataService } from '../../../../../core/data/item-data.service'; -import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; import { Store } from '@ngrx/store'; -import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/testing/utils'; +import { TranslateService } from '@ngx-translate/core'; +import { of as observableOf } from 'rxjs'; +import { Observable } from 'rxjs/internal/Observable'; +import { NormalizedObjectBuildService } from '../../../../../core/cache/builders/normalized-object-build.service'; +import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../../../../core/cache/object-cache.service'; +import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service'; +import { CommunityDataService } from '../../../../../core/data/community-data.service'; +import { DefaultChangeAnalyzer } from '../../../../../core/data/default-change-analyzer.service'; +import { DSOChangeAnalyzer } from '../../../../../core/data/dso-change-analyzer.service'; +import { ItemDataService } from '../../../../../core/data/item-data.service'; import { PaginatedList } from '../../../../../core/data/paginated-list'; +import { RelationshipService } from '../../../../../core/data/relationship.service'; +import { RemoteData } from '../../../../../core/data/remote-data'; +import { Bitstream } from '../../../../../core/shared/bitstream.model'; +import { HALEndpointService } from '../../../../../core/shared/hal-endpoint.service'; +import { Item } from '../../../../../core/shared/item.model'; +import { UUIDService } from '../../../../../core/shared/uuid.service'; +import { NotificationsService } from '../../../../../shared/notifications/notifications.service'; +import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/testing/utils'; +import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; +import { OrgUnitSearchResultListSubmissionElementComponent } from './org-unit-search-result-list-submission-element.component'; let personListElementComponent: OrgUnitSearchResultListSubmissionElementComponent; let fixture: ComponentFixture; @@ -79,6 +92,11 @@ function init() { describe('OrgUnitSearchResultListSubmissionElementComponent', () => { beforeEach(async(() => { init(); + const mockBitstreamDataService = { + getThumbnailFor(item: Item): Observable> { + return createSuccessfulRemoteDataObject$(new Bitstream()); + } + }; TestBed.configureTestingModule({ declarations: [OrgUnitSearchResultListSubmissionElementComponent, TruncatePipe], providers: [ @@ -89,7 +107,17 @@ describe('OrgUnitSearchResultListSubmissionElementComponent', () => { { provide: NgbModal, useValue: {} }, { provide: ItemDataService, useValue: {} }, { provide: SelectableListService, useValue: {} }, - { provide: Store, useValue: {} } + { provide: Store, useValue: {} }, + { provide: ObjectCacheService, useValue: {} }, + { provide: UUIDService, useValue: {} }, + { provide: RemoteDataBuildService, useValue: {} }, + { provide: NormalizedObjectBuildService, useValue: {} }, + { provide: CommunityDataService, useValue: {} }, + { provide: HALEndpointService, useValue: {} }, + { provide: HttpClient, useValue: {} }, + { provide: DSOChangeAnalyzer, useValue: {} }, + { provide: DefaultChangeAnalyzer, useValue: {} }, + { provide: BitstreamDataService, useValue: mockBitstreamDataService }, ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts index a21f0ec075..ff320c7552 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/person/person-search-result-list-submission-element.component.spec.ts @@ -1,21 +1,34 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { HttpClient } from '@angular/common/http'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; -import { of as observableOf } from 'rxjs'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { PersonSearchResultListSubmissionElementComponent } from './person-search-result-list-submission-element.component'; -import { Item } from '../../../../../core/shared/item.model'; -import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; -import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; -import { RelationshipService } from '../../../../../core/data/relationship.service'; -import { NotificationsService } from '../../../../../shared/notifications/notifications.service'; -import { TranslateService } from '@ngx-translate/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { ItemDataService } from '../../../../../core/data/item-data.service'; -import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; import { Store } from '@ngrx/store'; -import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/testing/utils'; +import { TranslateService } from '@ngx-translate/core'; +import { of as observableOf } from 'rxjs'; +import { Observable } from 'rxjs/internal/Observable'; +import { NormalizedObjectBuildService } from '../../../../../core/cache/builders/normalized-object-build.service'; +import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../../../../core/cache/object-cache.service'; +import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service'; +import { CommunityDataService } from '../../../../../core/data/community-data.service'; +import { DefaultChangeAnalyzer } from '../../../../../core/data/default-change-analyzer.service'; +import { DSOChangeAnalyzer } from '../../../../../core/data/dso-change-analyzer.service'; +import { ItemDataService } from '../../../../../core/data/item-data.service'; import { PaginatedList } from '../../../../../core/data/paginated-list'; +import { RelationshipService } from '../../../../../core/data/relationship.service'; +import { RemoteData } from '../../../../../core/data/remote-data'; +import { Bitstream } from '../../../../../core/shared/bitstream.model'; +import { HALEndpointService } from '../../../../../core/shared/hal-endpoint.service'; +import { Item } from '../../../../../core/shared/item.model'; +import { UUIDService } from '../../../../../core/shared/uuid.service'; +import { NotificationsService } from '../../../../../shared/notifications/notifications.service'; +import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/testing/utils'; +import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; +import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; +import { PersonSearchResultListSubmissionElementComponent } from './person-search-result-list-submission-element.component'; let personListElementComponent: PersonSearchResultListSubmissionElementComponent; let fixture: ComponentFixture; @@ -71,6 +84,11 @@ function init() { } describe('PersonSearchResultListElementSubmissionComponent', () => { + const mockBitstreamDataService = { + getThumbnailFor(item: Item): Observable> { + return createSuccessfulRemoteDataObject$(new Bitstream()); + } + }; beforeEach(async(() => { init(); TestBed.configureTestingModule({ @@ -83,7 +101,17 @@ describe('PersonSearchResultListElementSubmissionComponent', () => { { provide: NgbModal, useValue: {} }, { provide: ItemDataService, useValue: {} }, { provide: SelectableListService, useValue: {} }, - { provide: Store, useValue: {}} + { provide: Store, useValue: {}}, + { provide: ObjectCacheService, useValue: {} }, + { provide: UUIDService, useValue: {} }, + { provide: RemoteDataBuildService, useValue: {} }, + { provide: NormalizedObjectBuildService, useValue: {} }, + { provide: CommunityDataService, useValue: {} }, + { provide: HALEndpointService, useValue: {} }, + { provide: HttpClient, useValue: {} }, + { provide: DSOChangeAnalyzer, useValue: {} }, + { provide: DefaultChangeAnalyzer, useValue: {} }, + { provide: BitstreamDataService, useValue: mockBitstreamDataService }, ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/shared/mocks/mock-submission.ts b/src/app/shared/mocks/mock-submission.ts index a97d2fb31a..a9c7fae654 100644 --- a/src/app/shared/mocks/mock-submission.ts +++ b/src/app/shared/mocks/mock-submission.ts @@ -1,15 +1,16 @@ -import { SubmissionObjectState } from '../../submission/objects/submission-objects.reducer'; import { SubmissionDefinitionsModel } from '../../core/config/models/config-submission-definitions.model'; import { PaginatedList } from '../../core/data/paginated-list'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { FormFieldMetadataValueObject } from '../form/builder/models/form-field-metadata-value.model'; import { Group } from '../../core/eperson/models/group.model'; +import { PageInfo } from '../../core/shared/page-info.model'; +import { SubmissionObjectState } from '../../submission/objects/submission-objects.reducer'; +import { FormFieldMetadataValueObject } from '../form/builder/models/form-field-metadata-value.model'; export const mockSectionsData = { - traditionalpageone:{ + traditionalpageone: { 'dc.title': [ - new FormFieldMetadataValueObject('test', null, null, 'test' ) - ]}, + new FormFieldMetadataValueObject('test', null, null, 'test') + ] + }, license: { url: null, acceptanceDate: null, @@ -21,14 +22,16 @@ export const mockSectionsData = { }; export const mockSectionsDataTwo = { - traditionalpageone:{ + traditionalpageone: { 'dc.title': [ - new FormFieldMetadataValueObject('test', null, null, 'test' ) - ]}, - traditionalpagetwo:{ + new FormFieldMetadataValueObject('test', null, null, 'test') + ] + }, + traditionalpagetwo: { 'dc.relation': [ - new FormFieldMetadataValueObject('test', null, null, 'test' ) - ]}, + new FormFieldMetadataValueObject('test', null, null, 'test') + ] + }, license: { url: null, acceptanceDate: null, @@ -68,14 +71,14 @@ export const mockUploadResponse1Errors = { ] }; -export const mockUploadResponse1ParsedErrors: any = { +export const mockUploadResponse1ParsedErrors: any = { traditionalpageone: [ { path: '/sections/traditionalpageone/dc.title', message: 'error.validation.required' }, { path: '/sections/traditionalpageone/dc.date.issued', message: 'error.validation.required' } ] }; -export const mockLicenseParsedErrors: any = { +export const mockLicenseParsedErrors: any = { license: [ { path: '/sections/license', message: 'error.validation.license.notgranted' } ] @@ -131,9 +134,9 @@ export const mockSubmissionRestResponse = [ name: null, metadata: [], _links: { - content: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content', - format: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/format', - self: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425' + content: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content' }, + format: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/format' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425' } } } ], @@ -180,10 +183,10 @@ export const mockSubmissionRestResponse = [ } ], _links: { - license: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/license', - defaultAccessConditions: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/defaultAccessConditions', - logo: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/logo', - self: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb' + license: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/license' }, + defaultAccessConditions: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/defaultAccessConditions' }, + logo: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/logo' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb' } } } ], @@ -202,10 +205,10 @@ export const mockSubmissionRestResponse = [ name: null, metadata: [], _links: { - bitstreams: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5/bitstreams', - owningCollection: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5/owningCollection', - templateItemOf: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5/templateItemOf', - self: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5' + bitstreams: { href: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5/bitstreams' }, + owningCollection: { href: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5/owningCollection' }, + templateItemOf: { href: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5/templateItemOf' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5' } } } ], @@ -223,7 +226,8 @@ export const mockSubmissionRestResponse = [ }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' }, @@ -236,7 +240,8 @@ export const mockSubmissionRestResponse = [ }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, @@ -246,8 +251,8 @@ export const mockSubmissionRestResponse = [ sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, @@ -257,8 +262,8 @@ export const mockSubmissionRestResponse = [ sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, @@ -268,8 +273,8 @@ export const mockSubmissionRestResponse = [ sectionType: 'upload', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, @@ -283,7 +288,8 @@ export const mockSubmissionRestResponse = [ }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' } @@ -291,9 +297,9 @@ export const mockSubmissionRestResponse = [ name: 'traditional', type: 'submissiondefinition', _links: { - collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', - sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', - self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' + collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' }, + sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } @@ -303,11 +309,11 @@ export const mockSubmissionRestResponse = [ self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826', type: 'workspaceitem', _links: { - collection: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection', - item: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item', - submissionDefinition: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition', - submitter: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter', - self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' + collection: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection' }, + item: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item' }, + submissionDefinition: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition' }, + submitter: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' } } } ]; @@ -332,7 +338,7 @@ export const mockSubmissionObject = { self: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20', type: 'resourcePolicy', _links: { - self: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20' + self: { href: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20' } } } ] @@ -349,9 +355,9 @@ export const mockSubmissionObject = { name: null, metadata: [], _links: { - content: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content', - format: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/format', - self: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425' + content: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content' }, + format: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/format' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425' } } }, self: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb', @@ -397,10 +403,10 @@ export const mockSubmissionObject = { } ], _links: { - license: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/license', - defaultAccessConditions: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/defaultAccessConditions', - logo: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/logo', - self: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb' + license: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/license' }, + defaultAccessConditions: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/defaultAccessConditions' }, + logo: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/logo' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb' } } }, item: { @@ -426,10 +432,10 @@ export const mockSubmissionObject = { name: null, metadata: [], _links: { - bitstreams: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/bitstreams', - owningCollection: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/owningCollection', - templateItemOf: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/templateItemOf', - self: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270' + bitstreams: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/bitstreams' }, + owningCollection: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/owningCollection' }, + templateItemOf: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/templateItemOf' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270' } } }, submissionDefinition: { @@ -451,7 +457,8 @@ export const mockSubmissionObject = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, @@ -461,8 +468,8 @@ export const mockSubmissionObject = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, @@ -472,8 +479,8 @@ export const mockSubmissionObject = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, @@ -483,8 +490,8 @@ export const mockSubmissionObject = { sectionType: 'upload', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, @@ -498,7 +505,8 @@ export const mockSubmissionObject = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' } @@ -507,9 +515,9 @@ export const mockSubmissionObject = { name: 'traditional', type: 'submissiondefinition', _links: { - collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', - sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', - self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' + collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' }, + sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional', collections: { @@ -549,7 +557,7 @@ export const mockSubmissionObject = { } ], _links: { - self: 'https://rest.api/dspace-spring-rest/api/eperson/epersons/99423c27-b642-5tg6-a9cd-6d910e68dca5' + self: { href: 'https://rest.api/dspace-spring-rest/api/eperson/epersons/99423c27-b642-5tg6-a9cd-6d910e68dca5' } } }, id: 826, @@ -576,11 +584,11 @@ export const mockSubmissionObject = { self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826', type: 'workspaceitem', _links: { - collection: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection', - item: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item', - submissionDefinition: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition', - submitter: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter', - self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' + collection: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection' }, + item: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item' }, + submissionDefinition: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition' }, + submitter: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' } } }; @@ -604,7 +612,7 @@ export const mockSubmissionObjectNew = { self: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20', type: 'resourcePolicy', _links: { - self: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20' + self: { href: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20' } } } ] @@ -621,9 +629,9 @@ export const mockSubmissionObjectNew = { name: null, metadata: [], _links: { - content: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content', - format: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/format', - self: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425' + content: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content' }, + format: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/format' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425' } } }, self: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb', @@ -669,10 +677,10 @@ export const mockSubmissionObjectNew = { } ], _links: { - license: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb/license', - defaultAccessConditions: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb/defaultAccessConditions', - logo: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb/logo', - self: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb' + license: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb/license' }, + defaultAccessConditions: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb/defaultAccessConditions' }, + logo: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb/logo' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb' } } }, item: { @@ -698,10 +706,10 @@ export const mockSubmissionObjectNew = { name: null, metadata: [], _links: { - bitstreams: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/bitstreams', - owningCollection: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/owningCollection', - templateItemOf: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/templateItemOf', - self: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270' + bitstreams: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/bitstreams' }, + owningCollection: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/owningCollection' }, + templateItemOf: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/templateItemOf' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270' } } }, submissionDefinition: { @@ -723,7 +731,8 @@ export const mockSubmissionObjectNew = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, @@ -733,8 +742,8 @@ export const mockSubmissionObjectNew = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, @@ -744,8 +753,8 @@ export const mockSubmissionObjectNew = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, @@ -755,8 +764,8 @@ export const mockSubmissionObjectNew = { sectionType: 'upload', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, @@ -770,7 +779,8 @@ export const mockSubmissionObjectNew = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' } @@ -779,9 +789,9 @@ export const mockSubmissionObjectNew = { name: 'traditionaltwo', type: 'submissiondefinition', _links: { - collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', - sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', - self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' + collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' }, + sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional', collections: { @@ -821,7 +831,7 @@ export const mockSubmissionObjectNew = { } ], _links: { - self: 'https://rest.api/dspace-spring-rest/api/eperson/epersons/99423c27-b642-4bb9-a9cd-45gh23e68dca5' + self: { href: 'https://rest.api/dspace-spring-rest/api/eperson/epersons/99423c27-b642-4bb9-a9cd-45gh23e68dca5' } } }, id: 826, @@ -831,11 +841,11 @@ export const mockSubmissionObjectNew = { self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826', type: 'workspaceitem', _links: { - collection: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection', - item: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item', - submissionDefinition: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition', - submitter: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter', - self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' + collection: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection' }, + item: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item' }, + submissionDefinition: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition' }, + submitter: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' } } }; @@ -857,7 +867,8 @@ export const mockSubmissionDefinitionResponse = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' }, @@ -870,7 +881,8 @@ export const mockSubmissionDefinitionResponse = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, @@ -880,8 +892,8 @@ export const mockSubmissionDefinitionResponse = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, @@ -891,8 +903,8 @@ export const mockSubmissionDefinitionResponse = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, @@ -902,8 +914,8 @@ export const mockSubmissionDefinitionResponse = { sectionType: 'upload', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, @@ -917,7 +929,8 @@ export const mockSubmissionDefinitionResponse = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' } @@ -925,16 +938,16 @@ export const mockSubmissionDefinitionResponse = { name: 'traditional', type: 'submissiondefinition', _links: { - collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', - sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', - self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' + collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' }, + sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } as any; export const mockSubmissionDefinition: SubmissionDefinitionsModel = { isDefault: true, - sections: new PaginatedList(new PageInfo(),[ + sections: new PaginatedList(new PageInfo(), [ { mandatory: true, sectionType: 'utils', @@ -944,7 +957,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction' }, @@ -957,7 +971,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection' }, @@ -967,8 +982,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' }, @@ -978,8 +993,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = { sectionType: 'submission-form', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' }, @@ -989,8 +1004,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = { sectionType: 'upload', type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', - config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, + config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' }, @@ -1004,7 +1019,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = { }, type: 'submissionsection', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' }, + config: '' }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license' } @@ -1012,9 +1028,9 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = { name: 'traditional', type: 'submissiondefinition', _links: { - collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', - sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', - self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' + collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' }, + sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' } as any; @@ -1321,7 +1337,7 @@ export const mockUploadConfigResponse = { name: 'bitstream-metadata', type: 'submissionform', _links: { - self: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/bitstream-metadata' + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/bitstream-metadata' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/bitstream-metadata' }, @@ -1330,8 +1346,8 @@ export const mockUploadConfigResponse = { name: 'upload', type: 'submissionupload', _links: { - metadata: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload/metadata', - self: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' + metadata: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload/metadata' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' } }, self: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' }; @@ -1379,8 +1395,8 @@ export const mockGroup = Object.assign(new Group(), { name: 'Anonymous', metadata: [], _links: { - groups: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1/groups', - self: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1' + groups: { href: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1/groups' }, + self: { href: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1' } }, groups: { pageInfo: { diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.spec.ts index d70663a7f3..37139e7652 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-detail-preview/item-detail-preview.component.spec.ts @@ -1,19 +1,34 @@ +import { HttpClient } from '@angular/common/http'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { Store } from '@ngrx/store'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; +import { Observable } from 'rxjs/internal/Observable'; +import { NormalizedObjectBuildService } from '../../../../core/cache/builders/normalized-object-build.service'; +import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; +import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; +import { CommunityDataService } from '../../../../core/data/community-data.service'; +import { DefaultChangeAnalyzer } from '../../../../core/data/default-change-analyzer.service'; +import { DSOChangeAnalyzer } from '../../../../core/data/dso-change-analyzer.service'; import { PaginatedList } from '../../../../core/data/paginated-list'; import { RemoteData } from '../../../../core/data/remote-data'; +import { FindListOptions } from '../../../../core/data/request.models'; +import { Bitstream } from '../../../../core/shared/bitstream.model'; import { FileService } from '../../../../core/shared/file.service'; import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service'; import { Item } from '../../../../core/shared/item.model'; import { PageInfo } from '../../../../core/shared/page-info.model'; +import { UUIDService } from '../../../../core/shared/uuid.service'; import { MockTranslateLoader } from '../../../mocks/mock-translate-loader'; +import { NotificationsService } from '../../../notifications/notifications.service'; import { HALEndpointServiceStub } from '../../../testing/hal-endpoint-service-stub'; +import { createSuccessfulRemoteDataObject$ } from '../../../testing/utils'; import { FileSizePipe } from '../../../utils/file-size-pipe'; +import { FollowLinkConfig } from '../../../utils/follow-link-config.model'; import { TruncatePipe } from '../../../utils/truncate.pipe'; import { VarDirective } from '../../../utils/var.directive'; @@ -61,6 +76,14 @@ const mockItem: Item = Object.assign(new Item(), { }); describe('ItemDetailPreviewComponent', () => { + const mockBitstreamDataService = { + getThumbnailFor(item: Item): Observable> { + return createSuccessfulRemoteDataObject$(new Bitstream()); + }, + findAllByItemAndBundleName(item: Item, bundleName: string, options?: FindListOptions, ...linksToFollow: Array>): Observable>> { + return createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])); + }, + }; beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ @@ -77,6 +100,17 @@ describe('ItemDetailPreviewComponent', () => { { provide: FileService, useValue: getMockFileService() }, { provide: HALEndpointService, useValue: new HALEndpointServiceStub('workspaceitems') }, { provide: ObjectCacheService, useValue: {} }, + { provide: UUIDService, useValue: {} }, + { provide: Store, useValue: {} }, + { provide: RemoteDataBuildService, useValue: {} }, + { provide: NormalizedObjectBuildService, useValue: {} }, + { provide: CommunityDataService, useValue: {} }, + { provide: HALEndpointService, useValue: {} }, + { provide: NotificationsService, useValue: {} }, + { provide: HttpClient, useValue: {} }, + { provide: DSOChangeAnalyzer, useValue: {} }, + { provide: DefaultChangeAnalyzer, useValue: {} }, + { provide: BitstreamDataService, useValue: mockBitstreamDataService }, ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(ItemDetailPreviewComponent, { diff --git a/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts b/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts index 4a0e253912..719341a286 100644 --- a/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts +++ b/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.spec.ts @@ -26,14 +26,22 @@ describe('GridThumbnailComponent', () => { }); it('should display image', () => { - comp.thumbnail = new Bitstream(); - comp.thumbnail._links.content.href = 'test.url'; + const thumbnail = new Bitstream(); + thumbnail._links = { + self: { href: 'self.url' }, + bundle: { href: 'bundle.url' }, + format: { href: 'format.url' }, + content: { href: 'content.url' }, + }; + comp.thumbnail = thumbnail; fixture.detectChanges(); const image: HTMLElement = de.query(By.css('img')).nativeElement; expect(image.getAttribute('src')).toBe(comp.thumbnail._links.content.href); }); it('should display placeholder', () => { + const thumbnail = new Bitstream(); + comp.thumbnail = thumbnail; fixture.detectChanges(); const image: HTMLElement = de.query(By.css('img')).nativeElement; expect(image.getAttribute('src')).toBe(comp.defaultImage); diff --git a/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.ts b/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.ts index 2c8c29ec85..4622483f2f 100644 --- a/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.ts +++ b/src/app/shared/object-grid/grid-thumbnail/grid-thumbnail.component.ts @@ -30,7 +30,7 @@ export class GridThumbnailComponent implements OnInit { } ngOnInit(): void { - if (hasValue(this.thumbnail) && this.thumbnail._links.content.href) { + if (hasValue(this.thumbnail) && hasValue(this.thumbnail._links) && this.thumbnail._links.content.href) { this.src = this.thumbnail._links.content.href; } else { this.src = this.defaultImage diff --git a/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.spec.ts b/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.spec.ts index 567b2e1d0e..8ca58384e8 100644 --- a/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.spec.ts +++ b/src/app/shared/object-grid/search-result-grid-element/community-search-result/community-search-result-grid-element.component.spec.ts @@ -1,12 +1,23 @@ -import { CommunitySearchResultGridElementComponent } from './community-search-result-grid-element.component'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { of as observableOf } from 'rxjs'; +import { HttpClient } from '@angular/common/http'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; -import { TruncatePipe } from '../../../utils/truncate.pipe'; +import { Store } from '@ngrx/store'; +import { of as observableOf } from 'rxjs'; +import { NormalizedObjectBuildService } from '../../../../core/cache/builders/normalized-object-build.service'; +import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; +import { CommunityDataService } from '../../../../core/data/community-data.service'; +import { DefaultChangeAnalyzer } from '../../../../core/data/default-change-analyzer.service'; +import { DSOChangeAnalyzer } from '../../../../core/data/dso-change-analyzer.service'; import { Community } from '../../../../core/shared/community.model'; -import { TruncatableService } from '../../../truncatable/truncatable.service'; +import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service'; +import { UUIDService } from '../../../../core/shared/uuid.service'; +import { NotificationsService } from '../../../notifications/notifications.service'; import { CommunitySearchResult } from '../../../object-collection/shared/community-search-result.model'; +import { TruncatableService } from '../../../truncatable/truncatable.service'; +import { TruncatePipe } from '../../../utils/truncate.pipe'; +import { CommunitySearchResultGridElementComponent } from './community-search-result-grid-element.component'; let communitySearchResultGridElementComponent: CommunitySearchResultGridElementComponent; let fixture: ComponentFixture; @@ -47,7 +58,18 @@ describe('CommunitySearchResultGridElementComponent', () => { declarations: [ CommunitySearchResultGridElementComponent, TruncatePipe ], providers: [ { provide: TruncatableService, useValue: truncatableServiceStub }, - { provide: 'objectElementProvider', useValue: (mockCommunityWithAbstract) } + { provide: 'objectElementProvider', useValue: (mockCommunityWithAbstract) }, + { provide: ObjectCacheService, useValue: {} }, + { provide: UUIDService, useValue: {} }, + { provide: Store, useValue: {} }, + { provide: RemoteDataBuildService, useValue: {} }, + { provide: NormalizedObjectBuildService, useValue: {} }, + { provide: CommunityDataService, useValue: {} }, + { provide: HALEndpointService, useValue: {} }, + { provide: NotificationsService, useValue: {} }, + { provide: HttpClient, useValue: {} }, + { provide: DSOChangeAnalyzer, useValue: {} }, + { provide: DefaultChangeAnalyzer, useValue: {} }, ], schemas: [ NO_ERRORS_SCHEMA ] diff --git a/src/app/thumbnail/thumbnail.component.spec.ts b/src/app/thumbnail/thumbnail.component.spec.ts index 412185436b..c76cd06b1b 100644 --- a/src/app/thumbnail/thumbnail.component.spec.ts +++ b/src/app/thumbnail/thumbnail.component.spec.ts @@ -26,14 +26,22 @@ describe('ThumbnailComponent', () => { }); it('should display image', () => { - comp.thumbnail = new Bitstream(); - comp.thumbnail._links.content.href = 'test.url'; + const thumbnail = new Bitstream(); + thumbnail._links = { + self: { href: 'self.url' }, + bundle: { href: 'bundle.url' }, + format: { href: 'format.url' }, + content: { href: 'content.url' }, + }; + comp.thumbnail = thumbnail; fixture.detectChanges(); const image: HTMLElement = de.query(By.css('img')).nativeElement; expect(image.getAttribute('src')).toBe(comp.thumbnail._links.content.href); }); it('should display placeholder', () => { + const thumbnail = new Bitstream(); + comp.thumbnail = thumbnail; fixture.detectChanges(); const image: HTMLElement = de.query(By.css('img')).nativeElement; expect(image.getAttribute('src')).toBe(comp.defaultImage); diff --git a/src/app/thumbnail/thumbnail.component.ts b/src/app/thumbnail/thumbnail.component.ts index 73278c7c79..b79d5235e1 100644 --- a/src/app/thumbnail/thumbnail.component.ts +++ b/src/app/thumbnail/thumbnail.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { Bitstream } from '../core/shared/bitstream.model'; import { hasValue } from '../shared/empty.util'; @@ -23,7 +23,7 @@ export class ThumbnailComponent { @Input() set thumbnail(t: Bitstream) { this._thumbnail = t; - if (hasValue(this.thumbnail) && hasValue(this.thumbnail._links.content) && this.thumbnail._links.content.href) { + if (hasValue(this.thumbnail) && hasValue(this.thumbnail._links) && hasValue(this.thumbnail._links.content) && this.thumbnail._links.content.href) { this.src = this.thumbnail._links.content.href; } else { this.src = this.defaultImage