Skip to content

Commit

Permalink
add some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
xboy2012 committed Jul 27, 2017
1 parent 000db9c commit 7ec499d
Show file tree
Hide file tree
Showing 7 changed files with 123 additions and 15 deletions.
15 changes: 7 additions & 8 deletions dist/es5/index.js
@@ -1,17 +1,13 @@
var _typeof2 = require('babel-helper-modules/lib/typeof');

var _typeof3 = _interopRequireDefault(_typeof2);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

//noinspection EqualityComparisonWithCoercionJS
var isNodeByProcess = typeof process != 'undefined' && process && Object.prototype.toString.call(process) == '[object process]';

//noinspection EqualityComparisonWithCoercionJS
var isNodeByModule = typeof module != 'undefined' && typeof undefined != 'undefined' && !!undefined && undefined.module != module;
var isNodeByModule = typeof module != 'undefined' && typeof this != 'undefined' && !!this && this.module != module;

var checkPromise = function checkPromise(Promise) {
var typeof_promise = typeof Promise === 'undefined' ? 'undefined' : (0, _typeof3.default)(Promise);
var typeof_promise = typeof Promise === 'undefined' ? 'undefined' : _typeof(Promise);

//noinspection EqualityComparisonWithCoercionJS
return !!(
Expand Down Expand Up @@ -83,8 +79,10 @@ var XDefer = function XDefer(Promise) {
var self = this;

var $$constructorSync = void 0;

if (Promise) {
if (!checkPromise(Promise)) {
throw Error('Not valid Promise');
}
$$constructorSync = isPromiseConstructorSync(Promise);
} else {
Promise = getPromise();
Expand Down Expand Up @@ -121,6 +119,7 @@ var XDefer = function XDefer(Promise) {
};
} else {
var _mainPromise = new Promise(function (_resolve_main) {
console.log(123);
_promise = new Promise(function (resolve, reject) {
_resolve = resolve;
_reject = reject;
Expand Down
6 changes: 4 additions & 2 deletions dist/es6/index.js
Expand Up @@ -11,7 +11,6 @@ const isNodeByModule =
!!this &&
this.module != module;


const checkPromise = (Promise) => {
let typeof_promise = typeof(Promise);

Expand Down Expand Up @@ -100,8 +99,10 @@ const XDefer = function(Promise) {
const self = this;

let $$constructorSync;

if(Promise) {
if(!checkPromise(Promise)) {
throw Error('Not valid Promise');
}
$$constructorSync = isPromiseConstructorSync(Promise);
} else {
Promise = getPromise();
Expand Down Expand Up @@ -138,6 +139,7 @@ const XDefer = function(Promise) {
};
} else {
let _mainPromise = new Promise((_resolve_main) => {
console.log(123);
_promise = new Promise((resolve, reject) => {
_resolve = resolve;
_reject = reject;
Expand Down
4 changes: 2 additions & 2 deletions gulpfile.babel.js
Expand Up @@ -18,8 +18,8 @@ const output_es5 = () => {
return new Promise((resolve, reject) => {
babel.transformFile(`${ROOT_DIR}/dist/es6/index.js`, {
//ast: false
// babelrc: false,
// presets: ["es2015"],
babelrc: false,
presets: [["es2015", {modules: false}]],
// plugins: [
// "transform-remove-strict-mode"
// ]
Expand Down
8 changes: 7 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Expand Up @@ -31,6 +31,7 @@
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-plugin-transform-remove-strict-mode": "0.0.2",
"babel-preset-es2015": "^6.24.1",
"bluebird": "^3.5.0",
"coveralls": "^2.13.1",
"gulp": "github:gulpjs/gulp#4.0",
"istanbul": "^0.4.5",
Expand Down
6 changes: 4 additions & 2 deletions src/index.js
Expand Up @@ -11,7 +11,6 @@ const isNodeByModule =
!!this &&
this.module != module;


const checkPromise = (Promise) => {
let typeof_promise = typeof(Promise);

Expand Down Expand Up @@ -100,8 +99,10 @@ const XDefer = function(Promise) {
const self = this;

let $$constructorSync;

if(Promise) {
if(!checkPromise(Promise)) {
throw Error('Not valid Promise');
}
$$constructorSync = isPromiseConstructorSync(Promise);
} else {
Promise = getPromise();
Expand Down Expand Up @@ -138,6 +139,7 @@ const XDefer = function(Promise) {
};
} else {
let _mainPromise = new Promise((_resolve_main) => {
console.log(123);
_promise = new Promise((resolve, reject) => {
_resolve = resolve;
_reject = reject;
Expand Down
98 changes: 98 additions & 0 deletions test/test.js
@@ -1,8 +1,28 @@
var assert = require('assert');
var should = require('should/as-function');
var XDefer = require('../dist/es5');
var bluebird = require('bluebird');
var noop = function() {};


var AsyncPromise = function(fn) {

var promise;

var mainPromise = new bluebird(function(resolve) {
setTimeout(function() {
promise = new bluebird(fn);
resolve();
}, 100);
});

this.then = function(fn1, fn2) {
return mainPromise.then(function() {
return promise.then(fn1, fn2);
});
}
};

describe('XDefer#promise()', function() {
var defer = new XDefer();
var promise = defer.promise();
Expand Down Expand Up @@ -75,4 +95,82 @@ describe('XDefer.reject()', function() {
promise.then(null, noop);
should(promise).be.rejectedWith(error);
});
});

describe('new XDefer(...)', function() {
it('should Promise constructor be overwritten', function() {
var defer = new XDefer(bluebird);
var promise = defer.promise();
should(promise).be.instanceOf(bluebird);
});

it('should Promise resolve', function() {
var defer = new XDefer(bluebird);
var testValue = {};
defer.resolve(testValue);
var promise = defer.promise();
should(promise).be.fulfilledWith(testValue);
});

it('should Promise reject', function() {
var defer = new XDefer(bluebird);
var error = Error();
defer.reject(error);
var promise = defer.promise();

//prevent NodeJs warnings
promise.then(null, noop);
should(promise).be.rejectedWith(error);
});

it('should Promise constructor keep default', function() {
var defer = new XDefer();
var promise = defer.promise();
should(promise).be.instanceOf(Promise);
});


it('async constructor resolve', function() {
var defer = new XDefer(AsyncPromise);
var testValue = {};
defer.resolve(testValue);
var promise = defer.promise();
should(promise).be.fulfilledWith(testValue);
});

it('async constructor reject', function() {
var defer = new XDefer(AsyncPromise);
var error = Error();
defer.reject(error);
var promise = defer.promise();

//prevent NodeJs warnings
promise.then(null, noop);
should(promise).be.rejectedWith(error);
});

it('invalid constructor should throw', function() {
var StupidPromise = 123;

should(function() {
new XDefer(StupidPromise);
}).be.throw();
});
});

describe('XDefer.setPromise()', function() {
it('should new Promise use the specified constructor', function() {
XDefer.setPromise(bluebird);
var defer = new XDefer();
var promise = defer.promise();
should(promise).be.instanceOf(bluebird);
});

it('invalid constructor should throw', function() {
var StupidPromise = 123;

should(function() {
XDefer.setPromise(StupidPromise);
}).be.throw();
});
});

0 comments on commit 7ec499d

Please sign in to comment.