Files
dspace-angular/src/app/+item-page/edit-item-page/edit-item-operators.spec.ts

40 lines
1.2 KiB
TypeScript

import {RemoteData} from '../../core/data/remote-data';
import {hot} from 'jasmine-marbles';
import {Item} from '../../core/shared/item.model';
import {findSuccessfulAccordingTo} from './edit-item-operators';
import {
createFailedRemoteDataObject,
createSuccessfulRemoteDataObject
} from '../../shared/testing/utils';
describe('findSuccessfulAccordingTo', () => {
let mockItem1;
let mockItem2;
let predicate;
beforeEach(() => {
mockItem1 = new Item();
mockItem1.isWithdrawn = true;
mockItem2 = new Item();
mockItem1.isWithdrawn = false;
predicate = (rd: RemoteData<Item>) => rd.payload.isWithdrawn;
});
it('should return first successful RemoteData Observable that complies to predicate', () => {
const testRD = {
a: createSuccessfulRemoteDataObject(undefined),
b: createFailedRemoteDataObject(mockItem1),
c: createSuccessfulRemoteDataObject(mockItem2),
d: createSuccessfulRemoteDataObject(mockItem1),
e: createSuccessfulRemoteDataObject(mockItem2),
};
const source = hot('abcde', testRD);
const result = source.pipe(findSuccessfulAccordingTo(predicate));
result.subscribe((value) => expect(value).toEqual(testRD.d));
});
});