cron-humanize
Version:
Cron to human translator
218 lines (182 loc) • 11.8 kB
JavaScript
;
var expect = require('chai').expect;
var testCases = require('./testCases.json');
var UnitDefinition = require('../dist/cron-humanize').UnitDefinition;
var parser = require('../dist/cron-humanize').default;
describe('getHoursString', function() {
it('should return a valid string when a fixed hour is given', function() {
var testCase = new UnitDefinition('*');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('every hour');
testCase = new UnitDefinition('10');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('at 10:00');
testCase = new UnitDefinition('5');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('at 05:00');
testCase = new UnitDefinition('23');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('at 23:00');
testCase = new UnitDefinition('0');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('at 00:00');
});
it('should return a valid string when a range is given', function() {
let testCase = new UnitDefinition('10-14');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during every hour from 10:00 through 14:00');
testCase = new UnitDefinition('5-9');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during every hour from 05:00 through 09:00');
testCase = new UnitDefinition('23-0');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during every hour from 23:00 through 00:00');
testCase = new UnitDefinition('1-2');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during every hour from 01:00 through 02:00');
testCase = new UnitDefinition('0-2');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during every hour from 00:00 through 02:00');
});
it('should return a valid string when multiple hours are given', function() {
let testCase = new UnitDefinition('10,11,14');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during the hours 10:00, 11:00 and 14:00');
testCase = new UnitDefinition('5,9');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during the hours 05:00 and 09:00');
testCase = new UnitDefinition('1,3,5,10,16');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during the hours 01:00, 03:00, 05:00, 10:00 and 16:00');
testCase = new UnitDefinition('1,2');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('during the hours 01:00 and 02:00');
});
it('should return a valid string when an increment is supplied', function() {
let testCase = new UnitDefinition('1/5');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('past every 5th hour starting at 01:00');
testCase = new UnitDefinition('10/1');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('past every hour starting at 10:00');
testCase = new UnitDefinition('0/3');
expect(parser.getHoursString(testCase)).to.be.a('string');
expect(parser.getHoursString(testCase)).to.equal('past every 3rd hour starting at 00:00');
});
it('should throw an error when input data is invalid', function() {
// expect(parser.getHoursString(new UnitDefinition('25'))).to.throwError();
// expect(parser.getHoursString(new UnitDefinition('23,24,25,26'))).to.throwError();
// expect(parser.getHoursString(new UnitDefinition('10-27'))).to.throwError();
// expect(parser.getHoursString(new UnitDefinition('25/1'))).to.throwError();
});
});
describe('getMinutesString', function() {
it('should return a valid string when fixed minutes are given', function() {
var testCase = new UnitDefinition('*');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every minute');
testCase = new UnitDefinition('10');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minute 10');
testCase = new UnitDefinition('5');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minute 5');
testCase = new UnitDefinition('23');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minute 23');
testCase = new UnitDefinition('0');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minute 0');
});
it('should return a valid string when a range is given', function() {
let testCase = new UnitDefinition('10-14');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every minute from 10 through 14');
testCase = new UnitDefinition('5-9');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every minute from 5 through 9');
testCase = new UnitDefinition('23-40');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every minute from 23 through 40');
testCase = new UnitDefinition('1-2');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every minute from 1 through 2');
testCase = new UnitDefinition('0-2');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every minute from 0 through 2');
});
it('should return a valid string when multiple minutes are given', function() {
let testCase = new UnitDefinition('10,11,14');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minutes 10, 11 and 14');
testCase = new UnitDefinition('5,9');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minutes 5 and 9');
testCase = new UnitDefinition('1,3,5,10,16');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minutes 1, 3, 5, 10 and 16');
testCase = new UnitDefinition('1,2');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('at minutes 1 and 2');
});
it('should return a valid string when an increment is supplied', function() {
let testCase = new UnitDefinition('1/5');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every 5th minute starting at minute 1');
testCase = new UnitDefinition('10/1');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every minute starting at minute 10');
testCase = new UnitDefinition('0/3');
expect(parser.getMinutesString(testCase)).to.be.a('string');
expect(parser.getMinutesString(testCase)).to.equal('every 3rd minute');
});
it('should throw an error when input data is invalid', function() {});
});
describe('getSecondsString', function() {
it('should return a valid string when fixed seconds is given', function() {});
it('should return a valid string when a range is given', function() {});
it('should return a valid string when multiple seconds are given', function() {});
it('should return a valid string when an increment is supplied', function() {});
it('should throw an error when input data is invalid', function() {});
});
describe('getTimeString', function() {
it('should return a valid string when a fixed time is given', function() {
let testSeconds = new UnitDefinition('10'),
testMinutes = new UnitDefinition('30'),
testHours = new UnitDefinition('14');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.be.a('string');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.equal('at 14:30:10');
testSeconds = new UnitDefinition('59');
testMinutes = new UnitDefinition('5');
testHours = new UnitDefinition('23');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.be.a('string');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.equal('at 23:05:59');
testSeconds = new UnitDefinition('11');
testMinutes = new UnitDefinition('0');
testHours = new UnitDefinition('2');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.be.a('string');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.equal('at 02:00:11');
});
it('should return a valid string when seconds are set to 0', function() {
let testSeconds = new UnitDefinition('0'),
testMinutes = new UnitDefinition('30'),
testHours = new UnitDefinition('14');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.be.a('string');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.equal('at 14:30');
testSeconds = new UnitDefinition('0');
testMinutes = new UnitDefinition('5');
testHours = new UnitDefinition('23');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.be.a('string');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.equal('at 23:05');
testSeconds = new UnitDefinition('0');
testMinutes = new UnitDefinition('11');
testHours = new UnitDefinition('2');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.be.a('string');
expect(parser.getTimeString(testSeconds, testMinutes, testHours)).to.equal('at 02:11');
});
it('should throw a an error if any of the parameters is invalid', function() {
// expect(parser.getTimeString('10', '10', '25')).to.throw(new Error('Invalid date parameters.'));
// expect(parser.getTimeString('10', '67', '22')).to.throw(new Error('Invalid date parameters.'));
// expect(parser.getTimeString('89', '10', '22')).to.throw(new Error('Invalid date parameters.'));
});
});