1
This commit is contained in:
713
nodejs/node_modules/node-schedule/test/convenience-method-test.js
generated
vendored
Executable file
713
nodejs/node_modules/node-schedule/test/convenience-method-test.js
generated
vendored
Executable file
@ -0,0 +1,713 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var sinon = require('sinon');
|
||||
var main = require('../package.json').main;
|
||||
var schedule = require('../' + main);
|
||||
|
||||
var clock;
|
||||
|
||||
module.exports = {
|
||||
setUp: function(cb) {
|
||||
clock = sinon.useFakeTimers();
|
||||
cb();
|
||||
},
|
||||
".scheduleJob": {
|
||||
"Returns Job instance": function(test) {
|
||||
var job = schedule.scheduleJob(new Date(Date.now() + 1000), function() {});
|
||||
|
||||
test.ok(job instanceof schedule.Job);
|
||||
|
||||
job.cancel();
|
||||
test.done();
|
||||
}
|
||||
},
|
||||
".scheduleJob(Date, fn)": {
|
||||
"Runs job once at some date": function(test) {
|
||||
test.expect(1);
|
||||
|
||||
schedule.scheduleJob(new Date(Date.now() + 3000), function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
},
|
||||
"Job doesn't emit initial 'scheduled' event": function(test) {
|
||||
var job = schedule.scheduleJob(new Date(Date.now() + 1000), function() {});
|
||||
|
||||
job.on('scheduled', function() {
|
||||
test.ok(false);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 1250);
|
||||
|
||||
clock.tick(1250);
|
||||
},
|
||||
"Won't run job if scheduled in the past": function(test) {
|
||||
test.expect(1);
|
||||
var job = schedule.scheduleJob(new Date(Date.now() - 3000), function() {
|
||||
test.ok(false);
|
||||
});
|
||||
|
||||
test.equal(job, null);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 1000);
|
||||
|
||||
clock.tick(1000);
|
||||
}
|
||||
},
|
||||
".scheduleJob(RecurrenceRule, fn)": {
|
||||
"Runs job at interval based on recur rule, repeating indefinitely": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
},
|
||||
"Job doesn't emit initial 'scheduled' event": function(test) {
|
||||
/*
|
||||
* If this was Job#schedule it'd fire 4 times.
|
||||
*/
|
||||
test.expect(3);
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = new schedule.scheduleJob(rule, function() {});
|
||||
|
||||
job.on('scheduled', function(runOnDate) {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
},
|
||||
"Doesn't invoke job if recur rule schedules it in the past": function(test) {
|
||||
test.expect(1);
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.year = 1960;
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(false);
|
||||
});
|
||||
|
||||
test.equal(job, null);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 1000);
|
||||
|
||||
clock.tick(1000);
|
||||
}
|
||||
},
|
||||
".scheduleJob({...}, fn)": {
|
||||
"Runs job at interval based on object, repeating indefinitely": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var job = new schedule.scheduleJob({
|
||||
second: null // Fire every second
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
},
|
||||
"Job doesn't emit initial 'scheduled' event": function(test) {
|
||||
/*
|
||||
* With Job#schedule this would be 3:
|
||||
* scheduled at time 0
|
||||
* scheduled at time 1000
|
||||
* scheduled at time 2000
|
||||
*/
|
||||
test.expect(2);
|
||||
|
||||
var job = schedule.scheduleJob({
|
||||
second: null // fire every second
|
||||
}, function() {});
|
||||
|
||||
job.on('scheduled', function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 2250);
|
||||
|
||||
clock.tick(2250);
|
||||
},
|
||||
"Doesn't invoke job if object schedules it in the past": function(test) {
|
||||
test.expect(1);
|
||||
|
||||
var job = schedule.scheduleJob({
|
||||
year: 1960
|
||||
}, function() {
|
||||
test.ok(false);
|
||||
});
|
||||
|
||||
test.equal(job, null);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 1000);
|
||||
|
||||
clock.tick(1000);
|
||||
}
|
||||
},
|
||||
".scheduleJob({...}, {...}, fn)": {
|
||||
"Callback called for each job if callback is provided": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var job = new schedule.scheduleJob({
|
||||
second: null // Fire every second
|
||||
}, function() {}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
}
|
||||
},
|
||||
".rescheduleJob(job, {...})": {
|
||||
"Reschedule jobs from object based to object based": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var job = new schedule.scheduleJob({
|
||||
second: null
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job, {
|
||||
minute: null
|
||||
});
|
||||
}, 3250);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 5000);
|
||||
|
||||
clock.tick(5000);
|
||||
},
|
||||
"Reschedule jobs from every minutes to every second": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var timeout = 60 * 1000;
|
||||
|
||||
var job = new schedule.scheduleJob({
|
||||
minute: null
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job, {
|
||||
second: null
|
||||
});
|
||||
}, timeout);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, timeout + 2250);
|
||||
|
||||
clock.tick(timeout + 2250);
|
||||
}
|
||||
},
|
||||
".rescheduleJob(job, Date)": {
|
||||
"Reschedule jobs from Date to Date": function(test) {
|
||||
test.expect(1);
|
||||
|
||||
var job = new schedule.scheduleJob(new Date(Date.now() + 3000), function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job, new Date(Date.now() + 5000));
|
||||
}, 1000);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 6150);
|
||||
|
||||
clock.tick(6150);
|
||||
},
|
||||
"Reschedule jobs that has been executed": function(test) {
|
||||
test.expect(2);
|
||||
|
||||
var job = new schedule.scheduleJob(new Date(Date.now() + 1000), function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job, new Date(Date.now() + 2000));
|
||||
}, 2000);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 5150);
|
||||
|
||||
clock.tick(5150);
|
||||
}
|
||||
},
|
||||
".rescheduleJob(job, RecurrenceRule)": {
|
||||
"Reschedule jobs from RecurrenceRule to RecurrenceRule": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var timeout = 60 * 1000;
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
var newRule = new schedule.RecurrenceRule();
|
||||
newRule.minute = null;
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job, newRule);
|
||||
}, 2250);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, timeout + 2250);
|
||||
|
||||
clock.tick(timeout + 2250);
|
||||
},
|
||||
"Reschedule jobs from RecurrenceRule to Date": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job, new Date(Date.now() + 2000));
|
||||
}, 2150);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 4250);
|
||||
|
||||
clock.tick(4250);
|
||||
},
|
||||
"Reschedule jobs from RecurrenceRule to {...}": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var timeout = 60 * 1000;
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job, {
|
||||
minute: null
|
||||
});
|
||||
}, 2150);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, timeout + 2150);
|
||||
|
||||
clock.tick(timeout + 2150);
|
||||
},
|
||||
"Reschedule jobs that is not available": function(test) {
|
||||
test.expect(4);
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(null, new Date(Date.now() + 2000));
|
||||
}, 2150);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 4250);
|
||||
|
||||
clock.tick(4250);
|
||||
}
|
||||
},
|
||||
'.rescheduleJob("job name", {...})': {
|
||||
"Reschedule jobs from object based to object based": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var job = new schedule.scheduleJob({
|
||||
second: null
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job.name, {
|
||||
minute: null
|
||||
});
|
||||
}, 3250);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 5000);
|
||||
|
||||
clock.tick(5000);
|
||||
},
|
||||
"Reschedule jobs from every minutes to every second": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var timeout = 60 * 1000;
|
||||
|
||||
var job = new schedule.scheduleJob({
|
||||
minute: null
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job.name, {
|
||||
second: null
|
||||
});
|
||||
}, timeout);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, timeout + 2250);
|
||||
|
||||
clock.tick(timeout + 2250);
|
||||
}
|
||||
},
|
||||
'.rescheduleJob("job name", Date)': {
|
||||
"Reschedule jobs from Date to Date": function(test) {
|
||||
test.expect(1);
|
||||
|
||||
var job = new schedule.scheduleJob(new Date(Date.now() + 3000), function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job.name, new Date(Date.now() + 5000));
|
||||
}, 1000);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 6150);
|
||||
|
||||
clock.tick(6150);
|
||||
},
|
||||
"Reschedule jobs that has been executed": function(test) {
|
||||
test.expect(2);
|
||||
|
||||
var job = new schedule.scheduleJob(new Date(Date.now() + 1000), function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job.name, new Date(Date.now() + 2000));
|
||||
}, 2000);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 5150);
|
||||
|
||||
clock.tick(5150);
|
||||
}
|
||||
},
|
||||
'.rescheduleJob("job name", RecurrenceRule)': {
|
||||
"Reschedule jobs from RecurrenceRule to RecurrenceRule": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var timeout = 60 * 1000;
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
var newRule = new schedule.RecurrenceRule();
|
||||
newRule.minute = null;
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job.name, newRule);
|
||||
}, 2250);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, timeout + 2250);
|
||||
|
||||
clock.tick(timeout + 2250);
|
||||
},
|
||||
"Reschedule jobs from RecurrenceRule to Date": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job.name, new Date(Date.now() + 2000));
|
||||
}, 2150);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 4250);
|
||||
|
||||
clock.tick(4250);
|
||||
},
|
||||
"Reschedule jobs from RecurrenceRule to {...}": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var timeout = 60 * 1000;
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob(job.name, {
|
||||
minute: null
|
||||
});
|
||||
}, 2150);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, timeout + 2150);
|
||||
|
||||
clock.tick(timeout + 2150);
|
||||
},
|
||||
"Reschedule jobs that is not available": function(test) {
|
||||
test.expect(4);
|
||||
|
||||
var rule = new schedule.RecurrenceRule();
|
||||
rule.second = null; // fire every second
|
||||
|
||||
var job = schedule.scheduleJob(rule, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.rescheduleJob("Blah", new Date(Date.now() + 2000));
|
||||
}, 2150);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel();
|
||||
test.done();
|
||||
}, 4250);
|
||||
|
||||
clock.tick(4250);
|
||||
}
|
||||
},
|
||||
".cancelJob(Job)": {
|
||||
"Prevents all future invocations of Job passed in": function(test) {
|
||||
test.expect(2);
|
||||
|
||||
var job = schedule.scheduleJob({
|
||||
second: null
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.cancelJob(job);
|
||||
}, 2250);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
},
|
||||
"Can cancel Jobs scheduled with Job#schedule": function(test) {
|
||||
test.expect(2);
|
||||
|
||||
var job = new schedule.Job(function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
job.schedule({
|
||||
second: null
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.cancelJob(job);
|
||||
}, 2250);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
},
|
||||
"Job emits 'canceled' event": function(test) {
|
||||
test.expect(1);
|
||||
|
||||
var job = schedule.scheduleJob({
|
||||
second: null
|
||||
}, function() {});
|
||||
|
||||
job.on('canceled', function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.cancelJob(job);
|
||||
test.done();
|
||||
}, 1250);
|
||||
|
||||
clock.tick(1250);
|
||||
}
|
||||
},
|
||||
'.cancelJob("job name")': {
|
||||
"Prevents all future invocations of Job identified by name": function(test) {
|
||||
test.expect(2);
|
||||
|
||||
var job = schedule.scheduleJob({
|
||||
second: null
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.cancelJob(job.name);
|
||||
}, 2250);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
},
|
||||
/*
|
||||
"Can cancel Jobs scheduled with Job#schedule": function(test) {
|
||||
test.expect(2);
|
||||
|
||||
var job = new schedule.Job(function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
job.schedule({
|
||||
second: null
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.cancelJob(job.name);
|
||||
}, 2250);
|
||||
|
||||
setTimeout(function() {
|
||||
test.done();
|
||||
}, 3250);
|
||||
},*/
|
||||
"Job emits 'canceled' event": function(test) {
|
||||
test.expect(1);
|
||||
|
||||
var job = schedule.scheduleJob({
|
||||
second: null
|
||||
}, function() {});
|
||||
|
||||
job.on('canceled', function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
schedule.cancelJob(job.name);
|
||||
test.done();
|
||||
}, 1250);
|
||||
|
||||
clock.tick(1250);
|
||||
},
|
||||
"Does nothing if no job found by that name": function(test) {
|
||||
test.expect(3);
|
||||
|
||||
var job = schedule.scheduleJob({
|
||||
second: null
|
||||
}, function() {
|
||||
test.ok(true);
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
// This cancel should not affect anything
|
||||
schedule.cancelJob('blah');
|
||||
}, 2250);
|
||||
|
||||
setTimeout(function() {
|
||||
job.cancel(); // prevent tests from hanging
|
||||
test.done();
|
||||
}, 3250);
|
||||
|
||||
clock.tick(3250);
|
||||
}
|
||||
},
|
||||
'.pendingInvocations()': {
|
||||
"Retrieves pendingInvocations of the job": function(test) {
|
||||
var job = schedule.scheduleJob(new Date(Date.now() + 1000), function() {});
|
||||
|
||||
test.ok(job instanceof schedule.Job);
|
||||
test.ok(job.pendingInvocations()[0].job);
|
||||
|
||||
job.cancel();
|
||||
test.done();
|
||||
}
|
||||
},
|
||||
tearDown: function(cb) {
|
||||
clock.restore();
|
||||
cb();
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user