mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 11:50:00 +00:00
Fixes: #3256 BUT.. the testcase is inconclusive.. as the code FAILS without the fix, BUT somehow RETURNS 0 entries.. in real life run the node helper fails, and all calendar processing stops.
This commit is contained in:
parent
296df06c21
commit
b300191609
@ -31,6 +31,7 @@ _This release is scheduled to be released on 2024-01-01._
|
|||||||
- Fix cloneObject() function to respect RegExp (#3237)
|
- Fix cloneObject() function to respect RegExp (#3237)
|
||||||
- Fix newsfeed module for feeds using "a10:updated" tag (#3238)
|
- Fix newsfeed module for feeds using "a10:updated" tag (#3238)
|
||||||
- Fix issue template (#3167)
|
- Fix issue template (#3167)
|
||||||
|
- Fix #3256 filter out bad results from rrule.between
|
||||||
- Fix for failing unit test (#3254)
|
- Fix for failing unit test (#3254)
|
||||||
- Fix calendar events sometimes not respecting deleted events (#3250)
|
- Fix calendar events sometimes not respecting deleted events (#3250)
|
||||||
|
|
||||||
|
@ -283,8 +283,12 @@ const CalendarFetcherUtils = {
|
|||||||
futureLocal = futureMoment.toDate(); // future
|
futureLocal = futureMoment.toDate(); // future
|
||||||
}
|
}
|
||||||
Log.debug(`Search for recurring events between: ${pastLocal} and ${futureLocal}`);
|
Log.debug(`Search for recurring events between: ${pastLocal} and ${futureLocal}`);
|
||||||
const dates = rule.between(pastLocal, futureLocal, true, limitFunction);
|
let dates = rule.between(pastLocal, futureLocal, true, limitFunction);
|
||||||
Log.debug(`Title: ${event.summary}, with dates: ${JSON.stringify(dates)}`);
|
Log.debug(`Title: ${event.summary}, with dates: ${JSON.stringify(dates)}`);
|
||||||
|
dates = dates.filter((d) => {
|
||||||
|
if (JSON.stringify(d) === "null") return false;
|
||||||
|
else return true;
|
||||||
|
});
|
||||||
// The "dates" array contains the set of dates within our desired date range range that are valid
|
// The "dates" array contains the set of dates within our desired date range range that are valid
|
||||||
// for the recurrence rule. *However*, it's possible for us to have a specific recurrence that
|
// for the recurrence rule. *However*, it's possible for us to have a specific recurrence that
|
||||||
// had its date changed from outside the range to inside the range. For the time being,
|
// had its date changed from outside the range to inside the range. For the time being,
|
||||||
|
27
tests/configs/modules/calendar/bad_rrule.js
Normal file
27
tests/configs/modules/calendar/bad_rrule.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* MagicMirror² Test ics with out of date event causing bad return from rrule.between
|
||||||
|
*
|
||||||
|
* By Sam Detweiler
|
||||||
|
* MIT Licensed.
|
||||||
|
*/
|
||||||
|
let config = {
|
||||||
|
timeFormat: 12,
|
||||||
|
logLevel: ["INFO", "LOG", "WARN", "ERROR", "DEBUG"],
|
||||||
|
modules: [
|
||||||
|
{
|
||||||
|
module: "calendar",
|
||||||
|
position: "bottom_bar",
|
||||||
|
config: {
|
||||||
|
calendars: [
|
||||||
|
{
|
||||||
|
url: "http://localhost:8080/tests/mocks/bad_rrule.ics"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
/*************** DO NOT EDIT THE LINE BELOW ***************/
|
||||||
|
if (typeof module !== "undefined") {
|
||||||
|
module.exports = config;
|
||||||
|
}
|
20
tests/mocks/bad_rrule.ics
Normal file
20
tests/mocks/bad_rrule.ics
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
BEGIN:VCALENDAR
|
||||||
|
BEGIN:VEVENT
|
||||||
|
DTSTAMP:20210413T203456Z
|
||||||
|
UID:E689AEB8C02C4E2CADD8C7D3D303CEAD0
|
||||||
|
DTSTART;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20210415T190000
|
||||||
|
DTEND;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20210415T210000
|
||||||
|
CLASS:PUBLIC
|
||||||
|
LOCATION:albert heijn
|
||||||
|
SUMMARY:xxx xxxx
|
||||||
|
SEQUENCE:10
|
||||||
|
RRULE:FREQ=DAILY;UNTIL=20210418T170000Z
|
||||||
|
EXDATE;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20210417T190000
|
||||||
|
EXDATE;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20210416T190000
|
||||||
|
EXDATE;TZID="Amsterdam, Belgrade, Berlin, Brussels, Budapest, Madrid, Paris, Prague, Stockholm":20210415T190000
|
||||||
|
BEGIN:VALARM
|
||||||
|
ACTION:DISPLAY
|
||||||
|
TRIGGER;RELATED=START:-PT15M
|
||||||
|
END:VALARM
|
||||||
|
END:VEVENT
|
||||||
|
END:VCALENDAR
|
@ -0,0 +1,29 @@
|
|||||||
|
global.moment = require("moment-timezone");
|
||||||
|
|
||||||
|
const CalendarFetcherUtils = require("../../../../../modules/default/calendar/calendarfetcherutils");
|
||||||
|
|
||||||
|
describe("Calendar fetcher utils test", () => {
|
||||||
|
const defaultConfig = {
|
||||||
|
excludedEvents: []
|
||||||
|
};
|
||||||
|
|
||||||
|
describe("filterEvents", () => {
|
||||||
|
it("no events, not crash", () => {
|
||||||
|
const minusOneHour = moment().subtract(1, "hours").toDate();
|
||||||
|
const minusTwoHours = moment().subtract(2, "hours").toDate();
|
||||||
|
const plusOneHour = moment().add(1, "hours").toDate();
|
||||||
|
const plusTwoHours = moment().add(2, "hours").toDate();
|
||||||
|
|
||||||
|
const filteredEvents = CalendarFetcherUtils.filterEvents(
|
||||||
|
{
|
||||||
|
pastEvent: { type: "VEVENT", start: minusTwoHours, end: minusOneHour, summary: "pastEvent" },
|
||||||
|
ongoingEvent: { type: "VEVENT", start: minusOneHour, end: plusOneHour, summary: "ongoingEvent" },
|
||||||
|
upcomingEvent: { type: "VEVENT", start: plusOneHour, end: plusTwoHours, summary: "upcomingEvent" }
|
||||||
|
},
|
||||||
|
defaultConfig
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(filteredEvents.length).toEqual(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user