taskbuffer/test/test.js

84 lines
10 KiB
JavaScript

"use strict";
/// <reference path="../ts/typings/main.d.ts" />
var taskbuffer = require("../dist/index");
var should = require("should");
var plugins = {
q: require("q")
};
// setup some testData to work with
var testTask;
var testTaskFunction = function () {
var done = plugins.q.defer();
console.log("main function executed!");
done.resolve();
return done.promise;
};
var testPreTask = new taskbuffer.Task({
taskFunction: function () {
console.log("preTask executed");
},
preTask: testTask
});
describe("taskbuffer", function () {
describe(".Task", function () {
it("new Task() should return a new task", function () {
testTask = new taskbuffer.Task({ taskFunction: testTaskFunction, preTask: testPreTask });
});
it("testTask should be and instance of Task", function () {
testTask.should.be.instanceof(taskbuffer.Task);
});
it("testTask.idle is true", function () {
if (!testTask.idle) {
throw new Error("testTask.idle is not true");
}
});
it("testTask.running is type boolean and initially false", function () {
testTask.running.should.be.type("boolean");
testTask.running.should.be.false();
});
it("testTask.trigger() should return Promise", function () {
testTask.trigger().should.be.Promise();
});
it("testTask.trigger() returned Promise should be fullfilled", function (done) {
testTask.trigger()
.then(done);
});
it("should run a task without pre and afterTask", function (done) {
var localTestTask = new taskbuffer.Task({ taskFunction: testTaskFunction });
localTestTask.trigger().then(done);
});
});
describe("Taskchain", function () {
var testTaskchain;
var testTaskArray = [
new taskbuffer.Task({
name: "task1",
taskFunction: function () {
var done = plugins.q.defer();
console.log("Task1 run");
done.resolve();
return done.promise;
}
}),
new taskbuffer.Task({
name: "task2",
taskFunction: function () {
var done = plugins.q.defer();
console.log("Task2 run");
done.resolve();
return done.promise;
}
}),
];
it("should run tasks in sequence", function (done) {
testTaskchain = new taskbuffer.Taskchain({
name: "Taskchain1",
taskArray: testTaskArray
});
testTaskchain.trigger().then(done);
});
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LENBQUM7Z0JBQ2hCLElBQUksRUFBQyxPQUFPO2dCQUNaLFlBQVksRUFBQztvQkFDVCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3hCLENBQUM7YUFDSixDQUFDO1lBQ0YsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNoQixJQUFJLEVBQUMsT0FBTztnQkFDWixZQUFZLEVBQUU7b0JBQ1YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUN4QixDQUFDO2FBQ0osQ0FBQztTQUNMLENBQUM7UUFDRixFQUFFLENBQUMsOEJBQThCLEVBQUMsVUFBUyxJQUFJO1lBQzNDLGFBQWEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLElBQUksRUFBQyxZQUFZO2dCQUNqQixTQUFTLEVBQUMsYUFBYTthQUMxQixDQUFDLENBQUM7WUFDSCxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3RzL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cclxuaW1wb3J0IHRhc2tidWZmZXIgPSByZXF1aXJlKFwiLi4vZGlzdC9pbmRleFwiKTtcclxubGV0IHNob3VsZCA9IHJlcXVpcmUoXCJzaG91bGRcIik7XHJcbmxldCBwbHVnaW5zID0ge1xyXG4gICAgcTogcmVxdWlyZShcInFcIilcclxufVxyXG5cclxuLy8gc2V0dXAgc29tZSB0ZXN0RGF0YSB0byB3b3JrIHdpdGhcclxubGV0IHRlc3RUYXNrOnRhc2tidWZmZXIuVGFzaztcclxubGV0IHRlc3RUYXNrRnVuY3Rpb24gPSBmdW5jdGlvbigpe1xyXG4gICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgIGNvbnNvbGUubG9nKFwibWFpbiBmdW5jdGlvbiBleGVjdXRlZCFcIilcclxuICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcclxufVxyXG5sZXQgdGVzdFByZVRhc2sgPSBuZXcgdGFza2J1ZmZlci5UYXNrKHtcclxuICAgIHRhc2tGdW5jdGlvbjpmdW5jdGlvbigpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicHJlVGFzayBleGVjdXRlZFwiKTtcclxuICAgIH0sXHJcbiAgICBwcmVUYXNrOnRlc3RUYXNrXHJcbn0pO1xyXG5cclxuZGVzY3JpYmUoXCJ0YXNrYnVmZmVyXCIsZnVuY3Rpb24oKXtcclxuICAgIGRlc2NyaWJlKFwiLlRhc2tcIixmdW5jdGlvbigpe1xyXG4gICAgICAgIGl0KFwibmV3IFRhc2soKSBzaG91bGQgcmV0dXJuIGEgbmV3IHRhc2tcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzayA9IG5ldyB0YXNrYnVmZmVyLlRhc2soe3Rhc2tGdW5jdGlvbjp0ZXN0VGFza0Z1bmN0aW9uLHByZVRhc2s6dGVzdFByZVRhc2t9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrIHNob3VsZCBiZSBhbmQgaW5zdGFuY2Ugb2YgVGFza1wiLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHRlc3RUYXNrLnNob3VsZC5iZS5pbnN0YW5jZW9mKHRhc2tidWZmZXIuVGFzayk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJ0ZXN0VGFzay5pZGxlIGlzIHRydWVcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBpZiAoIXRlc3RUYXNrLmlkbGUpe1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGVzdFRhc2suaWRsZSBpcyBub3QgdHJ1ZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrLnJ1bm5pbmcgaXMgdHlwZSBib29sZWFuIGFuZCBpbml0aWFsbHkgZmFsc2VcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzay5ydW5uaW5nLnNob3VsZC5iZS50eXBlKFwiYm9vbGVhblwiKTtcclxuICAgICAgICAgICAgdGVzdFRhc2sucnVubmluZy5zaG91bGQuYmUuZmFsc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrLnRyaWdnZXIoKSBzaG91bGQgcmV0dXJuIFByb21pc2VcIixmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB0ZXN0VGFzay50cmlnZ2VyKCkuc2hvdWxkLmJlLlByb21pc2UoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpdChcInRlc3RUYXNrLnRyaWdnZXIoKSByZXR1cm5lZCBQcm9taXNlIHNob3VsZCBiZSBmdWxsZmlsbGVkXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgICAgIHRlc3RUYXNrLnRyaWdnZXIoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oZG9uZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXQoXCJzaG91bGQgcnVuIGEgdGFzayB3aXRob3V0IHByZSBhbmQgYWZ0ZXJUYXNrXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgICAgIGxldCBsb2NhbFRlc3RUYXNrID0gbmV3IHRhc2tidWZmZXIuVGFzayh7dGFza0Z1bmN0aW9uOnRlc3RUYXNrRnVuY3Rpb259KTtcclxuICAgICAgICAgICAgbG9jYWxUZXN0VGFzay50cmlnZ2VyKCkudGhlbihkb25lKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgZGVzY3JpYmUoXCJUYXNrY2hhaW5cIixmdW5jdGlvbigpe1xyXG4gICAgICAgIGxldCB0ZXN0VGFza2NoYWluO1xyXG4gICAgICAgIGxldCB0ZXN0VGFza0FycmF5ID0gW1xyXG4gICAgICAgICAgICBuZXcgdGFza2J1ZmZlci5UYXNrKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJ0YXNrMVwiLFxyXG4gICAgICAgICAgICAgICAgdGFza0Z1bmN0aW9uOmZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlRhc2sxIHJ1blwiKTtcclxuICAgICAgICAgICAgICAgICAgICBkb25lLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgbmV3IHRhc2tidWZmZXIuVGFzayh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOlwidGFzazJcIixcclxuICAgICAgICAgICAgICAgIHRhc2tGdW5jdGlvbjogZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVGFzazIgcnVuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaXQoXCJzaG91bGQgcnVuIHRhc2tzIGluIHNlcXVlbmNlXCIsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgICAgIHRlc3RUYXNrY2hhaW4gPSBuZXcgdGFza2J1ZmZlci5UYXNrY2hhaW4oe1xyXG4gICAgICAgICAgICAgICAgbmFtZTpcIlRhc2tjaGFpbjFcIixcclxuICAgICAgICAgICAgICAgIHRhc2tBcnJheTp0ZXN0VGFza0FycmF5XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0ZXN0VGFza2NoYWluLnRyaWdnZXIoKS50aGVuKGRvbmUpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59KTsiXX0=