diff --git a/CHANGELOG.md b/CHANGELOG.md index 9443b6a7..42579494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ Thanks to: @kleinmantara (to be continued before release) ### Added - [calendar] Added config option "showEndsOnlyWithDuration" for default calendar +- [compliments] Added `specialDayUnique` config option, defaults to `false`. (#3465) ### Removed diff --git a/modules/default/compliments/compliments.js b/modules/default/compliments/compliments.js index 39e6c34d..c249f991 100644 --- a/modules/default/compliments/compliments.js +++ b/modules/default/compliments/compliments.js @@ -15,7 +15,8 @@ Module.register("compliments", { morningEndTime: 12, afternoonStartTime: 12, afternoonEndTime: 17, - random: true + random: true, + specialDayUnique: false }, lastIndexUsed: -1, // Set currentweather from module @@ -98,6 +99,10 @@ Module.register("compliments", { // Add compliments for special days for (let entry in this.config.compliments) { if (new RegExp(entry).test(date)) { + // Only display compliments configured for the day if specialDayUnique is set to true + if (this.config.specialDayUnique) { + compliments.length = 0; + } Array.prototype.push.apply(compliments, this.config.compliments[entry]); } } diff --git a/tests/configs/modules/compliments/compliments_specialDayUnique_false.js b/tests/configs/modules/compliments/compliments_specialDayUnique_false.js new file mode 100644 index 00000000..e4cb64c6 --- /dev/null +++ b/tests/configs/modules/compliments/compliments_specialDayUnique_false.js @@ -0,0 +1,22 @@ +let config = { + modules: [ + { + module: "compliments", + position: "middle_center", + config: { + specialDayUnique: false, + compliments: { + anytime: [ + "Typical message 1", + "Typical message 2", + "Typical message 3" + ], + "....-..-..": ["Special day message"] + } + } + } + ] +}; + +/*************** DO NOT EDIT THE LINE BELOW ***************/ +if (typeof module !== "undefined") { module.exports = config; } diff --git a/tests/configs/modules/compliments/compliments_specialDayUnique_true.js b/tests/configs/modules/compliments/compliments_specialDayUnique_true.js new file mode 100644 index 00000000..3d578611 --- /dev/null +++ b/tests/configs/modules/compliments/compliments_specialDayUnique_true.js @@ -0,0 +1,22 @@ +let config = { + modules: [ + { + module: "compliments", + position: "middle_center", + config: { + specialDayUnique: true, + compliments: { + anytime: [ + "Typical message 1", + "Typical message 2", + "Typical message 3" + ], + "....-..-..": ["Special day message"] + } + } + } + ] +}; + +/*************** DO NOT EDIT THE LINE BELOW ***************/ +if (typeof module !== "undefined") { module.exports = config; } diff --git a/tests/e2e/modules/compliments_spec.js b/tests/e2e/modules/compliments_spec.js index 0604dab4..95b34257 100644 --- a/tests/e2e/modules/compliments_spec.js +++ b/tests/e2e/modules/compliments_spec.js @@ -54,4 +54,28 @@ describe("Compliments module", () => { await expect(doTest(["Remote compliment file works!"])).resolves.toBe(true); }); }); + + describe("Feature specialDayUnique in compliments module", () => { + describe("specialDayUnique is false", () => { + beforeAll(async () => { + await helpers.startApplication("tests/configs/modules/compliments/compliments_specialDayUnique_false.js"); + await helpers.getDocument(); + }); + + it("compliments array can contain all values", async () => { + await expect(doTest(["Special day message", "Typical message 1", "Typical message 2", "Typical message 3"])).resolves.toBe(true); + }); + }); + + describe("specialDayUnique is true", () => { + beforeAll(async () => { + await helpers.startApplication("tests/configs/modules/compliments/compliments_specialDayUnique_true.js"); + await helpers.getDocument(); + }); + + it("compliments array contains only special value", async () => { + await expect(doTest(["Special day message"])).resolves.toBe(true); + }); + }); + }); });