mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-20 00:10:26 +00:00
- "this" always means the current chain scope inside a DSL
- addFutureAction callbacks now take ($window, $document, done)
- $document has a special method elements() that uses the currently selected nodes in the document as defined by using() statements.
- $document.elements() allows placeholder insertion into selectors to make them more readable.
ex. $document.elements('input[name="$1"]', myVar) will substitute the value of myVar for $1 in the selector. Subsequent arguments are $2 and so on.
- $document.elements() results have a special method trigger(event) which should be used to events. This method implements some hacks to make sure browser UI controls update and the correct angular events fire.
- futures now allow custom formatting. By default any chain that results in a future can use toJson() or fromJson() to convert the future value to and from json. A custom parser can be provided with parsedWith(fn) where fn is a callback(value) that must return the parsed result.
Note: The entire widgets.html UI is now able to be controlled and asserted through DSL statements!!! Victory! :)
74 lines
2.3 KiB
JavaScript
74 lines
2.3 KiB
JavaScript
describe('angular.scenario.Future', function() {
|
|
var future;
|
|
|
|
it('should set the sane defaults', function() {
|
|
var behavior = function() {};
|
|
var future = new angular.scenario.Future('test name', behavior);
|
|
expect(future.name).toEqual('test name');
|
|
expect(future.behavior).toEqual(behavior);
|
|
expect(future.value).toBeUndefined();
|
|
expect(future.fulfilled).toBeFalsy();
|
|
expect(future.parser).toEqual(angular.identity);
|
|
});
|
|
|
|
it('should be fulfilled after execution and done callback', function() {
|
|
var future = new angular.scenario.Future('test name', function(done) {
|
|
done();
|
|
});
|
|
future.execute(angular.noop);
|
|
expect(future.fulfilled).toBeTruthy();
|
|
});
|
|
|
|
it('should take callback with (error, result) and forward', function() {
|
|
var future = new angular.scenario.Future('test name', function(done) {
|
|
done(10, 20);
|
|
});
|
|
future.execute(function(error, result) {
|
|
expect(error).toEqual(10);
|
|
expect(result).toEqual(20);
|
|
});
|
|
});
|
|
|
|
it('should use error as value if provided', function() {
|
|
var future = new angular.scenario.Future('test name', function(done) {
|
|
done(10, 20);
|
|
});
|
|
future.execute(angular.noop);
|
|
expect(future.value).toEqual(10);
|
|
});
|
|
|
|
it('should parse json with fromJson', function() {
|
|
var future = new angular.scenario.Future('test name', function(done) {
|
|
done(null, "{test: 'foo'}");
|
|
});
|
|
future.fromJson().execute(angular.noop);
|
|
expect(future.value).toEqual({test: 'foo'});
|
|
});
|
|
|
|
it('should convert to json with toJson', function() {
|
|
var future = new angular.scenario.Future('test name', function(done) {
|
|
done(null, {test: 'foo'});
|
|
});
|
|
future.toJson().execute(angular.noop);
|
|
expect(future.value).toEqual('{"test":"foo"}');
|
|
});
|
|
|
|
it('should convert with custom parser', function() {
|
|
var future = new angular.scenario.Future('test name', function(done) {
|
|
done(null, 'foo');
|
|
});
|
|
future.parsedWith(function(value) {
|
|
return value.toUpperCase();
|
|
}).execute(angular.noop);
|
|
expect(future.value).toEqual('FOO');
|
|
});
|
|
|
|
it('should pass error if parser fails', function() {
|
|
var future = new angular.scenario.Future('test name', function(done) {
|
|
done(null, '{');
|
|
});
|
|
future.fromJson().execute(function(error, result) {
|
|
expect(error).toBeDefined();
|
|
});
|
|
});
|
|
});
|