Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removing resultSelectors (WIP) #3304

Merged
merged 10 commits into from
Mar 2, 2018
133 changes: 0 additions & 133 deletions spec/observables/forkJoin-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,22 +42,6 @@ describe('forkJoin', () => {
expectObservable(e2).toBe(expected2, {x: [null, 'b', '3', undefined]});
});

it('should join the last values of the provided observables with selector', () => {
function selector(x: string, y: string, z: string) {
return x + y + z;
}

const e1 = forkJoin(
hot('--a--b--c--d--|'),
hot('(b|)'),
hot('--1--2--3--|'),
selector
);
const expected = '--------------(x|)';

expectObservable(e1).toBe(expected, {x: 'db3'});
});

it('should accept single observable', () => {
const e1 = forkJoin(
hot('--a--b--c--d--|')
Expand All @@ -76,34 +60,6 @@ describe('forkJoin', () => {
expectObservable(e1).toBe(expected, {x: ['d']});
});

it('should accept single observable with selector', () => {
function selector(x: string) {
return x + x;
}

const e1 = forkJoin(
hot('--a--b--c--d--|'),
selector
);
const expected = '--------------(x|)';

expectObservable(e1).toBe(expected, {x: 'dd'});
});

it('should accept array of observable contains single with selector', () => {
function selector(x: string) {
return x + x;
}

const e1 = forkJoin(
[hot('--a--b--c--d--|')],
selector
);
const expected = '--------------(x|)';

expectObservable(e1).toBe(expected, {x: 'dd'});
});

it('should accept lowercase-o observables', () => {
const e1 = forkJoin(
hot('--a--b--c--d--|'),
Expand Down Expand Up @@ -153,22 +109,6 @@ describe('forkJoin', () => {
expectObservable(e1).toBe(expected, {x: ['d', 'b', '3']});
});

it('should accept array of observables with selector', () => {
function selector(x: string, y: string, z: string) {
return x + y + z;
}

const e1 = forkJoin(
[hot('--a--b--c--d--|'),
hot('(b|)'),
hot('--1--2--3--|')],
selector
);
const expected = '--------------(x|)';

expectObservable(e1).toBe(expected, {x: 'db3'});
});

it('should not emit if any of source observable is empty', () => {
const e1 = forkJoin(
hot('--a--b--c--d--|'),
Expand Down Expand Up @@ -244,34 +184,6 @@ describe('forkJoin', () => {
expectObservable(e1).toBe(expected);
});

it('should complete when any of source is empty with selector', () => {
function selector(x: string, y: string) {
return x + y;
}

const e1 = forkJoin(
hot('--a--b--c--d--|'),
hot('---------|'),
selector);
const expected = '---------|';

expectObservable(e1).toBe(expected);
});

it('should emit results by resultselector', () => {
function selector(x: string, y: string) {
return x + y;
}

const e1 = forkJoin(
hot('--a--b--c--d--|'),
hot('---2-----|'),
selector);
const expected = '--------------(x|)';

expectObservable(e1).toBe(expected, {x: 'd2'});
});

it('should raise error when any of source raises error with empty observable', () => {
const e1 = forkJoin(
hot('------#'),
Expand All @@ -290,20 +202,6 @@ describe('forkJoin', () => {
expectObservable(e1).toBe(expected);
});

it('should raise error when any of source raises error with selector with empty observable', () => {
function selector(x: string, y: string) {
return x + y;
}

const e1 = forkJoin(
hot('------#'),
hot('---------|'),
selector);
const expected = '------#';

expectObservable(e1).toBe(expected);
});

it('should raise error when source raises error', () => {
const e1 = forkJoin(
hot('------#'),
Expand All @@ -313,34 +211,6 @@ describe('forkJoin', () => {
expectObservable(e1).toBe(expected);
});

it('should raise error when source raises error with selector', () => {
function selector(x: string, y: string) {
return x + y;
}

const e1 = forkJoin(
hot('------#'),
hot('-------b-|'),
selector);
const expected = '------#';

expectObservable(e1).toBe(expected);
});

it('should raise error when the selector throws', () => {
function selector(x: string, y: string) {
throw 'error';
}

const e1 = forkJoin(
hot('--a-|'),
hot('---b-|'),
selector);
const expected = '-----#';

expectObservable(e1).toBe(expected);
});

it('should allow unsubscribing early and explicitly', () => {
const e1 = hot('--a--^--b--c---d-| ');
const e1subs = '^ ! ';
Expand Down Expand Up @@ -397,7 +267,6 @@ describe('forkJoin', () => {
let c: Promise<boolean>;
let d: Observable<string[]>;
let o1: Observable<[number, string, boolean, string[]]> = forkJoin(a, b, c, d);
let o2: Observable<boolean> = forkJoin(a, b, c, d, (aa, bb, cc, dd) => !!aa && !!bb && cc && !!dd.length);
/* tslint:enable:no-unused-variable */
});

Expand All @@ -406,7 +275,6 @@ describe('forkJoin', () => {
let a: Promise<number>[];
let o1: Observable<number[]> = forkJoin(a);
let o2: Observable<number[]> = forkJoin(...a);
let o3: Observable<number> = forkJoin(a, (...x) => x.length);
/* tslint:enable:no-unused-variable */
});

Expand All @@ -415,7 +283,6 @@ describe('forkJoin', () => {
let a: Observable<number>[];
let o1: Observable<number[]> = forkJoin(a);
let o2: Observable<number[]> = forkJoin(...a);
let o3: Observable<number> = forkJoin(a, (...x) => x.length);
/* tslint:enable:no-unused-variable */
});

Expand Down
136 changes: 1 addition & 135 deletions spec/operators/concatMap-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -538,41 +538,6 @@ describe('Observable.prototype.concatMap', () => {
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should concatMap many outer to inner arrays, using resultSelector', () => {
const e1 = hot('2-----4--------3--------2-------|');
const e1subs = '^ !';
const expected = '(44)--(8888)---(666)----(44)----|';

const result = e1.concatMap((value) => arrayRepeat(value, +value),
(x, y) => String(parseInt(x) + parseInt(y)));

expectObservable(result).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should concatMap many outer to inner arrays, and outer throws', () => {
const e1 = hot('2-----4--------3--------2-------#');
const e1subs = '^ !';
const expected = '(22)--(4444)---(333)----(22)----#';

const result = e1.concatMap((value) => arrayRepeat(value, +value));

expectObservable(result).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should concatMap many outer to inner arrays, resultSelector, outer throws', () => {
const e1 = hot('2-----4--------3--------2-------#');
const e1subs = '^ !';
const expected = '(44)--(8888)---(666)----(44)----#';

const result = e1.concatMap((value) => arrayRepeat(value, +value),
(x, y) => String(parseInt(x) + parseInt(y)));

expectObservable(result).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should mergeMap many outer to inner arrays, outer unsubscribed early', () => {
const e1 = hot('2-----4--------3--------2-------|');
const e1subs = '^ ! ';
Expand All @@ -585,19 +550,6 @@ describe('Observable.prototype.concatMap', () => {
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should concatMap many outer to inner arrays, resultSelector, outer unsubscribed', () => {
const e1 = hot('2-----4--------3--------2-------|');
const e1subs = '^ ! ';
const unsub = ' ! ';
const expected = '(44)--(8888)-- ';

const result = e1.concatMap((value) => arrayRepeat(value, +value),
(x, y) => String(parseInt(x) + parseInt(y)));

expectObservable(result, unsub).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should concatMap many outer to inner arrays, project throws', () => {
const e1 = hot('2-----4--------3--------2-------|');
const e1subs = '^ ! ';
Expand All @@ -615,45 +567,7 @@ describe('Observable.prototype.concatMap', () => {
expectObservable(result).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should concatMap many outer to inner arrays, resultSelector throws', () => {
const e1 = hot('2-----4--------3--------2-------|');
const e1subs = '^ ! ';
const expected = '(44)--(8888)---# ';

const result = e1.concatMap((value) => arrayRepeat(value, +value),
(inner, outer) => {
if (outer === '3') {
throw 'error';
}
return String(parseInt(outer) + parseInt(inner));
});

expectObservable(result).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should concatMap many outer to inner arrays, resultSelector, project throws', () => {
const e1 = hot('2-----4--------3--------2-------|');
const e1subs = '^ ! ';
const expected = '(44)--(8888)---# ';

let invoked = 0;
const result = e1.concatMap((value) => {
invoked++;
if (invoked === 3) {
throw 'error';
}
return arrayRepeat(value, +value);
}, (inner, outer) => {
return String(parseInt(outer) + parseInt(inner));
});

expectObservable(result).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});

it('should map values to constant resolved promises and concatenate', (done) => {
it('should map values to constant resolved promises and concatenate', (done: MochaDone) => {
const source = Rx.Observable.from([4, 3, 2, 1]);
const project = (value: number) => Observable.from(Promise.resolve(42));

Expand Down Expand Up @@ -714,52 +628,4 @@ describe('Observable.prototype.concatMap', () => {
done(new Error('Subscriber complete handler not supposed to be called.'));
});
});

it('should concatMap values to resolved promises with resultSelector', (done) => {
const source = Rx.Observable.from([4, 3, 2, 1]);
const resultSelectorCalledWith: number[][] = [];
const project = (value: number, index: number) => Observable.from((Promise.resolve([value, index])));

const resultSelector = function (outerVal: any, innerVal: any, outerIndex: any, innerIndex: any): number {
resultSelectorCalledWith.push([].slice.call(arguments));
return 8;
};

const results: number[] = [];
const expectedCalls = [
[4, [4, 0], 0, 0],
[3, [3, 1], 1, 0],
[2, [2, 2], 2, 0],
[1, [1, 3], 3, 0]
];
source.concatMap(project, resultSelector).subscribe(
(x) => {
results.push(x);
}, (err) => {
done(new Error('Subscriber error handler not supposed to be called.'));
}, () => {
expect(results).to.deep.equal([8, 8, 8, 8]);
expect(resultSelectorCalledWith).to.deep.equal(expectedCalls);
done();
});
});

it('should concatMap values to rejected promises with resultSelector', (done) => {
const source = Rx.Observable.from([4, 3, 2, 1]);
const project = (value: number, index: number) => Observable.from(Promise.reject('' + value + '-' + index));

const resultSelector = () => {
throw 'this should not be called';
};

source.concatMap(project, resultSelector).subscribe(
(x) => {
done(new Error('Subscriber next handler not supposed to be called.'));
}, (err) => {
expect(err).to.deep.equal('4-0');
done();
}, () => {
done(new Error('Subscriber complete handler not supposed to be called.'));
});
});
});