Skip to content

Commit

Permalink
Adding symbol support and more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rorticus committed Dec 2, 2016
1 parent c4922da commit 838548b
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/Observable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export interface Subscriber {
}

export interface ObservableObject {
[Symbol.observable]: () => Observable;
[Symbol.observable]: () => any;
}

export function isObservable(item: any): item is ObservableObject {
Expand Down
63 changes: 62 additions & 1 deletion tests/unit/Observable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import * as registerSuite from 'intern!object';
import * as assert from 'intern/chai!assert';
import Observable from '../../src/Observable';
import Map from '../../src/Map';
import '../../src/Symbol';

registerSuite({
name: 'Observable',
Expand Down Expand Up @@ -131,7 +132,7 @@ registerSuite({
assert.isTrue(subscription.closed);
}));
},
'observable'(this: any) {
'Symbol.observable of Observable'(this: any) {
let dfd = this.async();

let original = Observable.of(1, 2, 3);
Expand All @@ -143,6 +144,66 @@ registerSuite({
}, undefined, dfd.callback(() => {
assert.deepEqual(values, [ 1, 2, 3 ]);
}));
},
'Symbol.observable of something else'(this: any) {
let dfd = this.async();

let obj = {
[Symbol.observable]: function () {
return 'test';
}
};

let source = Observable.from(obj);
let values: any[] = [];

source.subscribe((value: any) => {
values.push(value);
}, undefined, dfd.callback(() => {
assert.deepEqual(values, [ 'test' ]);
}));
}
},
'next': {
'normal'(this: any) {
const dfd = this.async();
const source = new Observable((observer) => {
observer.next(1);
observer.next(2);
});

let values: any[] = [];

source.subscribe((value: any) => {
values.push(value);
}, dfd.rejectOnError(() => {
assert.fail('Should not have errored');
}), dfd.rejectOnError(() => {
assert.fail('Should not have completed');
}));

setTimeout(dfd.callback(() => {
assert.deepEqual(values, [ 1, 2 ]);
}), 100);
},

'closed'(this: any) {
const dfd = this.async();
const source = new Observable((observer) => {
observer.next(1);
observer.complete();
observer.next(2);
});

let values: any[] = [];

source.subscribe((value: any) => {
values.push(value);
});

setTimeout(dfd.callback(() => {
assert.deepEqual(values, [ 1 ]);
}), 100);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion typings.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "dojo-shim",
"globalDependencies": {
"symbol-shim": "github:dojo/typings/custom/symbol-shim/symbol-shim.d.ts#9a0185f465a3febe2bb1ff3f1210f43e5f96c5d2"
"symbol-shim": "github:dojo/typings/custom/symbol-shim/symbol-shim.d.ts#003aa24b3448804a2c59e9a1d9740ca56e067e79"
},
"globalDevDependencies": {
"dojo2-dev": "github:dojo/typings/custom/dev/dev.d.ts#288d3a9868194f0e1ad6687371dffd1d96cb39a1"
Expand Down

0 comments on commit 838548b

Please sign in to comment.