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): { public static ParsePHRule(str: string): {
mode: string, mode: string,
start?: string, start?: string,
end?: string end?: string
} { } {
if (str === undefined) { if (str === undefined || str === null) {
return null return null
} }
str = str.trim(); str = str.trim();
@ -330,13 +339,13 @@ export class OH {
} }
str = str.trim(); str = str.trim();
if (str === "PH off") { if (str.toLowerCase() === "ph off") {
return { return {
mode: "off" mode: "off"
} }
} }
if (str === "PH open") { if (str.toLowerCase() === "ph open") {
return { return {
mode: "open" mode: "open"
} }

View file

@ -26,6 +26,20 @@ export default class PublicHolidayInput extends InputElement<string> {
return true; 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 { protected InnerConstructElement(): HTMLElement {
const dropdown = new DropDown( const dropdown = new DropDown(
Translations.t.general.opening_hours.open_during_ph.Clone(), Translations.t.general.opening_hours.open_during_ph.Clone(),
@ -75,6 +89,9 @@ export default class PublicHolidayInput extends InputElement<string> {
const value = this._value; const value = this._value;
value.map(ph => OH.ParsePHRule(ph)) value.map(ph => OH.ParsePHRule(ph))
.addCallbackAndRunD(parsed => { .addCallbackAndRunD(parsed => {
if(parsed === null){
return
}
mode.setData(parsed.mode) mode.setData(parsed.mode)
startTime.setData(parsed.start) startTime.setData(parsed.start)
endTime.setData(parsed.end) endTime.setData(parsed.end)