angular.js/test/ngScenario/FutureSpec.js
Igor Minar 87f5c6e5b7 refactor(fromJson): always use native JSON.parse
This breaks IE7 for which you can use polyfill:

https://github.com/douglascrockford/JSON-js

<!--[if lt IE 8]>
<script src="json2.min.js"></script>
<![endif]-->

or

http://bestiejs.github.com/json3/

<!--[if lt IE 8]>
<script src="json3.min.js"></script>
<![endif]-->
2012-03-28 16:30:38 -07:00

77 lines
2.4 KiB
JavaScript

'use strict';
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, 'foo');
expect(future.name).toEqual('test name');
expect(future.behavior).toEqual(behavior);
expect(future.line).toEqual('foo');
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();
});
});
});