Skip to content

Commit

Permalink
test(AsyncSubject): add more test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
luisgabriel authored and benlesh committed Dec 4, 2015
1 parent b3486b2 commit d2e6318
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions spec/subjects/async-subject-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@ describe('AsyncSubject', function () {
expect(observer.results).toEqual([2, 'done']);
});

it('should emit the last value when subscribing after complete', function () {
var subject = new AsyncSubject();
var observer = new TestObserver();

subject.next(1);
subject.next(2);
subject.complete();

subject.subscribe(observer);
expect(observer.results).toEqual([2, 'done']);
});

it('should keep emitting the last value to subsequent subscriptions', function () {
var subject = new AsyncSubject();
var observer = new TestObserver();
Expand All @@ -46,6 +58,40 @@ describe('AsyncSubject', function () {
expect(observer.results).toEqual([2, 'done']);
});

it('should not emit values after complete', function () {
var subject = new AsyncSubject();
var observer = new TestObserver();

subject.subscribe(observer);

subject.next(1);
expect(observer.results).toEqual([]);
subject.next(2);
expect(observer.results).toEqual([]);
subject.complete();
expect(observer.results).toEqual([2, 'done']);
subject.next(3);
expect(observer.results).toEqual([2, 'done']);
});

it('should not emit values if unsubscribed before complete', function () {
var subject = new AsyncSubject();
var observer = new TestObserver();
var subscription = subject.subscribe(observer);

subject.next(1);
expect(observer.results).toEqual([]);
subject.next(2);
expect(observer.results).toEqual([]);

subscription.unsubscribe();

subject.next(3);
expect(observer.results).toEqual([]);
subject.complete();
expect(observer.results).toEqual([]);
});

it('should just complete if no value has been nexted into it', function () {
var subject = new AsyncSubject();
var observer = new TestObserver();
Expand Down Expand Up @@ -81,4 +127,22 @@ describe('AsyncSubject', function () {
subject.error(new Error('bad'));
expect(observer.results).toEqual([new Error('bad')]);
});

it('should keep emitting error to subsequent subscriptions', function () {
var subject = new AsyncSubject();
var observer = new TestObserver();
var subscription = subject.subscribe(observer);

subject.next(1);
expect(observer.results).toEqual([]);

subject.error(new Error('bad'));
expect(observer.results).toEqual([new Error('bad')]);

subject.unsubscribe();

observer.results = [];
subject.subscribe(observer);
expect(observer.results).toEqual([new Error('bad')]);
});
});

0 comments on commit d2e6318

Please sign in to comment.