diff --git a/modules/default/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js index a94e7269..3841223b 100644 --- a/modules/default/newsfeed/newsfeed.js +++ b/modules/default/newsfeed/newsfeed.js @@ -66,6 +66,7 @@ Module.register("newsfeed", { this.newsItems = []; this.loaded = false; + this.error = null; this.activeItem = 0; this.scrollPosition = 0; @@ -87,8 +88,10 @@ Module.register("newsfeed", { } this.loaded = true; + this.error = null; } else if (notification === "INCORRECT_URL") { - Log.error("Newsfeed Error. Incorrect url: " + payload.url); + this.error = "Newsfeed Error. Incorrect url: " + payload.url; + this.scheduleUpdateInterval(); } }, @@ -110,15 +113,20 @@ Module.register("newsfeed", { url: this.getActiveItemURL() }; } + if (this.error) { + return { + error: this.error + }; + } if (this.newsItems.length === 0) { return { loaded: false }; } - if (this.activeItem >= this.newsItems.length) { this.activeItem = 0; } + const item = this.newsItems[this.activeItem]; return { diff --git a/modules/default/newsfeed/newsfeed.njk b/modules/default/newsfeed/newsfeed.njk index 3d9ecc0b..f19807c6 100644 --- a/modules/default/newsfeed/newsfeed.njk +++ b/modules/default/newsfeed/newsfeed.njk @@ -6,7 +6,7 @@ {{ sourceTitle }}{% if config.showPublishDate %}, {% else %}: {% endif %} {% endif %} {% if config.showPublishDate %} - {{ publishDate }}: + {{ publishDate }}: {% endif %} {% endif %} @@ -21,8 +21,12 @@ {% endif %} +{% elseif error %} +
+ {{ error }} +
{% else %}
{{ "LOADING" | translate | safe }}
-{% endif %} \ No newline at end of file +{% endif %} diff --git a/modules/default/newsfeed/node_helper.js b/modules/default/newsfeed/node_helper.js index 8d365339..db7b82f3 100644 --- a/modules/default/newsfeed/node_helper.js +++ b/modules/default/newsfeed/node_helper.js @@ -38,7 +38,7 @@ module.exports = NodeHelper.create({ try { new URL(url); } catch (error) { - this.sendSocketNotification("INCORRECT_URL", { url: url }); + this.sendSocketNotification("INCORRECT_URL", { url }); return; } diff --git a/tests/configs/modules/newsfeed/default.js b/tests/configs/modules/newsfeed/default.js index 4355a2b5..94c9a47f 100644 --- a/tests/configs/modules/newsfeed/default.js +++ b/tests/configs/modules/newsfeed/default.js @@ -3,8 +3,7 @@ * By Rodrigo Ramírez Norambuena https://rodrigoramirez.com * MIT Licensed. */ - -var config = { +let config = { port: 8080, ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"], diff --git a/tests/configs/modules/newsfeed/incorrect_url.js b/tests/configs/modules/newsfeed/incorrect_url.js new file mode 100644 index 00000000..110a1968 --- /dev/null +++ b/tests/configs/modules/newsfeed/incorrect_url.js @@ -0,0 +1,38 @@ +/* Magic Mirror Test config newsfeed module + * + * MIT Licensed. + */ +let config = { + port: 8080, + ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"], + + language: "en", + timeFormat: 12, + units: "metric", + electronOptions: { + webPreferences: { + nodeIntegration: true, + enableRemoteModule: true + } + }, + + modules: [ + { + module: "newsfeed", + position: "bottom_bar", + config: { + feeds: [ + { + title: "Incorrect Url", + url: "this is not a valid url" + } + ] + } + } + ] +}; + +/*************** DO NOT EDIT THE LINE BELOW ***************/ +if (typeof module !== "undefined") { + module.exports = config; +} diff --git a/tests/e2e/modules/newsfeed_spec.js b/tests/e2e/modules/newsfeed_spec.js index 9c9ee2ca..78874cc6 100644 --- a/tests/e2e/modules/newsfeed_spec.js +++ b/tests/e2e/modules/newsfeed_spec.js @@ -8,7 +8,7 @@ const afterEach = global.afterEach; describe("Newsfeed module", function () { helpers.setupTimeout(this); - var app = null; + let app = null; beforeEach(function () { return helpers @@ -29,8 +29,18 @@ describe("Newsfeed module", function () { process.env.MM_CONFIG_FILE = "tests/configs/modules/newsfeed/default.js"; }); - it("show title newsfeed", function () { + it("should show the newsfeed title", function () { return app.client.waitUntilTextExists(".newsfeed .small", "Rodrigo Ramirez Blog", 10000).should.be.fulfilled; }); }); + + describe("Invalid configuration", function () { + before(function () { + process.env.MM_CONFIG_FILE = "tests/configs/modules/newsfeed/incorrect_url.js"; + }); + + it("should show invalid url warning", function () { + return app.client.waitUntilTextExists(".newsfeed .small", "Newsfeed Error. Incorrect url:", 10000).should.be.fulfilled; + }); + }); });