UNPKG

node-red-contrib-light-scheduler

Version:

Light Scheduler is a node-red node that provides a weekly schedule, and is mainly focused on controlling light in home automation scenarios.

102 lines (75 loc) 2.56 kB
var { isItDark, getElevation } = require('./isitdark.js'); var tk = require('timekeeper'); // Global mock for node var node = {sunElevationThreshold: 0.5}; node.warn = function() { }; test('Dark when no position is configured.', () => { var result = isItDark(node); expect(result).toBe(true); }); test('Zero elevation when no position is configured.', () => { var result = getElevation(node); expect(result).toBe(0); }); test('Sweden 21/8 2017', () => { node.settings = {latitude: 59.3322189, longitude: 18.0631894}; var time = new Date(1503309600000); // Monday, August 21, 2017 12:00:00 PM GMT+02:00 tk.freeze(time); var result = isItDark(node); expect(result).toBe(false); var time = new Date(1503342000000); // Monday, August 21, 2017 9:00:00 PM GMT+02:00 tk.freeze(time); var result = isItDark(node); expect(result).toBe(true); tk.reset(); }); test('Sweden 24/12 2017', () => { node.settings = {latitude: 59.3322189, longitude: 18.0631894}; var time = new Date(1514113200000); // Sunday, December 24, 2017 12:00:00 PM GMT+01:00 tk.freeze(time); var result = isItDark(node); expect(result).toBe(false); var time = new Date(1514124000000); // Sunday, December 24, 2017 3:00:00 PM GMT+01:00 tk.freeze(time); var result = isItDark(node); expect(result).toBe(true); tk.reset(); }); test('Sweden 01/12 2017', () => { node.settings = {latitude: 63.2806334, longitude: 18.7371558}; // Ornskoldsvik! var time = new Date(1512110924000); // fredag 1 december 2017 kl. 07:48:44 GMT+01:00 tk.freeze(time); var result = isItDark(node); expect(result).toBe(true); var time = new Date(1512126000000); // fredag 1 december 2017 kl. 12:00:00 GMT+01:00 tk.freeze(time); var result = isItDark(node); expect(result).toBe(false); tk.reset(); }); test('24h night in Kiruna', () => { node.settings = {latitude: 67.8636816, longitude: 20.1893403}; // Kiruna var ts = 1514070000000; while (ts <= 1514156400000) { var time = new Date(ts); tk.freeze(time); expect(isItDark(node)).toBe(true); ts = ts + 1*60*1000; // Check even minutes } tk.reset(); }); test('24h day in Kiruna', () => { node.settings = {latitude: 67.8636816, longitude: 20.1893403}; // Kiruna var ts = 1498860000000; while (ts <= 1498946399000) { var time = new Date(ts); tk.freeze(time); expect(isItDark(node)).toBe(false); expect(getElevation(node)).toBeGreaterThan(0); ts = ts + 1*60*1000; // Check even minutes } tk.reset(); });