1+ import { describe , it , expect , beforeEach , ddescribe , iit , xit , el ,
2+ SpyObject , AsyncTestCompleter , inject , IS_DARTIUM } from 'angular2/test_lib' ;
3+
4+ import { ObservableWrapper , Observable , ObservableController , PromiseWrapper } from 'angular2/src/facade/async' ;
5+
6+ export function main ( ) {
7+ describe ( 'Observable' , ( ) => {
8+ var obs :Observable ;
9+ var controller :ObservableController ;
10+
11+ beforeEach ( ( ) => {
12+ controller = ObservableWrapper . createController ( ) ;
13+ obs = ObservableWrapper . createObservable ( controller ) ;
14+ } ) ;
15+
16+ it ( "should call the next callback" , inject ( [ AsyncTestCompleter ] , ( async ) => {
17+ ObservableWrapper . subscribe ( obs , ( value ) => {
18+ expect ( value ) . toEqual ( 99 ) ;
19+ async . done ( ) ;
20+ } ) ;
21+
22+ ObservableWrapper . callNext ( controller , 99 ) ;
23+ } ) ) ;
24+
25+ it ( "should call the throw callback" , inject ( [ AsyncTestCompleter ] , ( async ) => {
26+ ObservableWrapper . subscribe ( obs , ( _ ) => { } , ( error ) => {
27+ expect ( error ) . toEqual ( "Boom" ) ;
28+ async . done ( ) ;
29+ } ) ;
30+ ObservableWrapper . callThrow ( controller , "Boom" ) ;
31+ } ) ) ;
32+
33+ it ( "should call the return callback" , inject ( [ AsyncTestCompleter ] , ( async ) => {
34+ ObservableWrapper . subscribe ( obs , ( _ ) => { } , ( _ ) => { } , ( ) => {
35+ async . done ( ) ;
36+ } ) ;
37+
38+ ObservableWrapper . callReturn ( controller ) ;
39+ } ) ) ;
40+
41+ it ( "should subscribe to the wrapper asynchronously" , ( ) => {
42+ var called = false ;
43+ ObservableWrapper . subscribe ( obs , ( value ) => {
44+ called = true ;
45+ } ) ;
46+
47+ ObservableWrapper . callNext ( controller , 99 ) ;
48+ expect ( called ) . toBe ( false ) ;
49+ } ) ;
50+
51+ if ( ! IS_DARTIUM ) {
52+ // See here: https://github.com/jhusain/observable-spec
53+ describe ( "Generator" , ( ) => {
54+ var generator ;
55+
56+ beforeEach ( ( ) => {
57+ generator = new SpyObject ( ) ;
58+ generator . spy ( "next" ) ;
59+ generator . spy ( "throw" ) ;
60+ generator . spy ( "return" ) ;
61+ } ) ;
62+
63+ it ( "should call next on the given generator" , inject ( [ AsyncTestCompleter ] , ( async ) => {
64+ generator . spy ( "next" ) . andCallFake ( ( value ) => {
65+ expect ( value ) . toEqual ( 99 ) ;
66+ async . done ( ) ;
67+ } ) ;
68+
69+ ObservableWrapper . subscribe ( obs , generator ) ;
70+ ObservableWrapper . callNext ( controller , 99 ) ;
71+ } ) ) ;
72+
73+ it ( "should call throw on the given generator" , inject ( [ AsyncTestCompleter ] , ( async ) => {
74+ generator . spy ( "throw" ) . andCallFake ( ( error ) => {
75+ expect ( error ) . toEqual ( "Boom" ) ;
76+ async . done ( ) ;
77+ } ) ;
78+ ObservableWrapper . subscribe ( obs , generator ) ;
79+ ObservableWrapper . callThrow ( controller , "Boom" ) ;
80+ } ) ) ;
81+
82+ it ( "should call return on the given generator" , inject ( [ AsyncTestCompleter ] , ( async ) => {
83+ generator . spy ( "return" ) . andCallFake ( ( ) => {
84+ async . done ( ) ;
85+ } ) ;
86+ ObservableWrapper . subscribe ( obs , generator ) ;
87+ ObservableWrapper . callReturn ( controller ) ;
88+ } ) ) ;
89+ } ) ;
90+ }
91+
92+ //TODO: vsavkin: add tests cases
93+ //should call dispose on the subscription if generator returns {done:true}
94+ //should call dispose on the subscription on throw
95+ //should call dispose on the subscription on return
96+ } ) ;
97+ }
98+
99+ //make sure rx observables are async
0 commit comments