Simplified and refactored manual creation of remote data objects for tests

This commit is contained in:
lotte
2019-05-28 14:58:10 +02:00
parent 35f73708ef
commit 81ba49f220
83 changed files with 363 additions and 260 deletions

View File

@@ -13,6 +13,7 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { EnumKeysPipe } from '../../../shared/utils/enum-keys-pipe'; import { EnumKeysPipe } from '../../../shared/utils/enum-keys-pipe';
import { HostWindowService } from '../../../shared/host-window.service'; import { HostWindowService } from '../../../shared/host-window.service';
import { HostWindowServiceStub } from '../../../shared/testing/host-window-service-stub'; import { HostWindowServiceStub } from '../../../shared/testing/host-window-service-stub';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/testing/utils';
describe('BitstreamFormatsComponent', () => { describe('BitstreamFormatsComponent', () => {
let comp: BitstreamFormatsComponent; let comp: BitstreamFormatsComponent;
@@ -52,7 +53,7 @@ describe('BitstreamFormatsComponent', () => {
extensions: null extensions: null
} }
]; ];
const mockFormats = observableOf(new RemoteData(false, false, true, undefined, new PaginatedList(null, mockFormatsList))); const mockFormats = createSuccessfulRemoteDataObject$(new PaginatedList(null, mockFormatsList));
const registryServiceStub = { const registryServiceStub = {
getBitstreamFormats: () => mockFormats getBitstreamFormats: () => mockFormats
}; };

View File

@@ -17,6 +17,7 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { NotificationsService } from '../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service-stub'; import { NotificationsServiceStub } from '../../../shared/testing/notifications-service-stub';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/testing/utils';
describe('MetadataRegistryComponent', () => { describe('MetadataRegistryComponent', () => {
let comp: MetadataRegistryComponent; let comp: MetadataRegistryComponent;
@@ -36,7 +37,7 @@ describe('MetadataRegistryComponent', () => {
namespace: 'http://dspace.org/mockschema' namespace: 'http://dspace.org/mockschema'
} }
]; ];
const mockSchemas = observableOf(new RemoteData(false, false, true, undefined, new PaginatedList(null, mockSchemasList))); const mockSchemas = createSuccessfulRemoteDataObject$(new PaginatedList(null, mockSchemasList));
/* tslint:disable:no-empty */ /* tslint:disable:no-empty */
const registryServiceStub = { const registryServiceStub = {
getMetadataSchemas: () => mockSchemas, getMetadataSchemas: () => mockSchemas,

View File

@@ -21,6 +21,7 @@ import { NotificationsService } from '../../../shared/notifications/notification
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service-stub'; import { NotificationsServiceStub } from '../../../shared/testing/notifications-service-stub';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model'; import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/testing/utils';
describe('MetadataSchemaComponent', () => { describe('MetadataSchemaComponent', () => {
let comp: MetadataSchemaComponent; let comp: MetadataSchemaComponent;
@@ -74,12 +75,12 @@ describe('MetadataSchemaComponent', () => {
schema: mockSchemasList[1] schema: mockSchemasList[1]
} }
]; ];
const mockSchemas = observableOf(new RemoteData(false, false, true, undefined, new PaginatedList(null, mockSchemasList))); const mockSchemas = createSuccessfulRemoteDataObject$(new PaginatedList(null, mockSchemasList));
/* tslint:disable:no-empty */ /* tslint:disable:no-empty */
const registryServiceStub = { const registryServiceStub = {
getMetadataSchemas: () => mockSchemas, getMetadataSchemas: () => mockSchemas,
getMetadataFieldsBySchema: (schema: MetadataSchema) => observableOf(new RemoteData(false, false, true, undefined, new PaginatedList(null, mockFieldsList.filter((value) => value.schema === schema)))), getMetadataFieldsBySchema: (schema: MetadataSchema) => createSuccessfulRemoteDataObject$(new PaginatedList(null, mockFieldsList.filter((value) => value.schema === schema))),
getMetadataSchemaByName: (schemaName: string) => observableOf(new RemoteData(false, false, true, undefined, mockSchemasList.filter((value) => value.prefix === schemaName)[0])), getMetadataSchemaByName: (schemaName: string) => createSuccessfulRemoteDataObject$(mockSchemasList.filter((value) => value.prefix === schemaName)[0]),
getActiveMetadataField: () => observableOf(undefined), getActiveMetadataField: () => observableOf(undefined),
getSelectedMetadataFields: () => observableOf([]), getSelectedMetadataFields: () => observableOf([]),
editMetadataField: (schema) => {}, editMetadataField: (schema) => {},

View File

@@ -18,6 +18,7 @@ import { Item } from '../../core/shared/item.model';
import { ENV_CONFIG, GLOBAL_CONFIG } from '../../../config'; import { ENV_CONFIG, GLOBAL_CONFIG } from '../../../config';
import { BrowseEntrySearchOptions } from '../../core/browse/browse-entry-search-options.model'; import { BrowseEntrySearchOptions } from '../../core/browse/browse-entry-search-options.model';
import { toRemoteData } from '../+browse-by-metadata-page/browse-by-metadata-page.component.spec'; import { toRemoteData } from '../+browse-by-metadata-page/browse-by-metadata-page.component.spec';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
describe('BrowseByDatePageComponent', () => { describe('BrowseByDatePageComponent', () => {
let comp: BrowseByDatePageComponent; let comp: BrowseByDatePageComponent;
@@ -48,11 +49,11 @@ describe('BrowseByDatePageComponent', () => {
const mockBrowseService = { const mockBrowseService = {
getBrowseEntriesFor: (options: BrowseEntrySearchOptions) => toRemoteData([]), getBrowseEntriesFor: (options: BrowseEntrySearchOptions) => toRemoteData([]),
getBrowseItemsFor: (value: string, options: BrowseEntrySearchOptions) => toRemoteData([firstItem]), getBrowseItemsFor: (value: string, options: BrowseEntrySearchOptions) => toRemoteData([firstItem]),
getFirstItemFor: () => observableOf(new RemoteData(false, false, true, undefined, firstItem)) getFirstItemFor: () => createSuccessfulRemoteDataObject$(firstItem)
}; };
const mockDsoService = { const mockDsoService = {
findById: () => observableOf(new RemoteData(false, false, true, null, mockCommunity)) findById: () => createSuccessfulRemoteDataObject$(mockCommunity)
}; };
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), { const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {

View File

@@ -21,6 +21,7 @@ import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.serv
import { Community } from '../../core/shared/community.model'; import { Community } from '../../core/shared/community.model';
import { MockRouter } from '../../shared/mocks/mock-router'; import { MockRouter } from '../../shared/mocks/mock-router';
import { ResourceType } from '../../core/shared/resource-type'; import { ResourceType } from '../../core/shared/resource-type';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
describe('BrowseByMetadataPageComponent', () => { describe('BrowseByMetadataPageComponent', () => {
let comp: BrowseByMetadataPageComponent; let comp: BrowseByMetadataPageComponent;
@@ -74,7 +75,7 @@ describe('BrowseByMetadataPageComponent', () => {
}; };
const mockDsoService = { const mockDsoService = {
findById: () => observableOf(new RemoteData(false, false, true, null, mockCommunity)) findById: () => createSuccessfulRemoteDataObject$(mockCommunity)
}; };
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), { const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {
@@ -155,5 +156,5 @@ describe('BrowseByMetadataPageComponent', () => {
}); });
export function toRemoteData(objects: any[]): Observable<RemoteData<PaginatedList<any>>> { export function toRemoteData(objects: any[]): Observable<RemoteData<PaginatedList<any>>> {
return observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), objects))); return createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), objects));
} }

View File

@@ -17,6 +17,7 @@ import { RemoteData } from '../../core/data/remote-data';
import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service'; import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service';
import { BrowseService } from '../../core/browse/browse.service'; import { BrowseService } from '../../core/browse/browse.service';
import { MockRouter } from '../../shared/mocks/mock-router'; import { MockRouter } from '../../shared/mocks/mock-router';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
describe('BrowseByTitlePageComponent', () => { describe('BrowseByTitlePageComponent', () => {
let comp: BrowseByTitlePageComponent; let comp: BrowseByTitlePageComponent;
@@ -52,7 +53,7 @@ describe('BrowseByTitlePageComponent', () => {
}; };
const mockDsoService = { const mockDsoService = {
findById: () => observableOf(new RemoteData(false, false, true, null, mockCommunity)) findById: () => createSuccessfulRemoteDataObject$(mockCommunity)
}; };
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), { const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {

View File

@@ -1,9 +1,11 @@
import { CreateCollectionPageGuard } from './create-collection-page.guard'; import { CreateCollectionPageGuard } from './create-collection-page.guard';
import { MockRouter } from '../../shared/mocks/mock-router'; import { MockRouter } from '../../shared/mocks/mock-router';
import { RemoteData } from '../../core/data/remote-data';
import { Community } from '../../core/shared/community.model'; import { Community } from '../../core/shared/community.model';
import { of as observableOf } from 'rxjs';
import { first } from 'rxjs/operators'; import { first } from 'rxjs/operators';
import {
createFailedRemoteDataObject$,
createSuccessfulRemoteDataObject$
} from '../../shared/testing/utils';
describe('CreateCollectionPageGuard', () => { describe('CreateCollectionPageGuard', () => {
describe('canActivate', () => { describe('canActivate', () => {
@@ -15,11 +17,11 @@ describe('CreateCollectionPageGuard', () => {
communityDataServiceStub = { communityDataServiceStub = {
findById: (id: string) => { findById: (id: string) => {
if (id === 'valid-id') { if (id === 'valid-id') {
return observableOf(new RemoteData(false, false, true, null, new Community())); return createSuccessfulRemoteDataObject$(new Community());
} else if (id === 'invalid-id') { } else if (id === 'invalid-id') {
return observableOf(new RemoteData(false, false, true, null, undefined)); return createSuccessfulRemoteDataObject$(undefined);
} else if (id === 'error-id') { } else if (id === 'error-id') {
return observableOf(new RemoteData(false, false, false, null, new Community())); return createFailedRemoteDataObject$(new Community());
} }
} }
}; };

View File

@@ -1,9 +1,11 @@
import { CreateCommunityPageGuard } from './create-community-page.guard'; import { CreateCommunityPageGuard } from './create-community-page.guard';
import { MockRouter } from '../../shared/mocks/mock-router'; import { MockRouter } from '../../shared/mocks/mock-router';
import { RemoteData } from '../../core/data/remote-data';
import { Community } from '../../core/shared/community.model'; import { Community } from '../../core/shared/community.model';
import { of as observableOf } from 'rxjs';
import { first } from 'rxjs/operators'; import { first } from 'rxjs/operators';
import {
createFailedRemoteDataObject$,
createSuccessfulRemoteDataObject$
} from '../../shared/testing/utils';
describe('CreateCommunityPageGuard', () => { describe('CreateCommunityPageGuard', () => {
describe('canActivate', () => { describe('canActivate', () => {
@@ -15,11 +17,11 @@ describe('CreateCommunityPageGuard', () => {
communityDataServiceStub = { communityDataServiceStub = {
findById: (id: string) => { findById: (id: string) => {
if (id === 'valid-id') { if (id === 'valid-id') {
return observableOf(new RemoteData(false, false, true, null, new Community())); return createSuccessfulRemoteDataObject$(new Community());
} else if (id === 'invalid-id') { } else if (id === 'invalid-id') {
return observableOf(new RemoteData(false, false, true, null, undefined)); return createSuccessfulRemoteDataObject$(undefined);
} else if (id === 'error-id') { } else if (id === 'error-id') {
return observableOf(new RemoteData(false, false, false, null, new Community())); return createFailedRemoteDataObject$(new Community());
} }
} }
}; };

View File

@@ -11,6 +11,7 @@ import {RouterTestingModule} from '@angular/router/testing';
import {NoopAnimationsModule} from '@angular/platform-browser/animations'; import {NoopAnimationsModule} from '@angular/platform-browser/animations';
import {By} from '@angular/platform-browser'; import {By} from '@angular/platform-browser';
import {of as observableOf, Observable } from 'rxjs'; import {of as observableOf, Observable } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
describe('SubCommunityList Component', () => { describe('SubCommunityList Component', () => {
let comp: CommunityPageSubCommunityListComponent; let comp: CommunityPageSubCommunityListComponent;
@@ -40,8 +41,7 @@ describe('SubCommunityList Component', () => {
{ language: 'en_US', value: 'Test title' } { language: 'en_US', value: 'Test title' }
] ]
}, },
subcommunities: observableOf(new RemoteData(true, true, true, subcommunities: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), []))
undefined, new PaginatedList(new PageInfo(), [])))
}); });
const mockCommunity = Object.assign(new Community(), { const mockCommunity = Object.assign(new Community(), {
@@ -50,8 +50,7 @@ describe('SubCommunityList Component', () => {
{ language: 'en_US', value: 'Test title' } { language: 'en_US', value: 'Test title' }
] ]
}, },
subcommunities: observableOf(new RemoteData(true, true, true, subcommunities: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), subcommunities))
undefined, new PaginatedList(new PageInfo(), subcommunities)))
}) })
; ;

View File

@@ -2,6 +2,10 @@ import {RemoteData} from '../../core/data/remote-data';
import {hot} from 'jasmine-marbles'; import {hot} from 'jasmine-marbles';
import {Item} from '../../core/shared/item.model'; import {Item} from '../../core/shared/item.model';
import {findSuccessfulAccordingTo} from './edit-item-operators'; import {findSuccessfulAccordingTo} from './edit-item-operators';
import {
createFailedRemoteDataObject,
createSuccessfulRemoteDataObject
} from '../../shared/testing/utils';
describe('findSuccessfulAccordingTo', () => { describe('findSuccessfulAccordingTo', () => {
let mockItem1; let mockItem1;
@@ -19,11 +23,11 @@ describe('findSuccessfulAccordingTo', () => {
}); });
it('should return first successful RemoteData Observable that complies to predicate', () => { it('should return first successful RemoteData Observable that complies to predicate', () => {
const testRD = { const testRD = {
a: new RemoteData(false, false, true, null, undefined), a: createSuccessfulRemoteDataObject(undefined),
b: new RemoteData(false, false, false, null, mockItem1), b: createFailedRemoteDataObject(mockItem1),
c: new RemoteData(false, false, true, null, mockItem2), c: createSuccessfulRemoteDataObject(mockItem2),
d: new RemoteData(false, false, true, null, mockItem1), d: createSuccessfulRemoteDataObject(mockItem1),
e: new RemoteData(false, false, true, null, mockItem2), e: createSuccessfulRemoteDataObject(mockItem2),
}; };
const source = hot('abcde', testRD); const source = hot('abcde', testRD);

View File

@@ -17,6 +17,7 @@ import { By } from '@angular/platform-browser';
import { ItemDeleteComponent } from './item-delete.component'; import { ItemDeleteComponent } from './item-delete.component';
import { getItemEditPath } from '../../item-page-routing.module'; import { getItemEditPath } from '../../item-page-routing.module';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import { createSuccessfulRemoteDataObject } from '../../../shared/testing/utils';
let comp: ItemDeleteComponent; let comp: ItemDeleteComponent;
let fixture: ComponentFixture<ItemDeleteComponent>; let fixture: ComponentFixture<ItemDeleteComponent>;
@@ -49,7 +50,7 @@ describe('ItemDeleteComponent', () => {
routeStub = { routeStub = {
data: observableOf({ data: observableOf({
item: new RemoteData(false, false, true, null, mockItem) item: createSuccessfulRemoteDataObject(mockItem)
}) })
}; };

View File

@@ -17,6 +17,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { MetadatumViewModel } from '../../../../core/shared/metadata.models'; import { MetadatumViewModel } from '../../../../core/shared/metadata.models';
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'; 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';
let comp: EditInPlaceFieldComponent; let comp: EditInPlaceFieldComponent;
let fixture: ComponentFixture<EditInPlaceFieldComponent>; let fixture: ComponentFixture<EditInPlaceFieldComponent>;
@@ -59,7 +60,7 @@ describe('EditInPlaceFieldComponent', () => {
paginatedMetadataFields = new PaginatedList(undefined, [mdField1, mdField2, mdField3]); paginatedMetadataFields = new PaginatedList(undefined, [mdField1, mdField2, mdField3]);
metadataFieldService = jasmine.createSpyObj({ metadataFieldService = jasmine.createSpyObj({
queryMetadataFields: observableOf(new RemoteData(false, false, true, undefined, paginatedMetadataFields)), queryMetadataFields: createSuccessfulRemoteDataObject$(paginatedMetadataFields),
}); });
objectUpdatesService = jasmine.createSpyObj('objectUpdatesService', objectUpdatesService = jasmine.createSpyObj('objectUpdatesService',
{ {

View File

@@ -20,13 +20,16 @@ import { RouterStub } from '../../../shared/testing/router-stub';
import { GLOBAL_CONFIG } from '../../../../config'; import { GLOBAL_CONFIG } from '../../../../config';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { FieldChangeType } from '../../../core/data/object-updates/object-updates.actions'; import { FieldChangeType } from '../../../core/data/object-updates/object-updates.actions';
import { RemoteData } from '../../../core/data/remote-data';
import { MetadatumViewModel } from '../../../core/shared/metadata.models'; import { MetadatumViewModel } from '../../../core/shared/metadata.models';
import { RegistryService } from '../../../core/registry/registry.service'; import { RegistryService } from '../../../core/registry/registry.service';
import { PaginatedList } from '../../../core/data/paginated-list'; import { PaginatedList } from '../../../core/data/paginated-list';
import { Metadata } from '../../../core/shared/metadata.utils'; import { Metadata } from '../../../core/shared/metadata.utils';
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model'; 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,
createSuccessfulRemoteDataObject$
} from '../../../shared/testing/utils';
let comp: ItemMetadataComponent; let comp: ItemMetadataComponent;
let fixture: ComponentFixture<ItemMetadataComponent>; let fixture: ComponentFixture<ItemMetadataComponent>;
@@ -116,18 +119,18 @@ describe('ItemMetadataComponent', () => {
) )
; ;
itemService = jasmine.createSpyObj('itemService', { itemService = jasmine.createSpyObj('itemService', {
update: observableOf(new RemoteData(false, false, true, undefined, item)), update: createSuccessfulRemoteDataObject$(item),
commitUpdates: {} commitUpdates: {}
}); });
routeStub = { routeStub = {
parent: { parent: {
data: observableOf({ item: new RemoteData(false, false, true, null, item) }) data: observableOf({ item: createSuccessfulRemoteDataObject(item) })
} }
}; };
paginatedMetadataFields = new PaginatedList(undefined, [mdField1, mdField2, mdField3]); paginatedMetadataFields = new PaginatedList(undefined, [mdField1, mdField2, mdField3]);
metadataFieldService = jasmine.createSpyObj({ metadataFieldService = jasmine.createSpyObj({
getAllMetadataFields: observableOf(new RemoteData(false, false, true, undefined, paginatedMetadataFields)) getAllMetadataFields:createSuccessfulRemoteDataObject$(paginatedMetadataFields)
}); });
scheduler = getTestScheduler(); scheduler = getTestScheduler();
objectUpdatesService = jasmine.createSpyObj('objectUpdatesService', objectUpdatesService = jasmine.createSpyObj('objectUpdatesService',

View File

@@ -16,6 +16,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { ItemPrivateComponent } from './item-private.component'; import { ItemPrivateComponent } from './item-private.component';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import { createSuccessfulRemoteDataObject } from '../../../shared/testing/utils';
let comp: ItemPrivateComponent; let comp: ItemPrivateComponent;
let fixture: ComponentFixture<ItemPrivateComponent>; let fixture: ComponentFixture<ItemPrivateComponent>;
@@ -50,7 +51,7 @@ describe('ItemPrivateComponent', () => {
routeStub = { routeStub = {
data: observableOf({ data: observableOf({
item: new RemoteData(false, false, true, null, { item: createSuccessfulRemoteDataObject({
id: 'fake-id' id: 'fake-id'
}) })
}) })

View File

@@ -16,6 +16,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { ItemPublicComponent } from './item-public.component'; import { ItemPublicComponent } from './item-public.component';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import { createSuccessfulRemoteDataObject } from '../../../shared/testing/utils';
let comp: ItemPublicComponent; let comp: ItemPublicComponent;
let fixture: ComponentFixture<ItemPublicComponent>; let fixture: ComponentFixture<ItemPublicComponent>;
@@ -50,7 +51,7 @@ describe('ItemPublicComponent', () => {
routeStub = { routeStub = {
data: observableOf({ data: observableOf({
item: new RemoteData(false, false, true, null, { item: createSuccessfulRemoteDataObject({
id: 'fake-id' id: 'fake-id'
}) })
}) })

View File

@@ -16,6 +16,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { ItemReinstateComponent } from './item-reinstate.component'; import { ItemReinstateComponent } from './item-reinstate.component';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import { createSuccessfulRemoteDataObject } from '../../../shared/testing/utils';
let comp: ItemReinstateComponent; let comp: ItemReinstateComponent;
let fixture: ComponentFixture<ItemReinstateComponent>; let fixture: ComponentFixture<ItemReinstateComponent>;
@@ -50,7 +51,7 @@ describe('ItemReinstateComponent', () => {
routeStub = { routeStub = {
data: observableOf({ data: observableOf({
item: new RemoteData(false, false, true, null, { item: createSuccessfulRemoteDataObject({
id: 'fake-id' id: 'fake-id'
}) })
}) })

View File

@@ -12,6 +12,7 @@ import { By } from '@angular/platform-browser';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { RemoteData } from '../../../core/data/remote-data'; import { RemoteData } from '../../../core/data/remote-data';
import { createSuccessfulRemoteDataObject } from '../../../shared/testing/utils';
describe('ItemStatusComponent', () => { describe('ItemStatusComponent', () => {
let comp: ItemStatusComponent; let comp: ItemStatusComponent;
@@ -27,7 +28,7 @@ describe('ItemStatusComponent', () => {
const routeStub = { const routeStub = {
parent: { parent: {
data: observableOf({ item: new RemoteData(false, false, true, null, mockItem) }) data: observableOf({ item: createSuccessfulRemoteDataObject(mockItem) })
} }
}; };

View File

@@ -16,6 +16,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ItemWithdrawComponent } from './item-withdraw.component'; import { ItemWithdrawComponent } from './item-withdraw.component';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import { createSuccessfulRemoteDataObject } from '../../../shared/testing/utils';
let comp: ItemWithdrawComponent; let comp: ItemWithdrawComponent;
let fixture: ComponentFixture<ItemWithdrawComponent>; let fixture: ComponentFixture<ItemWithdrawComponent>;
@@ -50,7 +51,7 @@ describe('ItemWithdrawComponent', () => {
routeStub = { routeStub = {
data: observableOf({ data: observableOf({
item: new RemoteData(false, false, true, null, { item: createSuccessfulRemoteDataObject({
id: 'fake-id' id: 'fake-id'
}) })
}) })

View File

@@ -17,6 +17,10 @@ import { By } from '@angular/platform-browser';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { getItemEditPath } from '../../item-page-routing.module'; import { getItemEditPath } from '../../item-page-routing.module';
import { RestResponse } from '../../../core/cache/response.models'; import { RestResponse } from '../../../core/cache/response.models';
import {
createSuccessfulRemoteDataObject,
createSuccessfulRemoteDataObject$
} from '../../../shared/testing/utils';
/** /**
* Test component that implements the AbstractSimpleItemActionComponent used to test the * Test component that implements the AbstractSimpleItemActionComponent used to test the
@@ -65,12 +69,12 @@ describe('AbstractSimpleItemActionComponent', () => {
}); });
mockItemDataService = jasmine.createSpyObj({ mockItemDataService = jasmine.createSpyObj({
findById: observableOf(new RemoteData(false, false, true, undefined, mockItem)) findById: createSuccessfulRemoteDataObject$(mockItem)
}); });
routeStub = { routeStub = {
data: observableOf({ data: observableOf({
item: new RemoteData(false, false, true, null, { item: createSuccessfulRemoteDataObject({
id: 'fake-id' id: 'fake-id'
}) })
}) })

View File

@@ -9,6 +9,10 @@ import { Item } from '../../../core/shared/item.model';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { RemoteData } from '../../../core/data/remote-data'; import { RemoteData } from '../../../core/data/remote-data';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import {
createFailedRemoteDataObject$,
createSuccessfulRemoteDataObject$
} from '../../../shared/testing/utils';
let collectionsComponent: CollectionsComponent; let collectionsComponent: CollectionsComponent;
let fixture: ComponentFixture<CollectionsComponent>; let fixture: ComponentFixture<CollectionsComponent>;
@@ -24,8 +28,8 @@ const mockCollection1: Collection = Object.assign(new Collection(), {
} }
}); });
const succeededMockItem: Item = Object.assign(new Item(), {owningCollection: observableOf(new RemoteData(false, false, true, null, mockCollection1))}); const succeededMockItem: Item = Object.assign(new Item(), {owningCollection: createSuccessfulRemoteDataObject$(mockCollection1)});
const failedMockItem: Item = Object.assign(new Item(), {owningCollection: observableOf(new RemoteData(false, false, false, null, mockCollection1))}); const failedMockItem: Item = Object.assign(new Item(), {owningCollection: createFailedRemoteDataObject$(mockCollection1)});
describe('CollectionsComponent', () => { describe('CollectionsComponent', () => {
beforeEach(async(() => { beforeEach(async(() => {

View File

@@ -17,9 +17,13 @@ import { RemoteData } from '../../core/data/remote-data';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import {
createSuccessfulRemoteDataObject,
createSuccessfulRemoteDataObject$
} from '../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'dc.title': [ 'dc.title': [
{ {
@@ -30,7 +34,7 @@ const mockItem: Item = Object.assign(new Item(), {
} }
}); });
const routeStub = Object.assign(new ActivatedRouteStub(), { const routeStub = Object.assign(new ActivatedRouteStub(), {
data: observableOf({ item: new RemoteData(false, false, true, null, mockItem) }) data: observableOf({ item: createSuccessfulRemoteDataObject(mockItem) })
}); });
const metadataServiceStub = { const metadataServiceStub = {
/* tslint:disable:no-empty */ /* tslint:disable:no-empty */

View File

@@ -11,6 +11,7 @@ import { ItemPageFieldComponent } from './item-page-field.component';
import { MetadataValuesComponent } from '../../../field-components/metadata-values/metadata-values.component'; import { MetadataValuesComponent } from '../../../field-components/metadata-values/metadata-values.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { MetadataMap, MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataMap, MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
let comp: ItemPageFieldComponent; let comp: ItemPageFieldComponent;
let fixture: ComponentFixture<ItemPageFieldComponent>; let fixture: ComponentFixture<ItemPageFieldComponent>;
@@ -52,7 +53,7 @@ describe('ItemPageFieldComponent', () => {
export function mockItemWithMetadataFieldAndValue(field: string, value: string): Item { export function mockItemWithMetadataFieldAndValue(field: string, value: string): Item {
const item = Object.assign(new Item(), { const item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: new MetadataMap() metadata: new MetadataMap()
}); });
item.metadata[field] = [{ item.metadata[field] = [{

View File

@@ -16,9 +16,13 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { createRelationshipsObservable } from './item-types/shared/item.component.spec'; import { createRelationshipsObservable } from './item-types/shared/item.component.spec';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import {
createFailedRemoteDataObject$, createPendingRemoteDataObject$, createSuccessfulRemoteDataObject,
createSuccessfulRemoteDataObject$
} from '../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: [], metadata: [],
relationships: createRelationshipsObservable() relationships: createRelationshipsObservable()
}); });
@@ -33,7 +37,7 @@ describe('ItemPageComponent', () => {
/* tslint:enable:no-empty */ /* tslint:enable:no-empty */
}; };
const mockRoute = Object.assign(new ActivatedRouteStub(), { const mockRoute = Object.assign(new ActivatedRouteStub(), {
data: observableOf({ item: new RemoteData(false, false, true, null, mockItem) }) data: observableOf({ item: createSuccessfulRemoteDataObject(mockItem) })
}); });
beforeEach(async(() => { beforeEach(async(() => {
@@ -66,7 +70,8 @@ describe('ItemPageComponent', () => {
describe('when the item is loading', () => { describe('when the item is loading', () => {
beforeEach(() => { beforeEach(() => {
comp.itemRD$ = observableOf(new RemoteData(true, true, true, null, undefined)); comp.itemRD$ = createPendingRemoteDataObject$(undefined);
// comp.itemRD$ = observableOf(new RemoteData(true, true, true, null, undefined));
fixture.detectChanges(); fixture.detectChanges();
}); });
@@ -78,7 +83,7 @@ describe('ItemPageComponent', () => {
describe('when the item failed loading', () => { describe('when the item failed loading', () => {
beforeEach(() => { beforeEach(() => {
comp.itemRD$ = observableOf(new RemoteData(false, false, false, null, undefined)); comp.itemRD$ = createFailedRemoteDataObject$(undefined);
fixture.detectChanges(); fixture.detectChanges();
}); });

View File

@@ -5,9 +5,10 @@ import { PageInfo } from '../../../../core/shared/page-info.model';
import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec'; import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec';
import { JournalIssueComponent } from './journal-issue.component'; import { JournalIssueComponent } from './journal-issue.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'journalissue.identifier.number': [ 'journalissue.identifier.number': [
{ {

View File

@@ -5,9 +5,10 @@ import { PageInfo } from '../../../../core/shared/page-info.model';
import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec'; import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec';
import { JournalVolumeComponent } from './journal-volume.component'; import { JournalVolumeComponent } from './journal-volume.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'journalvolume.identifier.volume': [ 'journalvolume.identifier.volume': [
{ {

View File

@@ -15,12 +15,13 @@ import { PageInfo } from '../../../../core/shared/page-info.model';
import { isNotEmpty } from '../../../../shared/empty.util'; import { isNotEmpty } from '../../../../shared/empty.util';
import { JournalComponent } from './journal.component'; import { JournalComponent } from './journal.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
let comp: JournalComponent; let comp: JournalComponent;
let fixture: ComponentFixture<JournalComponent>; let fixture: ComponentFixture<JournalComponent>;
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'journal.identifier.issn': [ 'journal.identifier.issn': [
{ {

View File

@@ -5,9 +5,10 @@ import { PageInfo } from '../../../../core/shared/page-info.model';
import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec'; import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec';
import { OrgunitComponent } from './orgunit.component'; import { OrgunitComponent } from './orgunit.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'orgunit.identifier.dateestablished': [ 'orgunit.identifier.dateestablished': [
{ {

View File

@@ -5,9 +5,10 @@ import { PageInfo } from '../../../../core/shared/page-info.model';
import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec'; import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec';
import { PersonComponent } from './person.component'; import { PersonComponent } from './person.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'person.identifier.email': [ 'person.identifier.email': [
{ {

View File

@@ -5,9 +5,10 @@ import { PageInfo } from '../../../../core/shared/page-info.model';
import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec'; import { createRelationshipsObservable, getItemPageFieldsTest } from '../shared/item.component.spec';
import { ProjectComponent } from './project.component'; import { ProjectComponent } from './project.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'project.identifier.status': [ 'project.identifier.status': [
{ {

View File

@@ -17,9 +17,10 @@ import { createRelationshipsObservable } from '../shared/item.component.spec';
import { PublicationComponent } from './publication.component'; import { PublicationComponent } from './publication.component';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { MetadataMap } from '../../../../core/shared/metadata.models'; import { MetadataMap } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: new MetadataMap(), metadata: new MetadataMap(),
relationships: createRelationshipsObservable() relationships: createRelationshipsObservable()
}); });

View File

@@ -26,6 +26,7 @@ import { MetadatumRepresentation } from '../../../../core/shared/metadata-repres
import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-representation/item/item-metadata-representation.model';
import { MetadataMap, MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataMap, MetadataValue } from '../../../../core/shared/metadata.models';
import { compareArraysUsing, compareArraysUsingIds } from './item-relationships-utils'; import { compareArraysUsing, compareArraysUsingIds } from './item-relationships-utils';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
/** /**
* Create a generic test for an item-page-fields component using a mockItem and the type of component * Create a generic test for an item-page-fields component using a mockItem and the type of component
@@ -102,11 +103,11 @@ export function containsFieldInput(fields: DebugElement[], metadataKey: string):
} }
export function createRelationshipsObservable() { export function createRelationshipsObservable() {
return observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), [ return createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [
Object.assign(new Relationship(), { Object.assign(new Relationship(), {
relationshipType: observableOf(new RemoteData(false, false, true, null, new RelationshipType())) relationshipType: createSuccessfulRemoteDataObject$(new RelationshipType())
}) })
]))); ]));
} }
describe('ItemComponent', () => { describe('ItemComponent', () => {
const arr1 = [ const arr1 = [
@@ -323,15 +324,15 @@ describe('ItemComponent', () => {
id: '1', id: '1',
uuid: '1', uuid: '1',
metadata: new MetadataMap(), metadata: new MetadataMap(),
relationships: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), [ relationships: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [
Object.assign(new Relationship(), { Object.assign(new Relationship(), {
uuid: '123', uuid: '123',
id: '123', id: '123',
leftId: '1', leftId: '1',
rightId: '2', rightId: '2',
relationshipType: observableOf(new RemoteData(false, false, true, null, new RelationshipType())) relationshipType: createSuccessfulRemoteDataObject$(new RelationshipType())
}) })
]))) ]))
}); });
mockItem.metadata[metadataField] = [ mockItem.metadata[metadataField] = [
{ {
@@ -367,7 +368,7 @@ describe('ItemComponent', () => {
const mockItemDataService = Object.assign({ const mockItemDataService = Object.assign({
findById: (id) => { findById: (id) => {
if (id === relatedItem.id) { if (id === relatedItem.id) {
return observableOf(new RemoteData(false, false, true, null, relatedItem)) return createSuccessfulRemoteDataObject$(relatedItem)
} }
} }
}) as ItemDataService; }) as ItemDataService;

View File

@@ -8,14 +8,15 @@ import { PageInfo } from '../../../core/shared/page-info.model';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { createRelationshipsObservable } from '../item-types/shared/item.component.spec'; import { createRelationshipsObservable } from '../item-types/shared/item.component.spec';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/testing/utils';
const mockItem1: Item = Object.assign(new Item(), { const mockItem1: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: [], metadata: [],
relationships: createRelationshipsObservable() relationships: createRelationshipsObservable()
}); });
const mockItem2: Item = Object.assign(new Item(), { const mockItem2: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: [], metadata: [],
relationships: createRelationshipsObservable() relationships: createRelationshipsObservable()
}); });

View File

@@ -29,6 +29,7 @@ import { RoleDirective } from '../shared/roles/role.directive';
import { RoleService } from '../core/roles/role.service'; import { RoleService } from '../core/roles/role.service';
import { MockRoleService } from '../shared/mocks/mock-role-service'; import { MockRoleService } from '../shared/mocks/mock-role-service';
import { SearchFixedFilterService } from '../+search-page/search-filters/search-filter/search-fixed-filter.service'; import { SearchFixedFilterService } from '../+search-page/search-filters/search-filter/search-fixed-filter.service';
import { createSuccessfulRemoteDataObject$ } from '../shared/testing/utils';
describe('MyDSpacePageComponent', () => { describe('MyDSpacePageComponent', () => {
let comp: MyDSpacePageComponent; let comp: MyDSpacePageComponent;
@@ -46,7 +47,7 @@ describe('MyDSpacePageComponent', () => {
pagination.currentPage = 1; pagination.currentPage = 1;
pagination.pageSize = 10; pagination.pageSize = 10;
const sort: SortOptions = new SortOptions('score', SortDirection.DESC); const sort: SortOptions = new SortOptions('score', SortDirection.DESC);
const mockResults = observableOf(new RemoteData(false, false, true, null, ['test', 'data'])); const mockResults = createSuccessfulRemoteDataObject$(['test', 'data']);
const searchServiceStub = jasmine.createSpyObj('SearchService', { const searchServiceStub = jasmine.createSpyObj('SearchService', {
search: mockResults, search: mockResults,
getSearchLink: '/mydspace', getSearchLink: '/mydspace',

View File

@@ -20,6 +20,7 @@ import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-d
import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service-stub'; import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service-stub';
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component'; import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
import { tap } from 'rxjs/operators'; import { tap } from 'rxjs/operators';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
describe('SearchFacetFilterComponent', () => { describe('SearchFacetFilterComponent', () => {
let comp: SearchFacetFilterComponent; let comp: SearchFacetFilterComponent;
@@ -61,7 +62,7 @@ describe('SearchFacetFilterComponent', () => {
let router; let router;
const page = observableOf(0); const page = observableOf(0);
const mockValues = observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), values))); const mockValues = createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), values));
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule], imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule],

View File

@@ -20,6 +20,7 @@ import { RouteService } from '../../../../shared/services/route.service';
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service'; import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component'; import { SEARCH_CONFIG_SERVICE } from '../../../../+my-dspace-page/my-dspace-page.component';
import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service-stub'; import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service-stub';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/testing/utils';
describe('SearchRangeFilterComponent', () => { describe('SearchRangeFilterComponent', () => {
let comp: SearchRangeFilterComponent; let comp: SearchRangeFilterComponent;
@@ -66,7 +67,7 @@ describe('SearchRangeFilterComponent', () => {
let router; let router;
const page = observableOf(0); const page = observableOf(0);
const mockValues = observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), values))); const mockValues = createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), values));
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule], imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule],

View File

@@ -25,6 +25,7 @@ import { RouteService } from '../shared/services/route.service';
import { SearchConfigurationServiceStub } from '../shared/testing/search-configuration-service-stub'; import { SearchConfigurationServiceStub } from '../shared/testing/search-configuration-service-stub';
import { PaginatedSearchOptions } from './paginated-search-options.model'; import { PaginatedSearchOptions } from './paginated-search-options.model';
import { SearchFixedFilterService } from './search-filters/search-filter/search-fixed-filter.service'; import { SearchFixedFilterService } from './search-filters/search-filter/search-fixed-filter.service';
import { createSuccessfulRemoteDataObject$ } from '../shared/testing/utils';
let comp: SearchPageComponent; let comp: SearchPageComponent;
let fixture: ComponentFixture<SearchPageComponent>; let fixture: ComponentFixture<SearchPageComponent>;
@@ -41,7 +42,7 @@ pagination.id = 'search-results-pagination';
pagination.currentPage = 1; pagination.currentPage = 1;
pagination.pageSize = 10; pagination.pageSize = 10;
const sort: SortOptions = new SortOptions('score', SortDirection.DESC); const sort: SortOptions = new SortOptions('score', SortDirection.DESC);
const mockResults = observableOf(new RemoteData(false, false, true, null, ['test', 'data'])); const mockResults = createSuccessfulRemoteDataObject$(['test', 'data']);
const searchServiceStub = jasmine.createSpyObj('SearchService', { const searchServiceStub = jasmine.createSpyObj('SearchService', {
search: mockResults, search: mockResults,
getSearchLink: '/search', getSearchLink: '/search',

View File

@@ -21,6 +21,7 @@ import { getSucceededRemoteData } from '../../core/shared/operators';
import { SearchFilter } from '../search-filter.model'; import { SearchFilter } from '../search-filter.model';
import { DSpaceObjectType } from '../../core/shared/dspace-object-type.model'; import { DSpaceObjectType } from '../../core/shared/dspace-object-type.model';
import { SearchFixedFilterService } from '../search-filters/search-filter/search-fixed-filter.service'; import { SearchFixedFilterService } from '../search-filters/search-filter/search-fixed-filter.service';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
/** /**
* Service that performs all actions that have to do with the current search configuration * Service that performs all actions that have to do with the current search configuration
@@ -271,7 +272,7 @@ export class SearchConfigurationService implements OnDestroy {
scope: this.defaultScope, scope: this.defaultScope,
query: this.defaultQuery query: this.defaultQuery
}); });
this._defaults = observableOf(new RemoteData(false, false, true, null, options)); this._defaults = createSuccessfulRemoteDataObject$(options);
} }
return this._defaults; return this._defaults;
} }

View File

@@ -28,6 +28,7 @@ import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.serv
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { RouteService } from '../../shared/services/route.service'; import { RouteService } from '../../shared/services/route.service';
import { routeServiceStub } from '../../shared/testing/route-service-stub'; import { routeServiceStub } from '../../shared/testing/route-service-stub';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
@Component({ template: '' }) @Component({ template: '' })
class DummyComponent { class DummyComponent {
@@ -91,7 +92,7 @@ describe('SearchService', () => {
); );
}, },
aggregate: (input: Array<Observable<RemoteData<any>>>): Observable<RemoteData<any[]>> => { aggregate: (input: Array<Observable<RemoteData<any>>>): Observable<RemoteData<any[]>> => {
return observableOf(new RemoteData(false, false, true, null, [])); return createSuccessfulRemoteDataObject$([]);
} }
}; };

View File

@@ -4,6 +4,7 @@ import { PaginatedList } from '../../data/paginated-list';
import { PageInfo } from '../../shared/page-info.model'; import { PageInfo } from '../../shared/page-info.model';
import { RemoteData } from '../../data/remote-data'; import { RemoteData } from '../../data/remote-data';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject } from '../../../shared/testing/utils';
const pageInfo = new PageInfo(); const pageInfo = new PageInfo();
const array = [ const array = [
@@ -29,8 +30,8 @@ const array = [
}) })
]; ];
const paginatedList = new PaginatedList(pageInfo, array); const paginatedList = new PaginatedList(pageInfo, array);
const arrayRD = new RemoteData(false, false, true, undefined, array); const arrayRD = createSuccessfulRemoteDataObject(array);
const paginatedListRD = new RemoteData(false, false, true, undefined, paginatedList); const paginatedListRD = createSuccessfulRemoteDataObject(paginatedList);
describe('RemoteDataBuildService', () => { describe('RemoteDataBuildService', () => {
let service: RemoteDataBuildService; let service: RemoteDataBuildService;

View File

@@ -22,6 +22,7 @@ import {
getResourceLinksFromResponse getResourceLinksFromResponse
} from '../../shared/operators'; } from '../../shared/operators';
import { CacheableObject, TypedObject } from '../object-cache.reducer'; import { CacheableObject, TypedObject } from '../object-cache.reducer';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/testing/utils';
@Injectable() @Injectable()
export class RemoteDataBuildService { export class RemoteDataBuildService {
@@ -200,7 +201,7 @@ export class RemoteDataBuildService {
aggregate<T>(input: Array<Observable<RemoteData<T>>>): Observable<RemoteData<T[]>> { aggregate<T>(input: Array<Observable<RemoteData<T>>>): Observable<RemoteData<T[]>> {
if (isEmpty(input)) { if (isEmpty(input)) {
return observableOf(new RemoteData(false, false, true, null, [])); return createSuccessfulRemoteDataObject$([]);
} }
return observableCombineLatest(...input).pipe( return observableCombineLatest(...input).pipe(

View File

@@ -38,6 +38,7 @@ import { EmptyError } from 'rxjs/internal-compatibility';
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service'; import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service'; import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service';
import { MetadataValue } from '../shared/metadata.models'; import { MetadataValue } from '../shared/metadata.models';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
/* tslint:disable:max-classes-per-file */ /* tslint:disable:max-classes-per-file */
@Component({ @Component({
@@ -206,13 +207,7 @@ describe('MetadataService', () => {
}); });
const mockRemoteData = (mockItem: Item): Observable<RemoteData<Item>> => { const mockRemoteData = (mockItem: Item): Observable<RemoteData<Item>> => {
return observableOf(new RemoteData<Item>( return createSuccessfulRemoteDataObject$(MockItem);
false,
false,
true,
undefined,
MockItem
));
}; };
const mockType = (mockItem: Item, type: string): Item => { const mockType = (mockItem: Item, type: string): Item => {

View File

@@ -42,6 +42,7 @@ import {
import { ResourceType } from '../shared/resource-type'; import { ResourceType } from '../shared/resource-type';
import { MetadataSchema } from '../metadata/metadata-schema.model'; import { MetadataSchema } from '../metadata/metadata-schema.model';
import { MetadataField } from '../metadata/metadata-field.model'; import { MetadataField } from '../metadata/metadata-field.model';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
@Component({ template: '' }) @Component({ template: '' })
class DummyComponent { class DummyComponent {
@@ -131,7 +132,7 @@ describe('RegistryService', () => {
); );
}, },
aggregate: (input: Array<Observable<RemoteData<any>>>): Observable<RemoteData<any[]>> => { aggregate: (input: Array<Observable<RemoteData<any>>>): Observable<RemoteData<any[]>> => {
return observableOf(new RemoteData(false, false, true, null, [])); return createSuccessfulRemoteDataObject$([]);
} }
}; };

View File

@@ -5,6 +5,7 @@ import { RemoteData } from '../data/remote-data';
import { Bitstream } from './bitstream.model'; import { Bitstream } from './bitstream.model';
import { isEmpty } from '../../shared/empty.util'; import { isEmpty } from '../../shared/empty.util';
import { first, map } from 'rxjs/operators'; import { first, map } from 'rxjs/operators';
import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
describe('Item', () => { describe('Item', () => {
@@ -32,9 +33,9 @@ describe('Item', () => {
content: bitstream2Path content: bitstream2Path
}]; }];
remoteDataThumbnail = createRemoteDataObject(thumbnail); remoteDataThumbnail = createSuccessfulRemoteDataObject$(thumbnail);
remoteDataFiles = createRemoteDataObject(bitstreams); remoteDataFiles = createSuccessfulRemoteDataObject$(bitstreams);
remoteDataAll = createRemoteDataObject([...bitstreams, thumbnail]); remoteDataAll = createSuccessfulRemoteDataObject$([...bitstreams, thumbnail]);
// Create Bundles // Create Bundles
@@ -101,14 +102,3 @@ describe('Item', () => {
}); });
}); });
function createRemoteDataObject(object: any) {
return observableOf(new RemoteData(
false,
false,
true,
undefined,
object
));
}

View File

@@ -18,6 +18,10 @@ import {
import { RemoteData } from '../data/remote-data'; import { RemoteData } from '../data/remote-data';
import { RemoteDataError } from '../data/remote-data-error'; import { RemoteDataError } from '../data/remote-data-error';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import {
createFailedRemoteDataObject,
createSuccessfulRemoteDataObject
} from '../../shared/testing/utils';
describe('Core Module - RxJS Operators', () => { describe('Core Module - RxJS Operators', () => {
let scheduler: TestScheduler; let scheduler: TestScheduler;
@@ -180,17 +184,17 @@ describe('Core Module - RxJS Operators', () => {
describe('getSucceededRemoteData', () => { describe('getSucceededRemoteData', () => {
it('should return the first() hasSucceeded RemoteData Observable', () => { it('should return the first() hasSucceeded RemoteData Observable', () => {
const testRD = { const testRD = {
a: new RemoteData(false, false, true, null, undefined), a: createSuccessfulRemoteDataObject(undefined),
b: new RemoteData(false, false, false, null, 'b'), b: createFailedRemoteDataObject( 'b'),
c: new RemoteData(false, false, undefined, null, 'c'), c: new RemoteData(false, false, undefined, null, 'c'),
d: new RemoteData(false, false, true, null, 'd'), d: createSuccessfulRemoteDataObject('d'),
e: new RemoteData(false, false, true, null, 'e'), e: createSuccessfulRemoteDataObject('e'),
}; };
const source = hot('abcde', testRD); const source = hot('abcde', testRD);
const result = source.pipe(getSucceededRemoteData()); const result = source.pipe(getSucceededRemoteData());
result.subscribe((value) => expect(value) result.subscribe((value) => expect(value)
.toEqual(new RemoteData(false, false, true, null, 'd'))); .toEqual(createSuccessfulRemoteDataObject('d')));
}); });
}); });
@@ -202,21 +206,21 @@ describe('Core Module - RxJS Operators', () => {
}); });
it('should call navigateByUrl to a 404 page, when the remote data contains a 404 error', () => { it('should call navigateByUrl to a 404 page, when the remote data contains a 404 error', () => {
const testRD = new RemoteData(false, false, false, new RemoteDataError(404, 'Not Found', 'Object was not found'), undefined); const testRD = createFailedRemoteDataObject(undefined, new RemoteDataError(404, 'Not Found', 'Object was not found'));
observableOf(testRD).pipe(redirectToPageNotFoundOn404(router)).subscribe(); observableOf(testRD).pipe(redirectToPageNotFoundOn404(router)).subscribe();
expect(router.navigateByUrl).toHaveBeenCalledWith('/404', { skipLocationChange: true }); expect(router.navigateByUrl).toHaveBeenCalledWith('/404', { skipLocationChange: true });
}); });
it('should not call navigateByUrl to a 404 page, when the remote data contains another error than a 404', () => { it('should not call navigateByUrl to a 404 page, when the remote data contains another error than a 404', () => {
const testRD = new RemoteData(false, false, false, new RemoteDataError(500, 'Server Error', 'Something went wrong'), undefined); const testRD = createFailedRemoteDataObject(undefined, new RemoteDataError(500, 'Server Error', 'Something went wrong'));
observableOf(testRD).pipe(redirectToPageNotFoundOn404(router)).subscribe(); observableOf(testRD).pipe(redirectToPageNotFoundOn404(router)).subscribe();
expect(router.navigateByUrl).not.toHaveBeenCalled(); expect(router.navigateByUrl).not.toHaveBeenCalled();
}); });
it('should not call navigateByUrl to a 404 page, when the remote data contains no error', () => { it('should not call navigateByUrl to a 404 page, when the remote data contains no error', () => {
const testRD = new RemoteData(false, false, true, null, undefined); const testRD = createSuccessfulRemoteDataObject(undefined);
observableOf(testRD).pipe(redirectToPageNotFoundOn404(router)).subscribe(); observableOf(testRD).pipe(redirectToPageNotFoundOn404(router)).subscribe();
expect(router.navigateByUrl).not.toHaveBeenCalled(); expect(router.navigateByUrl).not.toHaveBeenCalled();
@@ -242,11 +246,11 @@ describe('Core Module - RxJS Operators', () => {
describe('getAllSucceededRemoteData', () => { describe('getAllSucceededRemoteData', () => {
it('should return all hasSucceeded RemoteData Observables', () => { it('should return all hasSucceeded RemoteData Observables', () => {
const testRD = { const testRD = {
a: new RemoteData(false, false, true, null, undefined), a: createSuccessfulRemoteDataObject(undefined),
b: new RemoteData(false, false, false, null, 'b'), b: createFailedRemoteDataObject('b'),
c: new RemoteData(false, false, undefined, null, 'c'), c: new RemoteData(false, false, undefined, null, 'c'),
d: new RemoteData(false, false, true, null, 'd'), d: createSuccessfulRemoteDataObject('d'),
e: new RemoteData(false, false, true, null, 'e'), e: createSuccessfulRemoteDataObject('e'),
}; };
const source = hot('abcde', testRD); const source = hot('abcde', testRD);
const result = source.pipe(getAllSucceededRemoteData()); const result = source.pipe(getAllSucceededRemoteData());

View File

@@ -17,6 +17,7 @@ import { RouterTestingModule } from '@angular/router/testing';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../pagination/pagination-component-options.model';
import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model';
import { createSuccessfulRemoteDataObject$ } from '../testing/utils';
describe('BrowseByComponent', () => { describe('BrowseByComponent', () => {
let comp: BrowseByComponent; let comp: BrowseByComponent;
@@ -42,7 +43,7 @@ describe('BrowseByComponent', () => {
] ]
}) })
]; ];
const mockItemsRD$ = observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), mockItems))); const mockItemsRD$ = createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), mockItems));
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -4,7 +4,6 @@ import { RouteService } from '../../services/route.service';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { RemoteData } from '../../../core/data/remote-data';
import { Community } from '../../../core/shared/community.model'; import { Community } from '../../../core/shared/community.model';
import { SharedModule } from '../../shared.module'; import { SharedModule } from '../../shared.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
@@ -13,6 +12,10 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { CreateComColPageComponent } from './create-comcol-page.component'; import { CreateComColPageComponent } from './create-comcol-page.component';
import { DataService } from '../../../core/data/data.service'; import { DataService } from '../../../core/data/data.service';
import {
createFailedRemoteDataObject$,
createSuccessfulRemoteDataObject$
} from '../../testing/utils';
describe('CreateComColPageComponent', () => { describe('CreateComColPageComponent', () => {
let comp: CreateComColPageComponent<DSpaceObject>; let comp: CreateComColPageComponent<DSpaceObject>;
@@ -46,14 +49,14 @@ describe('CreateComColPageComponent', () => {
}); });
communityDataServiceStub = { communityDataServiceStub = {
findById: (uuid) => observableOf(new RemoteData(false, false, true, null, Object.assign(new Community(), { findById: (uuid) => createSuccessfulRemoteDataObject$(Object.assign(new Community(), {
uuid: uuid, uuid: uuid,
metadata: [{ metadata: [{
key: 'dc.title', key: 'dc.title',
value: community.name value: community.name
}] }]
}))), })),
create: (com, uuid?) => observableOf(new RemoteData(false, false, true, undefined, newCommunity)) create: (com, uuid?) => createSuccessfulRemoteDataObject$(newCommunity)
}; };
@@ -109,7 +112,7 @@ describe('CreateComColPageComponent', () => {
it('should not navigate on failure', () => { it('should not navigate on failure', () => {
spyOn(router, 'navigate'); spyOn(router, 'navigate');
spyOn(dsoDataService, 'create').and.returnValue(observableOf(new RemoteData(true, true, false, undefined, newCommunity))); spyOn(dsoDataService, 'create').and.returnValue(createFailedRemoteDataObject$(newCommunity));
comp.onSubmit(data); comp.onSubmit(data);
fixture.detectChanges(); fixture.detectChanges();
expect(router.navigate).not.toHaveBeenCalled(); expect(router.navigate).not.toHaveBeenCalled();

View File

@@ -3,7 +3,6 @@ import { CommunityDataService } from '../../../core/data/community-data.service'
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { RemoteData } from '../../../core/data/remote-data';
import { Community } from '../../../core/shared/community.model'; import { Community } from '../../../core/shared/community.model';
import { SharedModule } from '../../shared.module'; import { SharedModule } from '../../shared.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
@@ -12,6 +11,10 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { EditComColPageComponent } from './edit-comcol-page.component'; import { EditComColPageComponent } from './edit-comcol-page.component';
import { DataService } from '../../../core/data/data.service'; import { DataService } from '../../../core/data/data.service';
import {
createFailedRemoteDataObject$,
createSuccessfulRemoteDataObject$
} from '../../testing/utils';
describe('EditComColPageComponent', () => { describe('EditComColPageComponent', () => {
let comp: EditComColPageComponent<DSpaceObject>; let comp: EditComColPageComponent<DSpaceObject>;
@@ -43,7 +46,7 @@ describe('EditComColPageComponent', () => {
}); });
communityDataServiceStub = { communityDataServiceStub = {
update: (com, uuid?) => observableOf(new RemoteData(false, false, true, undefined, newCommunity)) update: (com, uuid?) => createSuccessfulRemoteDataObject$(newCommunity)
}; };
@@ -97,7 +100,7 @@ describe('EditComColPageComponent', () => {
it('should not navigate on failure', () => { it('should not navigate on failure', () => {
spyOn(router, 'navigate'); spyOn(router, 'navigate');
spyOn(dsoDataService, 'update').and.returnValue(observableOf(new RemoteData(true, true, false, undefined, newCommunity))); spyOn(dsoDataService, 'update').and.returnValue(createFailedRemoteDataObject$(newCommunity));
comp.onSubmit(data); comp.onSubmit(data);
fixture.detectChanges(); fixture.detectChanges();
expect(router.navigate).not.toHaveBeenCalled(); expect(router.navigate).not.toHaveBeenCalled();

View File

@@ -11,6 +11,7 @@ import { Item } from '../../../core/shared/item.model';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { PaginatedList } from '../../../core/data/paginated-list'; import { PaginatedList } from '../../../core/data/paginated-list';
import { MetadataValue } from '../../../core/shared/metadata.models'; import { MetadataValue } from '../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject$ } from '../../testing/utils';
describe('DSOSelectorComponent', () => { describe('DSOSelectorComponent', () => {
let component: DSOSelectorComponent; let component: DSOSelectorComponent;
@@ -30,7 +31,7 @@ describe('DSOSelectorComponent', () => {
searchResult.indexableObject = item; searchResult.indexableObject = item;
searchResult.hitHighlights = {}; searchResult.hitHighlights = {};
const searchService = jasmine.createSpyObj('searchService', { const searchService = jasmine.createSpyObj('searchService', {
search: observableOf(new RemoteData(false, false, true, undefined, new PaginatedList(undefined, [searchResult]))) search: createSuccessfulRemoteDataObject$(new PaginatedList(undefined, [searchResult]))
}); });
beforeEach(async(() => { beforeEach(async(() => {

View File

@@ -10,6 +10,7 @@ import * as collectionRouter from '../../../../+collection-page/collection-page-
import { Community } from '../../../../core/shared/community.model'; import { Community } from '../../../../core/shared/community.model';
import { CreateCollectionParentSelectorComponent } from './create-collection-parent-selector.component'; import { CreateCollectionParentSelectorComponent } from './create-collection-parent-selector.component';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
describe('CreateCollectionParentSelectorComponent', () => { describe('CreateCollectionParentSelectorComponent', () => {
let component: CreateCollectionParentSelectorComponent; let component: CreateCollectionParentSelectorComponent;
@@ -26,7 +27,7 @@ describe('CreateCollectionParentSelectorComponent', () => {
})] })]
}; };
const router = new RouterStub(); const router = new RouterStub();
const communityRD = new RemoteData(false, false, true, undefined, community); const communityRD = createSuccessfulRemoteDataObject(community);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const createPath = 'testCreatePath'; const createPath = 'testCreatePath';

View File

@@ -10,6 +10,7 @@ import * as communityRouter from '../../../../+community-page/community-page-rou
import { Community } from '../../../../core/shared/community.model'; import { Community } from '../../../../core/shared/community.model';
import { CreateCommunityParentSelectorComponent } from './create-community-parent-selector.component'; import { CreateCommunityParentSelectorComponent } from './create-community-parent-selector.component';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
describe('CreateCommunityParentSelectorComponent', () => { describe('CreateCommunityParentSelectorComponent', () => {
let component: CreateCommunityParentSelectorComponent; let component: CreateCommunityParentSelectorComponent;
@@ -20,7 +21,7 @@ describe('CreateCommunityParentSelectorComponent', () => {
community.uuid = '1234-1234-1234-1234'; community.uuid = '1234-1234-1234-1234';
community.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Community title', language: undefined })] }; community.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Community title', language: undefined })] };
const router = new RouterStub(); const router = new RouterStub();
const communityRD = new RemoteData(false, false, true, undefined, community); const communityRD = createSuccessfulRemoteDataObject(community);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const createPath = 'testCreatePath'; const createPath = 'testCreatePath';

View File

@@ -9,6 +9,7 @@ import { RouterStub } from '../../../testing/router-stub';
import { Collection } from '../../../../core/shared/collection.model'; import { Collection } from '../../../../core/shared/collection.model';
import { CreateItemParentSelectorComponent } from './create-item-parent-selector.component'; import { CreateItemParentSelectorComponent } from './create-item-parent-selector.component';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
describe('CreateItemParentSelectorComponent', () => { describe('CreateItemParentSelectorComponent', () => {
let component: CreateItemParentSelectorComponent; let component: CreateItemParentSelectorComponent;
@@ -19,7 +20,7 @@ describe('CreateItemParentSelectorComponent', () => {
collection.uuid = '1234-1234-1234-1234'; collection.uuid = '1234-1234-1234-1234';
collection.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Collection title', language: undefined })] }; collection.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Collection title', language: undefined })] };
const router = new RouterStub(); const router = new RouterStub();
const collectionRD = new RemoteData(false, false, true, undefined, collection); const collectionRD = createSuccessfulRemoteDataObject(collection);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const createPath = 'testCreatePath'; const createPath = 'testCreatePath';

View File

@@ -14,6 +14,7 @@ import { By } from '@angular/platform-browser';
import { DSOSelectorComponent } from '../dso-selector/dso-selector.component'; import { DSOSelectorComponent } from '../dso-selector/dso-selector.component';
import { MockComponent } from 'ng-mocks'; import { MockComponent } from 'ng-mocks';
import { MetadataValue } from '../../../core/shared/metadata.models'; import { MetadataValue } from '../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../testing/utils';
describe('DSOSelectorModalWrapperComponent', () => { describe('DSOSelectorModalWrapperComponent', () => {
let component: DSOSelectorModalWrapperComponent; let component: DSOSelectorModalWrapperComponent;
@@ -29,7 +30,7 @@ describe('DSOSelectorModalWrapperComponent', () => {
})] })]
}; };
const itemRD = new RemoteData(false, false, true, undefined, item); const itemRD = createSuccessfulRemoteDataObject(item);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
beforeEach(async(() => { beforeEach(async(() => {

View File

@@ -10,6 +10,7 @@ import * as collectionRouter from '../../../../+collection-page/collection-page-
import { EditCollectionSelectorComponent } from './edit-collection-selector.component'; import { EditCollectionSelectorComponent } from './edit-collection-selector.component';
import { Collection } from '../../../../core/shared/collection.model'; import { Collection } from '../../../../core/shared/collection.model';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
describe('EditCollectionSelectorComponent', () => { describe('EditCollectionSelectorComponent', () => {
let component: EditCollectionSelectorComponent; let component: EditCollectionSelectorComponent;
@@ -20,7 +21,7 @@ describe('EditCollectionSelectorComponent', () => {
collection.uuid = '1234-1234-1234-1234'; collection.uuid = '1234-1234-1234-1234';
collection.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Collection title', language: undefined })] }; collection.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Collection title', language: undefined })] };
const router = new RouterStub(); const router = new RouterStub();
const collectionRD = new RemoteData(false, false, true, undefined, collection); const collectionRD = createSuccessfulRemoteDataObject(collection);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const editPath = 'testEditPath'; const editPath = 'testEditPath';

View File

@@ -10,6 +10,7 @@ import * as communityRouter from '../../../../+community-page/community-page-rou
import { EditCommunitySelectorComponent } from './edit-community-selector.component'; import { EditCommunitySelectorComponent } from './edit-community-selector.component';
import { Community } from '../../../../core/shared/community.model'; import { Community } from '../../../../core/shared/community.model';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
describe('EditCommunitySelectorComponent', () => { describe('EditCommunitySelectorComponent', () => {
let component: EditCommunitySelectorComponent; let component: EditCommunitySelectorComponent;
@@ -20,7 +21,7 @@ describe('EditCommunitySelectorComponent', () => {
community.uuid = '1234-1234-1234-1234'; community.uuid = '1234-1234-1234-1234';
community.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Community title', language: undefined })] }; community.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Community title', language: undefined })] };
const router = new RouterStub(); const router = new RouterStub();
const communityRD = new RemoteData(false, false, true, undefined, community); const communityRD = createSuccessfulRemoteDataObject(community);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const editPath = 'testEditPath'; const editPath = 'testEditPath';

View File

@@ -10,6 +10,7 @@ import { RemoteData } from '../../../../core/data/remote-data';
import { RouterStub } from '../../../testing/router-stub'; import { RouterStub } from '../../../testing/router-stub';
import * as itemRouter from '../../../../+item-page/item-page-routing.module'; import * as itemRouter from '../../../../+item-page/item-page-routing.module';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
describe('EditItemSelectorComponent', () => { describe('EditItemSelectorComponent', () => {
let component: EditItemSelectorComponent; let component: EditItemSelectorComponent;
@@ -20,7 +21,7 @@ describe('EditItemSelectorComponent', () => {
item.uuid = '1234-1234-1234-1234'; item.uuid = '1234-1234-1234-1234';
item.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Item title', language: undefined })] }; item.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Item title', language: undefined })] };
const router = new RouterStub(); const router = new RouterStub();
const itemRD = new RemoteData(false, false, true, undefined, item); const itemRD = createSuccessfulRemoteDataObject(item);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const editPath = 'testEditPath'; const editPath = 'testEditPath';

View File

@@ -10,10 +10,11 @@ import * as decorator from '../item-type-decorator';
import { getComponentByItemType, ItemViewMode } from '../item-type-decorator'; import { getComponentByItemType, ItemViewMode } from '../item-type-decorator';
import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model';
import createSpy = jasmine.createSpy; import createSpy = jasmine.createSpy;
import { createSuccessfulRemoteDataObject$ } from '../../testing/utils';
const relationType = 'type'; const relationType = 'type';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: { metadata: {
'dc.title': [ 'dc.title': [
{ {

View File

@@ -5,6 +5,7 @@ import { RemoteData } from '../../core/data/remote-data';
import { RequestEntry } from '../../core/data/request.reducer'; import { RequestEntry } from '../../core/data/request.reducer';
import { hasValue } from '../empty.util'; import { hasValue } from '../empty.util';
import { NormalizedObject } from '../../core/cache/models/normalized-object.model'; import { NormalizedObject } from '../../core/cache/models/normalized-object.model';
import { createSuccessfulRemoteDataObject$ } from '../testing/utils';
export function getMockRemoteDataBuildService(toRemoteDataObservable$?: Observable<RemoteData<any>>): RemoteDataBuildService { export function getMockRemoteDataBuildService(toRemoteDataObservable$?: Observable<RemoteData<any>>): RemoteDataBuildService {
return { return {
@@ -18,7 +19,7 @@ export function getMockRemoteDataBuildService(toRemoteDataObservable$?: Observab
} as RemoteData<any>))) } as RemoteData<any>)))
} }
}, },
buildSingle: (href$: string | Observable<string>) => observableOf(new RemoteData(false, false, true, undefined, {})), buildSingle: (href$: string | Observable<string>) => createSuccessfulRemoteDataObject$({}),
build: (normalized: NormalizedObject<any>) => Object.create({}) build: (normalized: NormalizedObject<any>) => Object.create({})
} as RemoteDataBuildService; } as RemoteDataBuildService;

View File

@@ -17,6 +17,7 @@ import { ClaimedTaskDataService } from '../../../core/tasks/claimed-task-data.se
import { ClaimedTaskActionsComponent } from './claimed-task-actions.component'; import { ClaimedTaskActionsComponent } from './claimed-task-actions.component';
import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model'; import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model';
import { WorkflowItem } from '../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../testing/utils';
let component: ClaimedTaskActionsComponent; let component: ClaimedTaskActionsComponent;
let fixture: ComponentFixture<ClaimedTaskActionsComponent>; let fixture: ComponentFixture<ClaimedTaskActionsComponent>;
@@ -60,9 +61,9 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rdItem = new RemoteData(false, false, true, null, item); const rdItem = createSuccessfulRemoteDataObject(item);
const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) }); const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem), id: '1234' }); mockObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem), id: '1234' });
describe('ClaimedTaskActionsComponent', () => { describe('ClaimedTaskActionsComponent', () => {

View File

@@ -17,6 +17,7 @@ import { PoolTaskDataService } from '../../../core/tasks/pool-task-data.service'
import { PoolTaskActionsComponent } from './pool-task-actions.component'; import { PoolTaskActionsComponent } from './pool-task-actions.component';
import { PoolTask } from '../../../core/tasks/models/pool-task-object.model'; import { PoolTask } from '../../../core/tasks/models/pool-task-object.model';
import { WorkflowItem } from '../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../testing/utils';
let component: PoolTaskActionsComponent; let component: PoolTaskActionsComponent;
let fixture: ComponentFixture<PoolTaskActionsComponent>; let fixture: ComponentFixture<PoolTaskActionsComponent>;
@@ -58,9 +59,9 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rdItem = new RemoteData(false, false, true, null, item); const rdItem = createSuccessfulRemoteDataObject(item);
const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) }); const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem), id: '1234' }); mockObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem), id: '1234' });
describe('PoolTaskActionsComponent', () => { describe('PoolTaskActionsComponent', () => {

View File

@@ -14,6 +14,7 @@ import { WorkflowitemActionsComponent } from './workflowitem-actions.component';
import { WorkflowItemDataService } from '../../../core/submission/workflowitem-data.service'; import { WorkflowItemDataService } from '../../../core/submission/workflowitem-data.service';
import { NotificationsService } from '../../notifications/notifications.service'; import { NotificationsService } from '../../notifications/notifications.service';
import { NotificationsServiceStub } from '../../testing/notifications-service-stub'; import { NotificationsServiceStub } from '../../testing/notifications-service-stub';
import { createSuccessfulRemoteDataObject } from '../../testing/utils';
let component: WorkflowitemActionsComponent; let component: WorkflowitemActionsComponent;
let fixture: ComponentFixture<WorkflowitemActionsComponent>; let fixture: ComponentFixture<WorkflowitemActionsComponent>;
@@ -51,7 +52,7 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rd = new RemoteData(false, false, true, null, item); const rd = createSuccessfulRemoteDataObject(item);
mockObject = Object.assign(new WorkflowItem(), { item: observableOf(rd), id: '1234', uuid: '1234' }); mockObject = Object.assign(new WorkflowItem(), { item: observableOf(rd), id: '1234', uuid: '1234' });
describe('WorkflowitemActionsComponent', () => { describe('WorkflowitemActionsComponent', () => {

View File

@@ -16,6 +16,7 @@ import { Item } from '../../../core/shared/item.model';
import { WorkspaceItem } from '../../../core/submission/models/workspaceitem.model'; import { WorkspaceItem } from '../../../core/submission/models/workspaceitem.model';
import { WorkspaceitemActionsComponent } from './workspaceitem-actions.component'; import { WorkspaceitemActionsComponent } from './workspaceitem-actions.component';
import { WorkspaceitemDataService } from '../../../core/submission/workspaceitem-data.service'; import { WorkspaceitemDataService } from '../../../core/submission/workspaceitem-data.service';
import { createSuccessfulRemoteDataObject } from '../../testing/utils';
let component: WorkspaceitemActionsComponent; let component: WorkspaceitemActionsComponent;
let fixture: ComponentFixture<WorkspaceitemActionsComponent>; let fixture: ComponentFixture<WorkspaceitemActionsComponent>;
@@ -56,7 +57,7 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rd = new RemoteData(false, false, true, null, item); const rd = createSuccessfulRemoteDataObject(item);
mockObject = Object.assign(new WorkspaceItem(), { item: observableOf(rd), id: '1234', uuid: '1234' }); mockObject = Object.assign(new WorkspaceItem(), { item: observableOf(rd), id: '1234', uuid: '1234' });
describe('WorkspaceitemActionsComponent', () => { describe('WorkspaceitemActionsComponent', () => {

View File

@@ -13,15 +13,16 @@ import { MyDSpaceItemStatusComponent } from './my-dspace-item-status.component';
import { MyDspaceItemStatusType } from './my-dspace-item-status-type'; import { MyDspaceItemStatusType } from './my-dspace-item-status-type';
import { MockTranslateLoader } from '../../../mocks/mock-translate-loader'; import { MockTranslateLoader } from '../../../mocks/mock-translate-loader';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: MyDSpaceItemStatusComponent; let component: MyDSpaceItemStatusComponent;
let fixture: ComponentFixture<MyDSpaceItemStatusComponent>; let fixture: ComponentFixture<MyDSpaceItemStatusComponent>;
let mockResultObject: PoolTask; let mockResultObject: PoolTask;
const rdSumbitter = new RemoteData(false, false, true, null, EPersonMock); const rdSumbitter = createSuccessfulRemoteDataObject(EPersonMock);
const workflowitem = Object.assign(new WorkflowItem(), { submitter: observableOf(rdSumbitter) }); const workflowitem = Object.assign(new WorkflowItem(), { submitter: observableOf(rdSumbitter) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('MyDSpaceItemStatusComponent', () => { describe('MyDSpaceItemStatusComponent', () => {

View File

@@ -12,6 +12,7 @@ import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { EPersonMock } from '../../../testing/eperson-mock'; import { EPersonMock } from '../../../testing/eperson-mock';
import { MockTranslateLoader } from '../../../mocks/mock-translate-loader'; import { MockTranslateLoader } from '../../../mocks/mock-translate-loader';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: ItemSubmitterComponent; let component: ItemSubmitterComponent;
let fixture: ComponentFixture<ItemSubmitterComponent>; let fixture: ComponentFixture<ItemSubmitterComponent>;
@@ -20,9 +21,9 @@ const compIndex = 1;
let mockResultObject: PoolTask; let mockResultObject: PoolTask;
const rdSumbitter = new RemoteData(false, false, true, null, EPersonMock); const rdSumbitter = createSuccessfulRemoteDataObject(EPersonMock);
const workflowitem = Object.assign(new WorkflowItem(), { submitter: observableOf(rdSumbitter) }); const workflowitem = Object.assign(new WorkflowItem(), { submitter: observableOf(rdSumbitter) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('ItemSubmitterComponent', () => { describe('ItemSubmitterComponent', () => {

View File

@@ -11,6 +11,7 @@ import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.m
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: ClaimedMyDSpaceResultDetailElementComponent; let component: ClaimedMyDSpaceResultDetailElementComponent;
let fixture: ComponentFixture<ClaimedMyDSpaceResultDetailElementComponent>; let fixture: ComponentFixture<ClaimedMyDSpaceResultDetailElementComponent>;
@@ -49,9 +50,9 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rdItem = new RemoteData(false, false, true, null, item); const rdItem = createSuccessfulRemoteDataObject(item);
const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) }); const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('ClaimedMyDSpaceResultDetailElementComponent', () => { describe('ClaimedMyDSpaceResultDetailElementComponent', () => {

View File

@@ -11,6 +11,7 @@ import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: PoolMyDSpaceResultDetailElementComponent; let component: PoolMyDSpaceResultDetailElementComponent;
let fixture: ComponentFixture<PoolMyDSpaceResultDetailElementComponent>; let fixture: ComponentFixture<PoolMyDSpaceResultDetailElementComponent>;
@@ -49,9 +50,9 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rdItem = new RemoteData(false, false, true, null, item); const rdItem = createSuccessfulRemoteDataObject(item);
const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) }); const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('PoolMyDSpaceResultDetailElementComponent', () => { describe('PoolMyDSpaceResultDetailElementComponent', () => {

View File

@@ -10,6 +10,7 @@ import { WorkflowitemMyDSpaceResult } from '../../../object-collection/shared/wo
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: WorkflowitemMyDSpaceResultDetailElementComponent; let component: WorkflowitemMyDSpaceResultDetailElementComponent;
let fixture: ComponentFixture<WorkflowitemMyDSpaceResultDetailElementComponent>; let fixture: ComponentFixture<WorkflowitemMyDSpaceResultDetailElementComponent>;
@@ -48,7 +49,7 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rd = new RemoteData(false, false, true, null, item); const rd = createSuccessfulRemoteDataObject(item);
mockResultObject.indexableObject = Object.assign(new WorkflowItem(), { item: observableOf(rd) }); mockResultObject.indexableObject = Object.assign(new WorkflowItem(), { item: observableOf(rd) });
describe('WorkflowitemMyDSpaceResultDetailElementComponent', () => { describe('WorkflowitemMyDSpaceResultDetailElementComponent', () => {

View File

@@ -10,6 +10,7 @@ import { WorkspaceitemMyDSpaceResult } from '../../../object-collection/shared/w
import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: WorkspaceitemMyDSpaceResultDetailElementComponent; let component: WorkspaceitemMyDSpaceResultDetailElementComponent;
let fixture: ComponentFixture<WorkspaceitemMyDSpaceResultDetailElementComponent>; let fixture: ComponentFixture<WorkspaceitemMyDSpaceResultDetailElementComponent>;
@@ -48,7 +49,7 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rd = new RemoteData(false, false, true, null, item); const rd = createSuccessfulRemoteDataObject(item);
mockResultObject.indexableObject = Object.assign(new WorkspaceItem(), { item: observableOf(rd) }); mockResultObject.indexableObject = Object.assign(new WorkspaceItem(), { item: observableOf(rd) });
describe('WorkspaceitemMyDSpaceResultDetailElementComponent', () => { describe('WorkspaceitemMyDSpaceResultDetailElementComponent', () => {

View File

@@ -8,6 +8,7 @@ import { RemoteData } from '../../core/data/remote-data';
import { PaginatedList } from '../../core/data/paginated-list'; import { PaginatedList } from '../../core/data/paginated-list';
import { PageInfo } from '../../core/shared/page-info.model'; import { PageInfo } from '../../core/shared/page-info.model';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { createSuccessfulRemoteDataObject } from '../testing/utils';
describe('ObjectDetailComponent', () => { describe('ObjectDetailComponent', () => {
let comp: ObjectDetailComponent; let comp: ObjectDetailComponent;
@@ -27,7 +28,7 @@ describe('ObjectDetailComponent', () => {
{ ten: 10 } { ten: 10 }
]; ];
const pageInfo = Object.assign(new PageInfo(), {elementsPerPage: 1, totalElements: 10, totalPages: 10, currentPage: 1}) const pageInfo = Object.assign(new PageInfo(), {elementsPerPage: 1, totalElements: 10, totalPages: 10, currentPage: 1})
const mockRD = new RemoteData(false, false, true, null, new PaginatedList(pageInfo, testObjects)); const mockRD = createSuccessfulRemoteDataObject(new PaginatedList(pageInfo, testObjects));
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({

View File

@@ -8,9 +8,10 @@ import { PageInfo } from '../../../core/shared/page-info.model';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { createRelationshipsObservable } from '../../../+item-page/simple/item-types/shared/item.component.spec'; import { createRelationshipsObservable } from '../../../+item-page/simple/item-types/shared/item.component.spec';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../../testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: [], metadata: [],
relationships: createRelationshipsObservable() relationships: createRelationshipsObservable()
}); });

View File

@@ -12,9 +12,10 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search-
import { createRelationshipsObservable } from '../../../../+item-page/simple/item-types/shared/item.component.spec'; import { createRelationshipsObservable } from '../../../../+item-page/simple/item-types/shared/item.component.spec';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { MetadataMap } from '../../../../core/shared/metadata.models'; import { MetadataMap } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject$ } from '../../../testing/utils';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))), bitstreams: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
metadata: [], metadata: [],
relationships: createRelationshipsObservable() relationships: createRelationshipsObservable()
}); });

View File

@@ -11,6 +11,7 @@ import { ClaimedTask } from '../../../../core/tasks/models/claimed-task-object.m
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: ClaimedMyDSpaceResultListElementComponent; let component: ClaimedMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<ClaimedMyDSpaceResultListElementComponent>; let fixture: ComponentFixture<ClaimedMyDSpaceResultListElementComponent>;
@@ -49,9 +50,9 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rdItem = new RemoteData(false, false, true, null, item); const rdItem = createSuccessfulRemoteDataObject(item);
const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) }); const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject.indexableObject = Object.assign(new ClaimedTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('ClaimedMyDSpaceResultListElementComponent', () => { describe('ClaimedMyDSpaceResultListElementComponent', () => {

View File

@@ -11,6 +11,7 @@ import { PoolTask } from '../../../../core/tasks/models/pool-task-object.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: PoolMyDSpaceResultListElementComponent; let component: PoolMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<PoolMyDSpaceResultListElementComponent>; let fixture: ComponentFixture<PoolMyDSpaceResultListElementComponent>;
@@ -49,9 +50,9 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rdItem = new RemoteData(false, false, true, null, item); const rdItem = createSuccessfulRemoteDataObject(item);
const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) }); const workflowitem = Object.assign(new WorkflowItem(), { item: observableOf(rdItem) });
const rdWorkflowitem = new RemoteData(false, false, true, null, workflowitem); const rdWorkflowitem = createSuccessfulRemoteDataObject(workflowitem);
mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) }); mockResultObject.indexableObject = Object.assign(new PoolTask(), { workflowitem: observableOf(rdWorkflowitem) });
describe('PoolMyDSpaceResultListElementComponent', () => { describe('PoolMyDSpaceResultListElementComponent', () => {

View File

@@ -10,6 +10,7 @@ import { WorkflowitemMyDSpaceResult } from '../../../object-collection/shared/wo
import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model'; import { WorkflowItem } from '../../../../core/submission/models/workflowitem.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: WorkflowitemMyDSpaceResultListElementComponent; let component: WorkflowitemMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<WorkflowitemMyDSpaceResultListElementComponent>; let fixture: ComponentFixture<WorkflowitemMyDSpaceResultListElementComponent>;
@@ -48,7 +49,7 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rd = new RemoteData(false, false, true, null, item); const rd = createSuccessfulRemoteDataObject(item);
mockResultObject.indexableObject = Object.assign(new WorkflowItem(), { item: observableOf(rd) }); mockResultObject.indexableObject = Object.assign(new WorkflowItem(), { item: observableOf(rd) });
describe('WorkflowitemMyDSpaceResultListElementComponent', () => { describe('WorkflowitemMyDSpaceResultListElementComponent', () => {

View File

@@ -10,6 +10,7 @@ import { WorkspaceitemMyDSpaceResult } from '../../../object-collection/shared/w
import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model';
import { RemoteData } from '../../../../core/data/remote-data'; import { RemoteData } from '../../../../core/data/remote-data';
import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type';
import { createSuccessfulRemoteDataObject } from '../../../testing/utils';
let component: WorkspaceitemMyDSpaceResultListElementComponent; let component: WorkspaceitemMyDSpaceResultListElementComponent;
let fixture: ComponentFixture<WorkspaceitemMyDSpaceResultListElementComponent>; let fixture: ComponentFixture<WorkspaceitemMyDSpaceResultListElementComponent>;
@@ -48,7 +49,7 @@ const item = Object.assign(new Item(), {
] ]
} }
}); });
const rd = new RemoteData(false, false, true, null, item); const rd = createSuccessfulRemoteDataObject(item);
mockResultObject.indexableObject = Object.assign(new WorkspaceItem(), { item: observableOf(rd) }); mockResultObject.indexableObject = Object.assign(new WorkspaceItem(), { item: observableOf(rd) });
describe('WorkspaceitemMyDSpaceResultListElementComponent', () => { describe('WorkspaceitemMyDSpaceResultListElementComponent', () => {

View File

@@ -6,6 +6,7 @@ import { EPerson } from '../../core/eperson/models/eperson.model';
import { isNotEmpty } from '../empty.util'; import { isNotEmpty } from '../empty.util';
import { EPersonMock } from './eperson-mock'; import { EPersonMock } from './eperson-mock';
import { RemoteData } from '../../core/data/remote-data'; import { RemoteData } from '../../core/data/remote-data';
import { createSuccessfulRemoteDataObject$ } from './utils';
export class AuthRequestServiceStub { export class AuthRequestServiceStub {
protected mockUser: EPerson = EPersonMock; protected mockUser: EPerson = EPersonMock;
@@ -27,7 +28,7 @@ export class AuthRequestServiceStub {
if (this.validateToken(token)) { if (this.validateToken(token)) {
authStatusStub.authenticated = true; authStatusStub.authenticated = true;
authStatusStub.token = this.mockTokenInfo; authStatusStub.token = this.mockTokenInfo;
authStatusStub.eperson = observableOf(new RemoteData<EPerson>(false, false, true, undefined, this.mockUser)); authStatusStub.eperson = createSuccessfulRemoteDataObject$(this.mockUser);
} else { } else {
authStatusStub.authenticated = false; authStatusStub.authenticated = false;
} }
@@ -46,7 +47,7 @@ export class AuthRequestServiceStub {
if (this.validateToken(token)) { if (this.validateToken(token)) {
authStatusStub.authenticated = true; authStatusStub.authenticated = true;
authStatusStub.token = this.mockTokenInfo; authStatusStub.token = this.mockTokenInfo;
authStatusStub.eperson = observableOf(new RemoteData<EPerson>(false, false, true, undefined, this.mockUser)); authStatusStub.eperson = createSuccessfulRemoteDataObject$(this.mockUser);
} else { } else {
authStatusStub.authenticated = false; authStatusStub.authenticated = false;
} }

View File

@@ -4,6 +4,7 @@ import { AuthTokenInfo } from '../../core/auth/models/auth-token-info.model';
import { EPersonMock } from './eperson-mock'; import { EPersonMock } from './eperson-mock';
import { EPerson } from '../../core/eperson/models/eperson.model'; import { EPerson } from '../../core/eperson/models/eperson.model';
import { RemoteData } from '../../core/data/remote-data'; import { RemoteData } from '../../core/data/remote-data';
import { createSuccessfulRemoteDataObject$ } from './utils';
export class AuthServiceStub { export class AuthServiceStub {
@@ -20,7 +21,7 @@ export class AuthServiceStub {
authStatus.okay = true; authStatus.okay = true;
authStatus.authenticated = true; authStatus.authenticated = true;
authStatus.token = this.token; authStatus.token = this.token;
authStatus.eperson = observableOf(new RemoteData<EPerson>(false, false, true, undefined, EPersonMock)); authStatus.eperson = createSuccessfulRemoteDataObject$(EPersonMock);
return observableOf(authStatus); return observableOf(authStatus);
} else { } else {
console.log('error'); console.log('error');

View File

@@ -1,4 +1,7 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RemoteData } from '../../core/data/remote-data';
import { Observable, of as observableOf } from 'rxjs';
import { RemoteDataError } from '../../core/data/remote-data-error';
/** /**
* Returns true if a Native Element has a specified css class. * Returns true if a Native Element has a specified css class.
@@ -50,3 +53,45 @@ export function spyOnOperator(obj: any, prop: string): any {
return spyOn(obj, prop); return spyOn(obj, prop);
} }
export function createSuccessfulRemoteDataObject<T>(object: T): RemoteData<T>{
return new RemoteData(
false,
false,
true,
undefined,
object
);
}
export function createSuccessfulRemoteDataObject$<T>(object: T): Observable<RemoteData<T>>{
return observableOf(createSuccessfulRemoteDataObject(object));
}
export function createFailedRemoteDataObject<T>(object?: T, error?: RemoteDataError): RemoteData<T>{
return new RemoteData(
false,
false,
false,
error,
object
);
}
export function createFailedRemoteDataObject$<T>(object?: T, error?: RemoteDataError): Observable<RemoteData<T>>{
return observableOf(createFailedRemoteDataObject(object, error));
}
export function createPendingRemoteDataObject<T>(object?: T): RemoteData<T>{
return new RemoteData(
true,
true,
true,
null,
object
);
}
export function createPendingRemoteDataObject$<T>(object?: T): Observable<RemoteData<T>>{
return observableOf(createPendingRemoteDataObject(object));
}

View File

@@ -16,7 +16,7 @@ import { getMockTranslateService } from '../../shared/mocks/mock-translate.servi
import { RouterStub } from '../../shared/testing/router-stub'; import { RouterStub } from '../../shared/testing/router-stub';
import { ActivatedRouteStub } from '../../shared/testing/active-router-stub'; import { ActivatedRouteStub } from '../../shared/testing/active-router-stub';
import { mockSubmissionObject } from '../../shared/mocks/mock-submission'; import { mockSubmissionObject } from '../../shared/mocks/mock-submission';
import { RemoteData } from '../../core/data/remote-data'; import { createSuccessfulRemoteDataObject$ } from '../../shared/testing/utils';
describe('SubmissionEditComponent Component', () => { describe('SubmissionEditComponent Component', () => {
@@ -66,14 +66,9 @@ describe('SubmissionEditComponent Component', () => {
it('should init properly when a valid SubmissionObject has been retrieved', fakeAsync(() => { it('should init properly when a valid SubmissionObject has been retrieved', fakeAsync(() => {
route.testParams = { id: submissionId }; route.testParams = { id: submissionId };
submissionServiceStub.retrieveSubmission.and.returnValue(observableOf( submissionServiceStub.retrieveSubmission.and.returnValue(
new RemoteData( createSuccessfulRemoteDataObject$(submissionObject)
false, );
false,
true,
null,
submissionObject)
));
fixture.detectChanges(); fixture.detectChanges();
@@ -88,14 +83,8 @@ describe('SubmissionEditComponent Component', () => {
it('should redirect to mydspace when an empty SubmissionObject has been retrieved', fakeAsync(() => { it('should redirect to mydspace when an empty SubmissionObject has been retrieved', fakeAsync(() => {
route.testParams = { id: submissionId }; route.testParams = { id: submissionId };
submissionServiceStub.retrieveSubmission.and.returnValue(observableOf( submissionServiceStub.retrieveSubmission.and.returnValue(createSuccessfulRemoteDataObject$({})
new RemoteData( );
false,
false,
true,
null,
{})
));
fixture.detectChanges(); fixture.detectChanges();

View File

@@ -23,7 +23,10 @@ import { RemoteData } from '../../../core/data/remote-data';
import { PaginatedList } from '../../../core/data/paginated-list'; import { PaginatedList } from '../../../core/data/paginated-list';
import { PageInfo } from '../../../core/shared/page-info.model'; import { PageInfo } from '../../../core/shared/page-info.model';
import { Collection } from '../../../core/shared/collection.model'; import { Collection } from '../../../core/shared/collection.model';
import { createTestComponent } from '../../../shared/testing/utils'; import {
createSuccessfulRemoteDataObject$,
createTestComponent
} from '../../../shared/testing/utils';
import { cold } from 'jasmine-marbles'; import { cold } from 'jasmine-marbles';
const subcommunities = [Object.assign(new Community(), { const subcommunities = [Object.assign(new Community(), {
@@ -101,10 +104,8 @@ const mockCommunity = Object.assign(new Community(), {
language: 'en_US', language: 'en_US',
value: 'Community 1' value: 'Community 1'
}], }],
collections: observableOf(new RemoteData(true, true, true, collections: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [mockCommunity1Collection1, mockCommunity1Collection2])), //LOTTE
undefined, new PaginatedList(new PageInfo(), [mockCommunity1Collection1, mockCommunity1Collection2]))), subcommunities: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), subcommunities)),
subcommunities: observableOf(new RemoteData(true, true, true,
undefined, new PaginatedList(new PageInfo(), subcommunities))),
}); });
const mockCommunity2 = Object.assign(new Community(), { const mockCommunity2 = Object.assign(new Community(), {
@@ -116,14 +117,11 @@ const mockCommunity2 = Object.assign(new Community(), {
language: 'en_US', language: 'en_US',
value: 'Community 2' value: 'Community 2'
}], }],
collections: observableOf(new RemoteData(true, true, true, collections: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [mockCommunity2Collection1, mockCommunity2Collection2])),
undefined, new PaginatedList(new PageInfo(), [mockCommunity2Collection1, mockCommunity2Collection2]))), subcommunities: createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [])),
subcommunities: observableOf(new RemoteData(true, true, true,
undefined, new PaginatedList(new PageInfo(), []))),
}); });
const mockCommunityList = observableOf(new RemoteData(true, true, true, const mockCommunityList = createSuccessfulRemoteDataObject$(new PaginatedList(new PageInfo(), [mockCommunity, mockCommunity2]));
undefined, new PaginatedList(new PageInfo(), [mockCommunity, mockCommunity2])));
const mockCollectionList = [ const mockCollectionList = [
{ {

View File

@@ -6,9 +6,13 @@ import { async, ComponentFixture, inject, TestBed } from '@angular/core/testing'
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { DynamicCheckboxModel, DynamicFormControlEvent, DynamicFormControlEventType } from '@ng-dynamic-forms/core'; import {
DynamicCheckboxModel,
DynamicFormControlEvent,
DynamicFormControlEventType
} from '@ng-dynamic-forms/core';
import { createTestComponent } from '../../../shared/testing/utils'; import { createSuccessfulRemoteDataObject$, createTestComponent } from '../../../shared/testing/utils';
import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { NotificationsService } from '../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service-stub'; import { NotificationsServiceStub } from '../../../shared/testing/notifications-service-stub';
import { SubmissionService } from '../../submission.service'; import { SubmissionService } from '../../submission.service';
@@ -109,8 +113,7 @@ describe('SubmissionSectionLicenseComponent test suite', () => {
language: 'en_US', language: 'en_US',
value: 'Community 1-Collection 1' value: 'Community 1-Collection 1'
}], }],
license: observableOf(new RemoteData(false, false, true, license: createSuccessfulRemoteDataObject$(Object.assign(new License(), { text: licenseText }))
undefined, Object.assign(new License(), { text: licenseText })))
}); });
beforeEach(async(() => { beforeEach(async(() => {
@@ -193,8 +196,7 @@ describe('SubmissionSectionLicenseComponent test suite', () => {
}); });
it('should init section properly', () => { it('should init section properly', () => {
collectionDataService.findById.and.returnValue(observableOf(new RemoteData(false, false, true, collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
undefined, mockCollection)));
sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([])); sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([]));
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false)); sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
spyOn(compAsAny, 'getSectionStatus'); spyOn(compAsAny, 'getSectionStatus');
@@ -219,8 +221,7 @@ describe('SubmissionSectionLicenseComponent test suite', () => {
granted: true granted: true
} as any; } as any;
collectionDataService.findById.and.returnValue(observableOf(new RemoteData(false, false, true, collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
undefined, mockCollection)));
sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([])); sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([]));
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false)); sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
spyOn(compAsAny, 'getSectionStatus'); spyOn(compAsAny, 'getSectionStatus');
@@ -239,8 +240,7 @@ describe('SubmissionSectionLicenseComponent test suite', () => {
}); });
it('should set section errors properly', () => { it('should set section errors properly', () => {
collectionDataService.findById.and.returnValue(observableOf(new RemoteData(false, false, true, collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
undefined, mockCollection)));
sectionsServiceStub.getSectionErrors.and.returnValue(observableOf(mockLicenseParsedErrors.license)); sectionsServiceStub.getSectionErrors.and.returnValue(observableOf(mockLicenseParsedErrors.license));
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false)); sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
@@ -259,8 +259,7 @@ describe('SubmissionSectionLicenseComponent test suite', () => {
granted: true granted: true
} as any; } as any;
collectionDataService.findById.and.returnValue(observableOf(new RemoteData(false, false, true, collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
undefined, mockCollection)));
sectionsServiceStub.getSectionErrors.and.returnValue(observableOf(mockLicenseParsedErrors.license)); sectionsServiceStub.getSectionErrors.and.returnValue(observableOf(mockLicenseParsedErrors.license));
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false)); sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
@@ -272,8 +271,7 @@ describe('SubmissionSectionLicenseComponent test suite', () => {
it('should have status true when checkbox is selected', () => { it('should have status true when checkbox is selected', () => {
collectionDataService.findById.and.returnValue(observableOf(new RemoteData(false, false, true, collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
undefined, mockCollection)));
sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([])); sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([]));
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false)); sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));
@@ -289,8 +287,7 @@ describe('SubmissionSectionLicenseComponent test suite', () => {
it('should have status false when checkbox is not selected', () => { it('should have status false when checkbox is not selected', () => {
collectionDataService.findById.and.returnValue(observableOf(new RemoteData(false, false, true, collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
undefined, mockCollection)));
sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([])); sectionsServiceStub.getSectionErrors.and.returnValue(observableOf([]));
sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false)); sectionsServiceStub.isSectionReadOnly.and.returnValue(observableOf(false));

View File

@@ -4,7 +4,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createTestComponent } from '../../../shared/testing/utils'; import { createSuccessfulRemoteDataObject$, createTestComponent } from '../../../shared/testing/utils';
import { SubmissionService } from '../../submission.service'; import { SubmissionService } from '../../submission.service';
import { SubmissionServiceStub } from '../../../shared/testing/submission-service-stub'; import { SubmissionServiceStub } from '../../../shared/testing/submission-service-stub';
import { SectionsService } from '../sections.service'; import { SectionsService } from '../sections.service';
@@ -30,7 +30,6 @@ import { GroupEpersonService } from '../../../core/eperson/group-eperson.service
import { cold, hot } from 'jasmine-marbles'; import { cold, hot } from 'jasmine-marbles';
import { Collection } from '../../../core/shared/collection.model'; import { Collection } from '../../../core/shared/collection.model';
import { ResourcePolicy } from '../../../core/shared/resource-policy.model'; import { ResourcePolicy } from '../../../core/shared/resource-policy.model';
import { RemoteData } from '../../../core/data/remote-data';
import { ConfigData } from '../../../core/config/config-data'; import { ConfigData } from '../../../core/config/config-data';
import { PageInfo } from '../../../core/shared/page-info.model'; import { PageInfo } from '../../../core/shared/page-info.model';
import { Group } from '../../../core/eperson/models/group.model'; import { Group } from '../../../core/eperson/models/group.model';
@@ -180,24 +179,17 @@ describe('SubmissionSectionUploadComponent test suite', () => {
submissionServiceStub.getSubmissionObject.and.returnValue(observableOf(submissionState)); submissionServiceStub.getSubmissionObject.and.returnValue(observableOf(submissionState));
collectionDataService.findById.and.returnValue(observableOf( collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
new RemoteData(false, false, true,
undefined, mockCollection)));
collectionDataService.findByHref.and.returnValue(observableOf( collectionDataService.findByHref.and.returnValue(createSuccessfulRemoteDataObject$(mockDefaultAccessCondition));
new RemoteData(false, false, true,
undefined, mockDefaultAccessCondition)
));
uploadsConfigService.getConfigByHref.and.returnValue(observableOf( uploadsConfigService.getConfigByHref.and.returnValue(observableOf(
new ConfigData(new PageInfo(), mockUploadConfigResponse as any) new ConfigData(new PageInfo(), mockUploadConfigResponse as any)
)); ));
groupService.findById.and.returnValues( groupService.findById.and.returnValues(
observableOf(new RemoteData(false, false, true, createSuccessfulRemoteDataObject$(Object.assign(new Group(), mockGroup)),
undefined, Object.assign(new Group(), mockGroup))), createSuccessfulRemoteDataObject$(Object.assign(new Group(), mockGroup))
observableOf(new RemoteData(false, false, true,
undefined, Object.assign(new Group(), mockGroup)))
); );
bitstreamService.getUploadedFileList.and.returnValue(observableOf([])); bitstreamService.getUploadedFileList.and.returnValue(observableOf([]));
@@ -226,24 +218,17 @@ describe('SubmissionSectionUploadComponent test suite', () => {
submissionServiceStub.getSubmissionObject.and.returnValue(observableOf(submissionState)); submissionServiceStub.getSubmissionObject.and.returnValue(observableOf(submissionState));
collectionDataService.findById.and.returnValue(observableOf( collectionDataService.findById.and.returnValue(createSuccessfulRemoteDataObject$(mockCollection));
new RemoteData(false, false, true,
undefined, mockCollection)));
collectionDataService.findByHref.and.returnValue(observableOf( collectionDataService.findByHref.and.returnValue(createSuccessfulRemoteDataObject$(mockDefaultAccessCondition));
new RemoteData(false, false, true,
undefined, mockDefaultAccessCondition)
));
uploadsConfigService.getConfigByHref.and.returnValue(observableOf( uploadsConfigService.getConfigByHref.and.returnValue(observableOf(
new ConfigData(new PageInfo(), mockUploadConfigResponse as any) new ConfigData(new PageInfo(), mockUploadConfigResponse as any)
)); ));
groupService.findById.and.returnValues( groupService.findById.and.returnValues(
observableOf(new RemoteData(false, false, true, createSuccessfulRemoteDataObject$(Object.assign(new Group(), mockGroup)),
undefined, Object.assign(new Group(), mockGroup))), createSuccessfulRemoteDataObject$(Object.assign(new Group(), mockGroup))
observableOf(new RemoteData(false, false, true,
undefined, Object.assign(new Group(), mockGroup)))
); );
bitstreamService.getUploadedFileList.and.returnValue(observableOf(mockUploadFiles)); bitstreamService.getUploadedFileList.and.returnValue(observableOf(mockUploadFiles));

View File

@@ -18,7 +18,10 @@ import { MockActivatedRoute } from '../shared/mocks/mock-active-router';
import { GLOBAL_CONFIG } from '../../config'; import { GLOBAL_CONFIG } from '../../config';
import { HttpOptions } from '../core/dspace-rest-v2/dspace-rest-v2.service'; import { HttpOptions } from '../core/dspace-rest-v2/dspace-rest-v2.service';
import { SubmissionScopeType } from '../core/submission/submission-scope-type'; import { SubmissionScopeType } from '../core/submission/submission-scope-type';
import { mockSubmissionDefinition, mockSubmissionRestResponse } from '../shared/mocks/mock-submission'; import {
mockSubmissionDefinition,
mockSubmissionRestResponse
} from '../shared/mocks/mock-submission';
import { NotificationsService } from '../shared/notifications/notifications.service'; import { NotificationsService } from '../shared/notifications/notifications.service';
import { MockTranslateLoader } from '../shared/mocks/mock-translate-loader'; import { MockTranslateLoader } from '../shared/mocks/mock-translate-loader';
import { MOCK_SUBMISSION_CONFIG } from '../shared/testing/mock-submission-config'; import { MOCK_SUBMISSION_CONFIG } from '../shared/testing/mock-submission-config';
@@ -37,6 +40,11 @@ import {
import { RemoteData } from '../core/data/remote-data'; import { RemoteData } from '../core/data/remote-data';
import { RemoteDataError } from '../core/data/remote-data-error'; import { RemoteDataError } from '../core/data/remote-data-error';
import { throwError as observableThrowError } from 'rxjs/internal/observable/throwError'; import { throwError as observableThrowError } from 'rxjs/internal/observable/throwError';
import {
createFailedRemoteDataObject,
createSuccessfulRemoteDataObject,
createSuccessfulRemoteDataObject$
} from '../shared/testing/utils';
describe('SubmissionService test suite', () => { describe('SubmissionService test suite', () => {
const config = MOCK_SUBMISSION_CONFIG; const config = MOCK_SUBMISSION_CONFIG;
@@ -344,7 +352,7 @@ describe('SubmissionService test suite', () => {
beforeEach(async(() => { beforeEach(async(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
StoreModule.forRoot({submissionReducers} as any), StoreModule.forRoot({ submissionReducers } as any),
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
@@ -353,10 +361,10 @@ describe('SubmissionService test suite', () => {
}) })
], ],
providers: [ providers: [
{provide: GLOBAL_CONFIG, useValue: config}, { provide: GLOBAL_CONFIG, useValue: config },
{provide: Router, useValue: router}, { provide: Router, useValue: router },
{provide: SubmissionRestService, useValue: restService}, { provide: SubmissionRestService, useValue: restService },
{provide: ActivatedRoute, useValue: new MockActivatedRoute()}, { provide: ActivatedRoute, useValue: new MockActivatedRoute() },
NotificationsService, NotificationsService,
RouteService, RouteService,
SubmissionService, SubmissionService,
@@ -482,7 +490,7 @@ describe('SubmissionService test suite', () => {
})); }));
const result = service.getSubmissionObject('826'); const result = service.getSubmissionObject('826');
const expected = cold('b', {b: subState.objects[826]}); const expected = cold('b', { b: subState.objects[826] });
expect(result).toBeObservable(expected); expect(result).toBeObservable(expected);
}); });
@@ -495,7 +503,7 @@ describe('SubmissionService test suite', () => {
})); }));
const result = service.getActiveSectionId('826'); const result = service.getActiveSectionId('826');
const expected = cold('b', {b: 'keyinformation'}); const expected = cold('b', { b: 'keyinformation' });
expect(result).toBeObservable(expected); expect(result).toBeObservable(expected);
@@ -747,7 +755,7 @@ describe('SubmissionService test suite', () => {
describe('isSubmissionLoading', () => { describe('isSubmissionLoading', () => {
it('should return true/false when section is loading/not loading', () => { it('should return true/false when section is loading/not loading', () => {
const spy = spyOn(service, 'getSubmissionObject').and.returnValue(observableOf({isLoading: true})); const spy = spyOn(service, 'getSubmissionObject').and.returnValue(observableOf({ isLoading: true }));
let expected = cold('(b|)', { let expected = cold('(b|)', {
b: true b: true
@@ -755,7 +763,7 @@ describe('SubmissionService test suite', () => {
expect(service.isSubmissionLoading(submissionId)).toBeObservable(expected); expect(service.isSubmissionLoading(submissionId)).toBeObservable(expected);
spy.and.returnValue(observableOf({isLoading: false})); spy.and.returnValue(observableOf({ isLoading: false }));
expected = cold('(b|)', { expected = cold('(b|)', {
b: false b: false
@@ -841,11 +849,7 @@ describe('SubmissionService test suite', () => {
const result = service.retrieveSubmission('826'); const result = service.retrieveSubmission('826');
const expected = cold('(b|)', { const expected = cold('(b|)', {
b: new RemoteData( b: createSuccessfulRemoteDataObject(
false,
false,
true,
null,
mockSubmissionRestResponse[0]) mockSubmissionRestResponse[0])
}); });
@@ -862,12 +866,8 @@ describe('SubmissionService test suite', () => {
); );
service.retrieveSubmission('826').subscribe((r) => { service.retrieveSubmission('826').subscribe((r) => {
expect(r).toEqual(new RemoteData( expect(r).toEqual(createFailedRemoteDataObject(null,
false, new RemoteDataError(500, 'Internal Server Error', 'Error message')
false,
false,
new RemoteDataError(500, 'Internal Server Error', 'Error message'),
null
)) ))
}); });
}); });

View File

@@ -3,7 +3,15 @@ import { HttpHeaders } from '@angular/common/http';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { Observable, of as observableOf, Subscription, timer as observableTimer } from 'rxjs'; import { Observable, of as observableOf, Subscription, timer as observableTimer } from 'rxjs';
import { catchError, distinctUntilChanged, filter, find, first, map, startWith } from 'rxjs/operators'; import {
catchError,
distinctUntilChanged,
filter,
find,
first,
map,
startWith
} from 'rxjs/operators';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
@@ -43,6 +51,11 @@ import { WorkspaceitemSectionsObject } from '../core/submission/models/workspace
import { RemoteData } from '../core/data/remote-data'; import { RemoteData } from '../core/data/remote-data';
import { ErrorResponse } from '../core/cache/response.models'; import { ErrorResponse } from '../core/cache/response.models';
import { RemoteDataError } from '../core/data/remote-data-error'; import { RemoteDataError } from '../core/data/remote-data-error';
import {
createFailedRemoteDataObject$,
createSuccessfulRemoteDataObject,
createSuccessfulRemoteDataObject$
} from '../shared/testing/utils';
/** /**
* A service that provides methods used in submission process. * A service that provides methods used in submission process.
@@ -495,20 +508,12 @@ export class SubmissionService {
retrieveSubmission(submissionId): Observable<RemoteData<SubmissionObject>> { retrieveSubmission(submissionId): Observable<RemoteData<SubmissionObject>> {
return this.restService.getDataById(this.getSubmissionObjectLinkName(), submissionId).pipe( return this.restService.getDataById(this.getSubmissionObjectLinkName(), submissionId).pipe(
find((submissionObjects: SubmissionObject[]) => isNotUndefined(submissionObjects)), find((submissionObjects: SubmissionObject[]) => isNotUndefined(submissionObjects)),
map((submissionObjects: SubmissionObject[]) => new RemoteData( map((submissionObjects: SubmissionObject[]) => createSuccessfulRemoteDataObject(
false,
false,
true,
null,
submissionObjects[0])), submissionObjects[0])),
catchError((errorResponse: ErrorResponse) => { catchError((errorResponse: ErrorResponse) => {
return observableOf(new RemoteData( return createFailedRemoteDataObject$(null,
false, new RemoteDataError(errorResponse.statusCode, errorResponse.statusText, errorResponse.errorMessage)
false, )
false,
new RemoteDataError(errorResponse.statusCode, errorResponse.statusText, errorResponse.errorMessage),
null
))
}) })
); );
} }