68405: More test fixes

This commit is contained in:
Marie Verdonck
2020-01-30 19:18:56 +01:00
committed by Art Lowel
parent fb153b7b13
commit be0158fc9c
15 changed files with 395 additions and 221 deletions

View File

@@ -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 { CommonModule } from '@angular/common';
import { RouterTestingModule } from '@angular/router/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { RouteService } from '../../core/services/route.service'; import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SharedModule } from '../../shared/shared.module'; import { ActivatedRoute } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';
import { TranslateModule } from '@ngx-translate/core';
import { of as observableOf } from 'rxjs'; 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 { 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', () => { describe('DeleteCommunityPageComponent', () => {
let comp: DeleteCommunityPageComponent; let comp: DeleteCommunityPageComponent;

View File

@@ -1,23 +1,22 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CUSTOM_ELEMENTS_SCHEMA, DebugElement } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, DebugElement } from '@angular/core';
import { EditInPlaceFieldComponent } from './edit-in-place-field.component'; import { async, ComponentFixture, TestBed } from '@angular/core/testing';
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 { FormsModule } from '@angular/forms'; 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 { getTestScheduler } from 'jasmine-marbles';
import { of as observableOf } from 'rxjs';
import { TestScheduler } from 'rxjs/testing'; import { TestScheduler } from 'rxjs/testing';
import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions'; import { FieldChangeType } from '../../../../core/data/object-updates/object-updates.actions';
import { TranslateModule } from '@ngx-translate/core'; import { ObjectUpdatesService } from '../../../../core/data/object-updates/object-updates.service';
import { MetadatumViewModel } from '../../../../core/shared/metadata.models'; import { PaginatedList } from '../../../../core/data/paginated-list';
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
import { MetadataField } from '../../../../core/metadata/metadata-field.model'; 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 { 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 comp: EditInPlaceFieldComponent;
let fixture: ComponentFixture<EditInPlaceFieldComponent>; let fixture: ComponentFixture<EditInPlaceFieldComponent>;

View File

@@ -1,3 +1,4 @@
// TODO Fix on complete test run
import * as deepFreeze from 'deep-freeze'; import * as deepFreeze from 'deep-freeze';
import { RestResponse } from '../cache/response.models'; import { RestResponse } from '../cache/response.models';
import { import {
@@ -38,12 +39,12 @@ describe('requestReducer', () => {
deepFreeze(testState); deepFreeze(testState);
// TODO Fix // TODO Fix
// it('should return the current state when no valid actions have been made', () => { it('should return the current state when no valid actions have been made', () => {
// const action = new NullAction(); const action = new NullAction();
// const newState = requestReducer(testState, action); const newState = requestReducer(testState, action);
//
// expect(newState).toEqual(testState); expect(newState).toEqual(testState);
// }); });
it('should start with an empty state', () => { it('should start with an empty state', () => {
const action = new NullAction(); const action = new NullAction();

View File

@@ -1,7 +1,9 @@
// TODO Fix on complete test run
import * as ngrx from '@ngrx/store'; import * as ngrx from '@ngrx/store';
import { ActionsSubject, Store } from '@ngrx/store'; import { ActionsSubject, Store } from '@ngrx/store';
import { cold, getTestScheduler, hot } from 'jasmine-marbles'; import { cold, getTestScheduler, hot } from 'jasmine-marbles';
import { BehaviorSubject, EMPTY, of as observableOf } from 'rxjs'; import { BehaviorSubject, EMPTY, of as observableOf } from 'rxjs';
import { TestScheduler } from 'rxjs/testing';
import { getMockObjectCacheService } from '../../shared/mocks/mock-object-cache.service'; import { getMockObjectCacheService } from '../../shared/mocks/mock-object-cache.service';
import { defaultUUID, getMockUUIDService } from '../../shared/mocks/mock-uuid.service'; import { defaultUUID, getMockUUIDService } from '../../shared/mocks/mock-uuid.service';
@@ -19,9 +21,8 @@ import {
PutRequest, PutRequest,
RestRequest RestRequest
} from './request.models'; } from './request.models';
import { RequestService } from './request.service';
import { TestScheduler } from 'rxjs/testing';
import { RequestEntry } from './request.reducer'; import { RequestEntry } from './request.reducer';
import { RequestService } from './request.service';
describe('RequestService', () => { describe('RequestService', () => {
let scheduler: TestScheduler; let scheduler: TestScheduler;

View File

@@ -1,19 +1,34 @@
import { HttpClient } from '@angular/common/http';
import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 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 { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; 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 { 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 comp: JournalComponent;
let fixture: ComponentFixture<JournalComponent>; let fixture: ComponentFixture<JournalComponent>;
@@ -43,6 +58,11 @@ const mockItem: Item = Object.assign(new Item(), {
}); });
describe('JournalComponent', () => { describe('JournalComponent', () => {
const mockBitstreamDataService = {
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
return createSuccessfulRemoteDataObject$(new Bitstream());
}
};
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot({ imports: [TranslateModule.forRoot({
@@ -53,14 +73,26 @@ describe('JournalComponent', () => {
})], })],
declarations: [JournalComponent, GenericItemPageFieldComponent, TruncatePipe], declarations: [JournalComponent, GenericItemPageFieldComponent, TruncatePipe],
providers: [ providers: [
{provide: ItemDataService, useValue: {}}, { provide: ItemDataService, useValue: {} },
{provide: TruncatableService, useValue: {}}, { provide: TruncatableService, useValue: {} },
{provide: RelationshipService, 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] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalComponent, { }).overrideComponent(JournalComponent, {
set: {changeDetection: ChangeDetectionStrategy.Default} set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -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 { import {
createRelationshipsObservable, createRelationshipsObservable,
getItemPageFieldsTest getItemPageFieldsTest
} from '../../../../+item-page/simple/item-types/shared/item.component.spec'; } 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 { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
import { ProjectComponent } from './project.component';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bundles: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])), bundles: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),

View File

@@ -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 { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; 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 { 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 { 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 { 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 personListElementComponent: OrgUnitSearchResultListSubmissionElementComponent;
let fixture: ComponentFixture<OrgUnitSearchResultListSubmissionElementComponent>; let fixture: ComponentFixture<OrgUnitSearchResultListSubmissionElementComponent>;
@@ -79,6 +92,11 @@ function init() {
describe('OrgUnitSearchResultListSubmissionElementComponent', () => { describe('OrgUnitSearchResultListSubmissionElementComponent', () => {
beforeEach(async(() => { beforeEach(async(() => {
init(); init();
const mockBitstreamDataService = {
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
return createSuccessfulRemoteDataObject$(new Bitstream());
}
};
TestBed.configureTestingModule({ TestBed.configureTestingModule({
declarations: [OrgUnitSearchResultListSubmissionElementComponent, TruncatePipe], declarations: [OrgUnitSearchResultListSubmissionElementComponent, TruncatePipe],
providers: [ providers: [
@@ -89,7 +107,17 @@ describe('OrgUnitSearchResultListSubmissionElementComponent', () => {
{ provide: NgbModal, useValue: {} }, { provide: NgbModal, useValue: {} },
{ provide: ItemDataService, useValue: {} }, { provide: ItemDataService, useValue: {} },
{ provide: SelectableListService, 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] schemas: [NO_ERRORS_SCHEMA]

View File

@@ -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 { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; 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 { 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 { 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 { 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 personListElementComponent: PersonSearchResultListSubmissionElementComponent;
let fixture: ComponentFixture<PersonSearchResultListSubmissionElementComponent>; let fixture: ComponentFixture<PersonSearchResultListSubmissionElementComponent>;
@@ -71,6 +84,11 @@ function init() {
} }
describe('PersonSearchResultListElementSubmissionComponent', () => { describe('PersonSearchResultListElementSubmissionComponent', () => {
const mockBitstreamDataService = {
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
return createSuccessfulRemoteDataObject$(new Bitstream());
}
};
beforeEach(async(() => { beforeEach(async(() => {
init(); init();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
@@ -83,7 +101,17 @@ describe('PersonSearchResultListElementSubmissionComponent', () => {
{ provide: NgbModal, useValue: {} }, { provide: NgbModal, useValue: {} },
{ provide: ItemDataService, useValue: {} }, { provide: ItemDataService, useValue: {} },
{ provide: SelectableListService, 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] schemas: [NO_ERRORS_SCHEMA]

View File

@@ -1,15 +1,16 @@
import { SubmissionObjectState } from '../../submission/objects/submission-objects.reducer';
import { SubmissionDefinitionsModel } from '../../core/config/models/config-submission-definitions.model'; import { SubmissionDefinitionsModel } from '../../core/config/models/config-submission-definitions.model';
import { PaginatedList } from '../../core/data/paginated-list'; 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 { 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 = { export const mockSectionsData = {
traditionalpageone:{ traditionalpageone: {
'dc.title': [ 'dc.title': [
new FormFieldMetadataValueObject('test', null, null, 'test' ) new FormFieldMetadataValueObject('test', null, null, 'test')
]}, ]
},
license: { license: {
url: null, url: null,
acceptanceDate: null, acceptanceDate: null,
@@ -21,14 +22,16 @@ export const mockSectionsData = {
}; };
export const mockSectionsDataTwo = { export const mockSectionsDataTwo = {
traditionalpageone:{ traditionalpageone: {
'dc.title': [ 'dc.title': [
new FormFieldMetadataValueObject('test', null, null, 'test' ) new FormFieldMetadataValueObject('test', null, null, 'test')
]}, ]
traditionalpagetwo:{ },
traditionalpagetwo: {
'dc.relation': [ 'dc.relation': [
new FormFieldMetadataValueObject('test', null, null, 'test' ) new FormFieldMetadataValueObject('test', null, null, 'test')
]}, ]
},
license: { license: {
url: null, url: null,
acceptanceDate: null, acceptanceDate: null,
@@ -68,14 +71,14 @@ export const mockUploadResponse1Errors = {
] ]
}; };
export const mockUploadResponse1ParsedErrors: any = { export const mockUploadResponse1ParsedErrors: any = {
traditionalpageone: [ traditionalpageone: [
{ path: '/sections/traditionalpageone/dc.title', message: 'error.validation.required' }, { path: '/sections/traditionalpageone/dc.title', message: 'error.validation.required' },
{ path: '/sections/traditionalpageone/dc.date.issued', message: 'error.validation.required' } { path: '/sections/traditionalpageone/dc.date.issued', message: 'error.validation.required' }
] ]
}; };
export const mockLicenseParsedErrors: any = { export const mockLicenseParsedErrors: any = {
license: [ license: [
{ path: '/sections/license', message: 'error.validation.license.notgranted' } { path: '/sections/license', message: 'error.validation.license.notgranted' }
] ]
@@ -131,9 +134,9 @@ export const mockSubmissionRestResponse = [
name: null, name: null,
metadata: [], metadata: [],
_links: { _links: {
content: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content', content: { href: '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', format: { href: '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' self: { href: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425' }
} }
} }
], ],
@@ -180,10 +183,10 @@ export const mockSubmissionRestResponse = [
} }
], ],
_links: { _links: {
license: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/license', license: { href: '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', defaultAccessConditions: { href: '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', logo: { href: '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' 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, name: null,
metadata: [], metadata: [],
_links: { _links: {
bitstreams: 'https://rest.api/dspace-spring-rest/api/core/items/6f344222-6980-4738-8192-b808d79af8a5/bitstreams', bitstreams: { href: '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', owningCollection: { href: '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', templateItemOf: { href: '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' 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', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction'
}, },
@@ -236,7 +240,8 @@ export const mockSubmissionRestResponse = [
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection'
}, },
@@ -246,8 +251,8 @@ export const mockSubmissionRestResponse = [
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone'
}, },
@@ -257,8 +262,8 @@ export const mockSubmissionRestResponse = [
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo'
}, },
@@ -268,8 +273,8 @@ export const mockSubmissionRestResponse = [
sectionType: 'upload', sectionType: 'upload',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload'
}, },
@@ -283,7 +288,8 @@ export const mockSubmissionRestResponse = [
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license'
} }
@@ -291,9 +297,9 @@ export const mockSubmissionRestResponse = [
name: 'traditional', name: 'traditional',
type: 'submissiondefinition', type: 'submissiondefinition',
_links: { _links: {
collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' },
sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' }
}, },
self: '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', self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826',
type: 'workspaceitem', type: 'workspaceitem',
_links: { _links: {
collection: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection', collection: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection' },
item: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item', item: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item' },
submissionDefinition: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition', submissionDefinition: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition' },
submitter: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter', submitter: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter' },
self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' 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', self: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20',
type: 'resourcePolicy', type: 'resourcePolicy',
_links: { _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, name: null,
metadata: [], metadata: [],
_links: { _links: {
content: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content', content: { href: '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', format: { href: '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' 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', self: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb',
@@ -397,10 +403,10 @@ export const mockSubmissionObject = {
} }
], ],
_links: { _links: {
license: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb/license', license: { href: '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', defaultAccessConditions: { href: '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', logo: { href: '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' self: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/1c11f3f1-ba1f-4f36-908a-3f1ea9a557eb' }
} }
}, },
item: { item: {
@@ -426,10 +432,10 @@ export const mockSubmissionObject = {
name: null, name: null,
metadata: [], metadata: [],
_links: { _links: {
bitstreams: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/bitstreams', bitstreams: { href: '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', owningCollection: { href: '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', templateItemOf: { href: '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' self: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270' }
} }
}, },
submissionDefinition: { submissionDefinition: {
@@ -451,7 +457,8 @@ export const mockSubmissionObject = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection'
}, },
@@ -461,8 +468,8 @@ export const mockSubmissionObject = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone'
}, },
@@ -472,8 +479,8 @@ export const mockSubmissionObject = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo'
}, },
@@ -483,8 +490,8 @@ export const mockSubmissionObject = {
sectionType: 'upload', sectionType: 'upload',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload'
}, },
@@ -498,7 +505,8 @@ export const mockSubmissionObject = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license'
} }
@@ -507,9 +515,9 @@ export const mockSubmissionObject = {
name: 'traditional', name: 'traditional',
type: 'submissiondefinition', type: 'submissiondefinition',
_links: { _links: {
collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' },
sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional', self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional',
collections: { collections: {
@@ -549,7 +557,7 @@ export const mockSubmissionObject = {
} }
], ],
_links: { _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, id: 826,
@@ -576,11 +584,11 @@ export const mockSubmissionObject = {
self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826', self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826',
type: 'workspaceitem', type: 'workspaceitem',
_links: { _links: {
collection: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection', collection: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection' },
item: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item', item: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item' },
submissionDefinition: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition', submissionDefinition: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition' },
submitter: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter', submitter: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter' },
self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' 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', self: 'https://rest.api/dspace-spring-rest/api/authz/resourcePolicies/20',
type: 'resourcePolicy', type: 'resourcePolicy',
_links: { _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, name: null,
metadata: [], metadata: [],
_links: { _links: {
content: 'https://rest.api/dspace-spring-rest/api/core/bitstreams/3f859425-ffbd-4b0e-bf91-bfeb458a7425/content', content: { href: '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', format: { href: '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' 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', self: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb',
@@ -669,10 +677,10 @@ export const mockSubmissionObjectNew = {
} }
], ],
_links: { _links: {
license: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb/license', license: { href: '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', defaultAccessConditions: { href: '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', logo: { href: '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' self: { href: 'https://rest.api/dspace-spring-rest/api/core/collections/45f2f3f1-ba1f-4f36-908a-3f1ea9a557eb' }
} }
}, },
item: { item: {
@@ -698,10 +706,10 @@ export const mockSubmissionObjectNew = {
name: null, name: null,
metadata: [], metadata: [],
_links: { _links: {
bitstreams: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270/bitstreams', bitstreams: { href: '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', owningCollection: { href: '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', templateItemOf: { href: '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' self: { href: 'https://rest.api/dspace-spring-rest/api/core/items/cae8af78-c874-4468-af79-e6c996aa8270' }
} }
}, },
submissionDefinition: { submissionDefinition: {
@@ -723,7 +731,8 @@ export const mockSubmissionObjectNew = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection'
}, },
@@ -733,8 +742,8 @@ export const mockSubmissionObjectNew = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone'
}, },
@@ -744,8 +753,8 @@ export const mockSubmissionObjectNew = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo'
}, },
@@ -755,8 +764,8 @@ export const mockSubmissionObjectNew = {
sectionType: 'upload', sectionType: 'upload',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload'
}, },
@@ -770,7 +779,8 @@ export const mockSubmissionObjectNew = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license'
} }
@@ -779,9 +789,9 @@ export const mockSubmissionObjectNew = {
name: 'traditionaltwo', name: 'traditionaltwo',
type: 'submissiondefinition', type: 'submissiondefinition',
_links: { _links: {
collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' },
sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional', self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional',
collections: { collections: {
@@ -821,7 +831,7 @@ export const mockSubmissionObjectNew = {
} }
], ],
_links: { _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, id: 826,
@@ -831,11 +841,11 @@ export const mockSubmissionObjectNew = {
self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826', self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826',
type: 'workspaceitem', type: 'workspaceitem',
_links: { _links: {
collection: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection', collection: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/collection' },
item: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item', item: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/item' },
submissionDefinition: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition', submissionDefinition: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submissionDefinition' },
submitter: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter', submitter: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826/submitter' },
self: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' self: { href: 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826' }
} }
}; };
@@ -857,7 +867,8 @@ export const mockSubmissionDefinitionResponse = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction'
}, },
@@ -870,7 +881,8 @@ export const mockSubmissionDefinitionResponse = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection'
}, },
@@ -880,8 +892,8 @@ export const mockSubmissionDefinitionResponse = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone'
}, },
@@ -891,8 +903,8 @@ export const mockSubmissionDefinitionResponse = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo'
}, },
@@ -902,8 +914,8 @@ export const mockSubmissionDefinitionResponse = {
sectionType: 'upload', sectionType: 'upload',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload'
}, },
@@ -917,7 +929,8 @@ export const mockSubmissionDefinitionResponse = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license'
} }
@@ -925,16 +938,16 @@ export const mockSubmissionDefinitionResponse = {
name: 'traditional', name: 'traditional',
type: 'submissiondefinition', type: 'submissiondefinition',
_links: { _links: {
collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' },
sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional'
} as any; } as any;
export const mockSubmissionDefinition: SubmissionDefinitionsModel = { export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
isDefault: true, isDefault: true,
sections: new PaginatedList(new PageInfo(),[ sections: new PaginatedList(new PageInfo(), [
{ {
mandatory: true, mandatory: true,
sectionType: 'utils', sectionType: 'utils',
@@ -944,7 +957,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/extraction'
}, },
@@ -957,7 +971,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/collection'
}, },
@@ -967,8 +982,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpageone' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpageone'
}, },
@@ -978,8 +993,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
sectionType: 'submission-form', sectionType: 'submission-form',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/traditionalpagetwo' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/traditionalpagetwo'
}, },
@@ -989,8 +1004,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
sectionType: 'upload', sectionType: 'upload',
type: 'submissionsection', type: 'submissionsection',
_links: { _links: {
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload', self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' },
config: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' config: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/upload'
}, },
@@ -1004,7 +1019,8 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
}, },
type: 'submissionsection', type: 'submissionsection',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionsections/license'
} }
@@ -1012,9 +1028,9 @@ export const mockSubmissionDefinition: SubmissionDefinitionsModel = {
name: 'traditional', name: 'traditional',
type: 'submissiondefinition', type: 'submissiondefinition',
_links: { _links: {
collections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections', collections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/collections' },
sections: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections', sections: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional/sections' },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' }
}, },
self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional' self: 'https://rest.api/dspace-spring-rest/api/config/submissiondefinitions/traditional'
} as any; } as any;
@@ -1321,7 +1337,7 @@ export const mockUploadConfigResponse = {
name: 'bitstream-metadata', name: 'bitstream-metadata',
type: 'submissionform', type: 'submissionform',
_links: { _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' self: 'https://rest.api/dspace-spring-rest/api/config/submissionforms/bitstream-metadata'
}, },
@@ -1330,8 +1346,8 @@ export const mockUploadConfigResponse = {
name: 'upload', name: 'upload',
type: 'submissionupload', type: 'submissionupload',
_links: { _links: {
metadata: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload/metadata', metadata: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload/metadata' },
self: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' self: { href: 'https://rest.api/dspace-spring-rest/api/config/submissionuploads/upload' }
}, },
self: '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', name: 'Anonymous',
metadata: [], metadata: [],
_links: { _links: {
groups: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1/groups', groups: { href: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1/groups' },
self: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1' self: { href: 'https://rest.api/dspace-spring-rest/api/eperson/groups/123456-g1' }
}, },
groups: { groups: {
pageInfo: { pageInfo: {

View File

@@ -1,19 +1,34 @@
import { HttpClient } from '@angular/common/http';
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { Store } from '@ngrx/store';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { of as observableOf } from 'rxjs'; 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 { 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 { PaginatedList } from '../../../../core/data/paginated-list';
import { RemoteData } from '../../../../core/data/remote-data'; 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 { FileService } from '../../../../core/shared/file.service';
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 { PageInfo } from '../../../../core/shared/page-info.model'; import { PageInfo } from '../../../../core/shared/page-info.model';
import { UUIDService } from '../../../../core/shared/uuid.service';
import { MockTranslateLoader } from '../../../mocks/mock-translate-loader'; import { MockTranslateLoader } from '../../../mocks/mock-translate-loader';
import { NotificationsService } from '../../../notifications/notifications.service';
import { HALEndpointServiceStub } from '../../../testing/hal-endpoint-service-stub'; import { HALEndpointServiceStub } from '../../../testing/hal-endpoint-service-stub';
import { createSuccessfulRemoteDataObject$ } from '../../../testing/utils';
import { FileSizePipe } from '../../../utils/file-size-pipe'; import { FileSizePipe } from '../../../utils/file-size-pipe';
import { FollowLinkConfig } from '../../../utils/follow-link-config.model';
import { TruncatePipe } from '../../../utils/truncate.pipe'; import { TruncatePipe } from '../../../utils/truncate.pipe';
import { VarDirective } from '../../../utils/var.directive'; import { VarDirective } from '../../../utils/var.directive';
@@ -61,6 +76,14 @@ const mockItem: Item = Object.assign(new Item(), {
}); });
describe('ItemDetailPreviewComponent', () => { describe('ItemDetailPreviewComponent', () => {
const mockBitstreamDataService = {
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
return createSuccessfulRemoteDataObject$(new Bitstream());
},
findAllByItemAndBundleName(item: Item, bundleName: string, options?: FindListOptions, ...linksToFollow: Array<FollowLinkConfig<Bitstream>>): Observable<RemoteData<PaginatedList<Bitstream>>> {
return createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), []));
},
};
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
@@ -77,6 +100,17 @@ describe('ItemDetailPreviewComponent', () => {
{ provide: FileService, useValue: getMockFileService() }, { provide: FileService, useValue: getMockFileService() },
{ provide: HALEndpointService, useValue: new HALEndpointServiceStub('workspaceitems') }, { provide: HALEndpointService, useValue: new HALEndpointServiceStub('workspaceitems') },
{ provide: ObjectCacheService, useValue: {} }, { 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] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ItemDetailPreviewComponent, { }).overrideComponent(ItemDetailPreviewComponent, {

View File

@@ -26,14 +26,22 @@ describe('GridThumbnailComponent', () => {
}); });
it('should display image', () => { it('should display image', () => {
comp.thumbnail = new Bitstream(); const thumbnail = new Bitstream();
comp.thumbnail._links.content.href = 'test.url'; thumbnail._links = {
self: { href: 'self.url' },
bundle: { href: 'bundle.url' },
format: { href: 'format.url' },
content: { href: 'content.url' },
};
comp.thumbnail = thumbnail;
fixture.detectChanges(); fixture.detectChanges();
const image: HTMLElement = de.query(By.css('img')).nativeElement; const image: HTMLElement = de.query(By.css('img')).nativeElement;
expect(image.getAttribute('src')).toBe(comp.thumbnail._links.content.href); expect(image.getAttribute('src')).toBe(comp.thumbnail._links.content.href);
}); });
it('should display placeholder', () => { it('should display placeholder', () => {
const thumbnail = new Bitstream();
comp.thumbnail = thumbnail;
fixture.detectChanges(); fixture.detectChanges();
const image: HTMLElement = de.query(By.css('img')).nativeElement; const image: HTMLElement = de.query(By.css('img')).nativeElement;
expect(image.getAttribute('src')).toBe(comp.defaultImage); expect(image.getAttribute('src')).toBe(comp.defaultImage);

View File

@@ -30,7 +30,7 @@ export class GridThumbnailComponent implements OnInit {
} }
ngOnInit(): void { 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; this.src = this.thumbnail._links.content.href;
} else { } else {
this.src = this.defaultImage this.src = this.defaultImage

View File

@@ -1,12 +1,23 @@
import { CommunitySearchResultGridElementComponent } from './community-search-result-grid-element.component'; import { HttpClient } from '@angular/common/http';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { of as observableOf } from 'rxjs';
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; 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 { 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 { 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 communitySearchResultGridElementComponent: CommunitySearchResultGridElementComponent;
let fixture: ComponentFixture<CommunitySearchResultGridElementComponent>; let fixture: ComponentFixture<CommunitySearchResultGridElementComponent>;
@@ -47,7 +58,18 @@ describe('CommunitySearchResultGridElementComponent', () => {
declarations: [ CommunitySearchResultGridElementComponent, TruncatePipe ], declarations: [ CommunitySearchResultGridElementComponent, TruncatePipe ],
providers: [ providers: [
{ provide: TruncatableService, useValue: truncatableServiceStub }, { 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 ] schemas: [ NO_ERRORS_SCHEMA ]

View File

@@ -26,14 +26,22 @@ describe('ThumbnailComponent', () => {
}); });
it('should display image', () => { it('should display image', () => {
comp.thumbnail = new Bitstream(); const thumbnail = new Bitstream();
comp.thumbnail._links.content.href = 'test.url'; thumbnail._links = {
self: { href: 'self.url' },
bundle: { href: 'bundle.url' },
format: { href: 'format.url' },
content: { href: 'content.url' },
};
comp.thumbnail = thumbnail;
fixture.detectChanges(); fixture.detectChanges();
const image: HTMLElement = de.query(By.css('img')).nativeElement; const image: HTMLElement = de.query(By.css('img')).nativeElement;
expect(image.getAttribute('src')).toBe(comp.thumbnail._links.content.href); expect(image.getAttribute('src')).toBe(comp.thumbnail._links.content.href);
}); });
it('should display placeholder', () => { it('should display placeholder', () => {
const thumbnail = new Bitstream();
comp.thumbnail = thumbnail;
fixture.detectChanges(); fixture.detectChanges();
const image: HTMLElement = de.query(By.css('img')).nativeElement; const image: HTMLElement = de.query(By.css('img')).nativeElement;
expect(image.getAttribute('src')).toBe(comp.defaultImage); expect(image.getAttribute('src')).toBe(comp.defaultImage);

View File

@@ -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 { Bitstream } from '../core/shared/bitstream.model';
import { hasValue } from '../shared/empty.util'; import { hasValue } from '../shared/empty.util';
@@ -23,7 +23,7 @@ export class ThumbnailComponent {
@Input() set thumbnail(t: Bitstream) { @Input() set thumbnail(t: Bitstream) {
this._thumbnail = t; 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; this.src = this.thumbnail._links.content.href;
} else { } else {
this.src = this.defaultImage this.src = this.defaultImage