diff --git a/src/internal/Subject-spec.ts b/src/internal/Subject-spec.ts index b06a5f5a5e..ddf66478ea 100644 --- a/src/internal/Subject-spec.ts +++ b/src/internal/Subject-spec.ts @@ -426,10 +426,31 @@ describe('Subject', () => { expect(results).to.deep.equal(['a', 'C']); }); - it('should not next after error', () => { + it('should not error after completed', () => { const error = new Error('wut?'); + const subject = new Subject(); + const results: (string|Error)[] = []; + subject.subscribe(x => results.push(x), (err) => results.push(err), () => results.push('C')); + subject.next('a'); + subject.complete(); + subject.error(error); + expect(results).to.deep.equal(['a', 'C']); + }); + + it('should not complete after completed', () => { const subject = new Subject(); const results: string[] = []; + subject.subscribe(x => results.push(x), null, () => results.push('C')); + subject.next('a'); + subject.complete(); + subject.complete(); + expect(results).to.deep.equal(['a', 'C']); + }); + + it('should not next after error', () => { + const error = new Error('wut?'); + const subject = new Subject(); + const results: (string|Error)[] = []; subject.subscribe(x => results.push(x), (err) => results.push(err)); subject.next('a'); subject.error(error); @@ -437,6 +458,28 @@ describe('Subject', () => { expect(results).to.deep.equal(['a', error]); }); + it('should not error after error', () => { + const error = new Error('wut?'); + const subject = new Subject(); + const results: (string|Error)[] = []; + subject.subscribe(x => results.push(x), (err) => results.push(err)); + subject.next('a'); + subject.error(error); + subject.error(error); + expect(results).to.deep.equal(['a', error]); + }); + + it('should not complete after error', () => { + const error = new Error('wut?'); + const subject = new Subject(); + const results: (string|Error)[] = []; + subject.subscribe(x => results.push(x), (err) => results.push(err), () => results.push('C')); + subject.next('a'); + subject.error(error); + subject.complete(); + expect(results).to.deep.equal(['a', error]); + }); + describe('asObservable', () => { it('should hide subject', () => { const subject = new Subject();