Fix public holiday picker, add some tests, see #902

This commit is contained in:
Pieter Vander Vennet 2022-06-29 16:57:29 +02:00
parent 1773f851d1
commit f99685c47d
2 changed files with 29 additions and 3 deletions

View file

@ -316,12 +316,21 @@ export class OH {
}
}
/**
*
* OH.ParsePHRule("PH Off") // => {mode: "off"}
* OH.ParsePHRule("PH OPEN") // => {mode: "open"}
* OH.ParsePHRule("PH 10:00-12:00") // => {mode: " ", start: "10:00", end: "12:00"}
* OH.ParsePHRule(undefined) // => null
* OH.ParsePHRule(null) // => null
* OH.ParsePHRule("some random string") // => null
*/
public static ParsePHRule(str: string): {
mode: string,
start?: string,
end?: string
} {
if (str === undefined) {
if (str === undefined || str === null) {
return null
}
str = str.trim();
@ -330,13 +339,13 @@ export class OH {
}
str = str.trim();
if (str === "PH off") {
if (str.toLowerCase() === "ph off") {
return {
mode: "off"
}
}
if (str === "PH open") {
if (str.toLowerCase() === "ph open") {
return {
mode: "open"
}

View file

@ -26,6 +26,20 @@ export default class PublicHolidayInput extends InputElement<string> {
return true;
}
/**
*
* // should construct an element
* const html = new PublicHolidayInput().InnerConstructElement()
* html !== undefined // => true
*
* // should construct an element despite having an invalid input
* const html = new PublicHolidayInput(new UIEventSource("invalid")).InnerConstructElement()
* html !== undefined // => true
*
* // should construct an element despite having null as input
* const html = new PublicHolidayInput(new UIEventSource(null)).InnerConstructElement()
* html !== undefined // => true
*/
protected InnerConstructElement(): HTMLElement {
const dropdown = new DropDown(
Translations.t.general.opening_hours.open_during_ph.Clone(),
@ -75,6 +89,9 @@ export default class PublicHolidayInput extends InputElement<string> {
const value = this._value;
value.map(ph => OH.ParsePHRule(ph))
.addCallbackAndRunD(parsed => {
if(parsed === null){
return
}
mode.setData(parsed.mode)
startTime.setData(parsed.start)
endTime.setData(parsed.end)