diff --git a/src/ui/date-picker-field.common.ts b/src/ui/date-picker-field.common.ts index d37c6dc..9dfa2b0 100644 --- a/src/ui/date-picker-field.common.ts +++ b/src/ui/date-picker-field.common.ts @@ -14,6 +14,7 @@ export class DatePickerFieldBase extends PickerFieldBase implements DatePickerFi public pickerDefaultDate: Date; public static datePickerOpenedEvent = "datePickerOpened"; public static datePickerClosedEvent = "datePickerClosed"; + public static datePickerCancelledEvent = "datePickerCancelled"; private _nativeLocale: any; private _nativeDateFormatter: any; @@ -62,13 +63,16 @@ export class DatePickerFieldBase extends PickerFieldBase implements DatePickerFi cancelButtonText: this.pickerCancelText }, style) .then((result: Date) => { + const args = { + eventName: DatePickerFieldBase.datePickerCancelledEvent, + object: this + }; + if (result) { this.date = result; + args.eventName = DatePickerFieldBase.datePickerClosedEvent; } - let args = { - eventName: DatePickerFieldBase.datePickerClosedEvent, - object: this - }; + this.notify(args); }) .catch((err) => { diff --git a/src/ui/time-picker-field.common.ts b/src/ui/time-picker-field.common.ts index 838e592..b49b8ee 100644 --- a/src/ui/time-picker-field.common.ts +++ b/src/ui/time-picker-field.common.ts @@ -12,6 +12,7 @@ export class TimePickerFieldBase extends PickerFieldBase implements TimePickerFi public pickerDefaultTime: Date; public static timePickerOpenedEvent = "timePickerOpened"; public static timePickerClosedEvent = "timePickerClosed"; + public static timePickerCancelledEvent = "timePickerCancelled"; private _nativeLocale: any; private _nativeTimeFormatter: any; @@ -47,13 +48,16 @@ export class TimePickerFieldBase extends PickerFieldBase implements TimePickerFi is24Hours: this.is24Hours(this._nativeTimeFormatter) }, style) .then((result: Date) => { + const args = { + eventName: TimePickerFieldBase.timePickerCancelledEvent, + object: this + }; + if (result) { this.time = result; + args.eventName = TimePickerFieldBase.timePickerClosedEvent; } - let args = { - eventName: TimePickerFieldBase.timePickerClosedEvent, - object: this - }; + this.notify(args); }) .catch((err) => { diff --git a/tests/e2e/helper.ts b/tests/e2e/helper.ts index 9f31734..3e86a10 100644 --- a/tests/e2e/helper.ts +++ b/tests/e2e/helper.ts @@ -1,4 +1,4 @@ -import { AppiumDriver, SearchOptions,createDriver, Direction, UIElement } from "nativescript-dev-appium"; +import { AppiumDriver, SearchOptions, createDriver, Direction, UIElement } from "nativescript-dev-appium"; import { runType } from "nativescript-dev-appium/lib/parser"; const optionsText = "Options"; @@ -10,12 +10,12 @@ let driver: AppiumDriver; const pickerWheels = await driver.findElementsByClassName(selector); let hourWheel = await (await pickerWheels[0]).text(); let minutesWheel = await (await pickerWheels[1]).text(); - if(!driver.isAndroid){ + if (!driver.isAndroid) { hourWheel = hourWheel.slice(0, hourWheel.indexOf(" ")); minutesWheel = minutesWheel.slice(0, minutesWheel.indexOf(" ")); } let timeString = hourWheel + ":" + minutesWheel; - if(format == 12){ + if (format === 12) { const amPmWheel = await (await pickerWheels[2]).text(); timeString += " " + amPmWheel; } @@ -25,18 +25,18 @@ let driver: AppiumDriver; export async function getPickerDate(driver: AppiumDriver) { let selector = driver.isAndroid ? "android.widget.EditText" : "XCUIElementTypePickerWheel"; const pickerWheels = await driver.findElementsByClassName(selector); - let monthWheel = await (await pickerWheels[0]).text() + let monthWheel = await (await pickerWheels[0]).text(); let month = monthWheel.toString().substring(0, 3); let dayWheel = await (await pickerWheels[1]).text(); - if(parseInt(dayWheel) < 10 && driver.isAndroid){ - dayWheel = dayWheel.substring(1,2); + if (parseInt(dayWheel) < 10 && driver.isAndroid) { + dayWheel = dayWheel.substring(1, 2); } const yearWheel = await (await pickerWheels[2]).text(); const dateString = month + " " + dayWheel + ", " + yearWheel; return dateString; } -export async function clickOkBtn(driver: AppiumDriver){ +export async function clickOkBtn(driver: AppiumDriver) { const okBtn = await driver.findElementByText("OK", SearchOptions.exact); await okBtn.click(); } diff --git a/tests/e2e/tests.e2e.ts b/tests/e2e/tests.e2e.ts index 21fefb4..3d37fda 100644 --- a/tests/e2e/tests.e2e.ts +++ b/tests/e2e/tests.e2e.ts @@ -9,19 +9,19 @@ const rimraf = require('rimraf'); const isSauceRun = isSauceLab; const deMonths = { - "Jan":"01", - "Feb":"02", + "Jan": "01", + "Feb": "02", "Mär": "03", "Apr": "04", - "Mai":"05", - "Jun":"06", - "Jul":"07", - "Aug":"08", - "Sep":"09", - "Okt":"10", - "Nov":"11", - "Dez":"12" -} + "Mai": "05", + "Jun": "06", + "Jul": "07", + "Aug": "08", + "Sep": "09", + "Okt": "10", + "Nov": "11", + "Dez": "12" +}; describe("DateTimePicker", () => { const defaultWaitTime = 5000; @@ -117,12 +117,12 @@ describe("DateTimePicker", () => { let selector = driver.isAndroid ? "android.widget.Button" : "Bestätigen"; let acceptBtn; let rejectBtn; - if(driver.isAndroid){ + if (driver.isAndroid) { let buttons = await driver.findElementsByClassName(selector); acceptBtn = buttons[7]; rejectBtn = buttons[6]; } - else{ + else { acceptBtn = await driver.findElementByText(selector, SearchOptions.contains); rejectBtn = await driver.findElementByText("Stornieren", SearchOptions.exact); } @@ -131,10 +131,10 @@ describe("DateTimePicker", () => { expect(rejectBtn).to.exist; expect(title).to.exist; await acceptBtn.click(); - let index = driver.isAndroid ? " " : "." + let index = driver.isAndroid ? " " : "."; let day = date.substring(0, date.indexOf(index)); let dayNum = parseInt(day); - if(!driver.isAndroid && dayNum < 10){ + if (!driver.isAndroid && dayNum < 10) { day = "0" + day; } let month = date.substring(date.indexOf(" ") + 1, date.indexOf(",")); @@ -167,13 +167,13 @@ describe("DateTimePicker", () => { await scrollToElement(driver, "TimePickerField", Direction.down); const bindingLabel = await driver.findElementByText("binding", SearchOptions.exact); expect(bindingLabel).to.exist; - let selector = driver.isAndroid ? "android.widget.EditText" : "XCUIElementTypeTextField" + let selector = driver.isAndroid ? "android.widget.EditText" : "XCUIElementTypeTextField"; let fields = await driver.findElementsByClassName(selector); let dateField; - if(driver.isAndroid){ + if (driver.isAndroid) { dateField = fields[3]; - } - else{ + } + else { let index = fields.length; console.log("index: " + index); dateField = fields[index - 1]; @@ -242,12 +242,12 @@ describe("DateTimePicker", () => { const time = await getPickerTime(driver, 24); let acceptBtn; let rejectBtn; - if(driver.isAndroid){ + if (driver.isAndroid) { let buttons = await driver.findElementsByClassName("android.widget.Button"); acceptBtn = buttons[buttons.length - 1]; rejectBtn = buttons[buttons.length - 2]; } - else{ + else { acceptBtn = await driver.findElementByText("Bestätigen", SearchOptions.exact); rejectBtn = await driver.findElementByText("Stornieren", SearchOptions.exact); } @@ -283,7 +283,7 @@ describe("DateTimePicker", () => { await customButtonsTitle.click(); }); - if (process.env["Type"] === 'Angular'){ + if (process.env["Type"] === 'Angular') { it("Should tap button to select date and verify button text", async () => { await scrollToElement(driver, "tap to select date and time", Direction.down); let dateButton = await driver.findElementByText("tap to select date", SearchOptions.contains); @@ -293,20 +293,20 @@ describe("DateTimePicker", () => { const pickerDate = new Date(date); let day = pickerDate.getDate(); let dayString = day.toString(); - if(day < 10){ + if (day < 10) { dayString = "0" + day.toString(); } let month = pickerDate.getMonth() + 1; let monthString = month.toString(); - if(month < 10){ + if (month < 10) { monthString = "0" + month.toString(); } let year = pickerDate.getFullYear(); - const dateString = dayString + "." + monthString+ "." + year; + const dateString = dayString + "." + monthString + "." + year; console.log(dateString); const dateField = await driver.findElementByText(dateString); expect(dateField).to.exist; - }) + }); it("Should tap button to select time and verify button text", async () => { let timeButton = await driver.findElementByText("tap to select time", SearchOptions.contains);