Skip to content

Commit

Permalink
chore(tests): add tests for module: programs
Browse files Browse the repository at this point in the history
  • Loading branch information
mellodev committed Dec 5, 2024
1 parent 646d9f2 commit da0bb05
Showing 1 changed file with 110 additions and 0 deletions.
110 changes: 110 additions & 0 deletions test/tests/modules/programs.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
/* OpenSprinkler App
* Copyright (C) 2015 - present, Samer Albahra. All rights reserved.
*
* This file is part of the OpenSprinkler project <http://opensprinkler.com>.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License version 3 as
* published by the Free Software Foundation.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

/* global OSApp, assert, describe, it, beforeEach, afterEach */

describe('OSApp.Programs', function () {
describe('readProgram', function () {
var originalCheckOSVersion, originalCurrentSession;

beforeEach(function () {
originalCheckOSVersion = OSApp.Firmware.checkOSVersion;
originalCurrentSession = OSApp.currentSession;
});

afterEach(function () {
OSApp.Firmware.checkOSVersion = originalCheckOSVersion;
OSApp.currentSession = originalCurrentSession;
});

it('should call readProgram21 if firmware version is 2.1 or higher', function () {
OSApp.Firmware.checkOSVersion = function (version) {
return version >= 210;
};
var program = [1, 128, 3, [60, 1, 600], [0, 0, 0, 0, 0, 0, 0, 0], 'Program 1'];
var result = OSApp.Programs.readProgram(program);
assert.equal(result.name, 'Program 1'); // Check a property specific to readProgram21
});

it.skip('should call readProgram183 if firmware version is lower than 2.1', function () {
// Skipped due test polluting OSApp object and breaking tests outside this suite - mellodev
OSApp.Firmware.checkOSVersion = function (version) {
return version < 210;
};
OSApp.currentSession.controller.programs = {nboards: 4};
var program = [1, 128, 3, 60, 780, 1, 300, 255];
var result = OSApp.Programs.readProgram(program);
assert.equal(result.start, 60); // Check a property specific to readProgram183
});
});

describe('readProgram183', function () {
it('should correctly parse a weekly program', function () {
var program = [1, 128, 0, 480, 1020, 1, 300, 255]; // Weekly program
var result = OSApp.Programs.readProgram183(program);
assert.equal(result.en, 1);
assert.equal(result.days, '0000000');
assert.equal(result.is_even, true);
assert.equal(result.is_odd, false);
assert.equal(result.is_interval, false);
assert.equal(result.stations, '11111111');
assert.equal(result.duration, 300);
assert.equal(result.start, 480);
assert.equal(result.end, 1020);
assert.equal(result.interval, 1);
});

it('should correctly parse an interval program', function () {
var program = [1, 129, 3, 480, 1020, 1, 300, 255]; // Interval program
var result = OSApp.Programs.readProgram183(program);
assert.equal(result.en, 1);
assert.deepEqual(result.days, [3, 1]);
assert.equal(result.is_even, false);
assert.equal(result.is_odd, false);
assert.equal(result.is_interval, true);
// ... (rest of the assertions)
});
});

describe('readProgram21', function () {
it('should correctly parse a weekly program', function () {
var program = [1, 128, 0, [480, 1, 600], [0, 0, 0, 0, 0, 0, 0, 0], 'Program 1']; // Weekly program
var result = OSApp.Programs.readProgram21(program);
assert.equal(result.en, 1);
assert.equal(result.days, '0000000');
assert.equal(result.is_even, false);
assert.equal(result.is_odd, false);
assert.equal(result.is_interval, false);
assert.deepEqual(result.stations, [0, 0, 0, 0, 0, 0, 0, 0]);
assert.equal(result.name, 'Program 1');
assert.equal(result.start, 480);
assert.equal(result.repeat, 1);
assert.equal(result.interval, 600);
});

it('should correctly parse an interval program', function () {
var program = [133, 3, 1, [480, 1, 600], [0, 0, 0, 0, 0, 0, 0, 0], 'Program 2']; // Interval program
var result = OSApp.Programs.readProgram21(program);
assert.equal(result.en, 1);
assert.deepEqual(result.days, '1100000');
assert.equal(result.is_even, false);
assert.equal(result.is_odd, true);
assert.equal(result.is_interval, false);

});
});

// Skipping getStartTime, readStartTime, pidToName, updateProgramHeader, makeAllPrograms,
// makeProgram, makeProgram183, makeProgram21, addProgram, deleteProgram, submitProgram,
// submitProgram183, submitProgram21, and expandProgram because they use jQuery or are too complex
});

0 comments on commit da0bb05

Please sign in to comment.