@@ -3,14 +3,16 @@ const {
33 getDateText,
44 elementById,
55 elementByText,
6+ getDateTimePickerIOS,
7+ getDatePickerAndroid,
68} = require ( './utils/matchers' ) ;
79const {
810 userChangesMinuteValue,
911 userOpensPicker,
1012 userTapsCancelButtonAndroid,
1113 userTapsOkButtonAndroid,
1214} = require ( './utils/actions' ) ;
13- const { isAndroid, isIOS} = require ( './utils/utils' ) ;
15+ const { isAndroid, isIOS, wait } = require ( './utils/utils' ) ;
1416
1517describe ( 'Example' , ( ) => {
1618 beforeEach ( async ( ) => {
@@ -35,21 +37,17 @@ describe('Example', () => {
3537 await userOpensPicker ( { mode : 'date' , display : 'default' } ) ;
3638
3739 if ( isIOS ( ) ) {
38- await expect (
39- element ( by . type ( 'UIPickerView' ) . withAncestor ( by . id ( 'dateTimePicker' ) ) ) ,
40- ) . toBeVisible ( ) ;
40+ await expect ( getDateTimePickerIOS ( ) ) . toBeVisible ( ) ;
4141 } else {
42- await expect ( element ( by . type ( 'android.widget.DatePicker' ) ) ) . toBeVisible ( ) ;
42+ await expect ( getDatePickerAndroid ( ) ) . toBeVisible ( ) ;
4343 }
4444 } ) ;
4545
4646 it ( 'nothing should happen if date does not change' , async ( ) => {
4747 await userOpensPicker ( { mode : 'date' , display : 'default' } ) ;
4848
4949 if ( isIOS ( ) ) {
50- await expect (
51- element ( by . type ( 'UIPickerView' ) . withAncestor ( by . id ( 'dateTimePicker' ) ) ) ,
52- ) . toBeVisible ( ) ;
50+ await expect ( getDateTimePickerIOS ( ) ) . toBeVisible ( ) ;
5351 } else {
5452 const testElement = element (
5553 by
@@ -70,9 +68,7 @@ describe('Example', () => {
7068 const dateText = getDateText ( ) ;
7169
7270 if ( isIOS ( ) ) {
73- const testElement = element (
74- by . type ( 'UIPickerView' ) . withAncestor ( by . id ( 'dateTimePicker' ) ) ,
75- ) ;
71+ const testElement = getDateTimePickerIOS ( ) ;
7672 await testElement . setColumnToValue ( 0 , 'November' ) ;
7773 await testElement . setColumnToValue ( 1 , '3' ) ;
7874 await testElement . setColumnToValue ( 2 , '1800' ) ;
@@ -96,9 +92,7 @@ describe('Example', () => {
9692 await userOpensPicker ( { mode : 'time' , display : 'default' } ) ;
9793
9894 if ( isIOS ( ) ) {
99- await expect (
100- element ( by . type ( 'UIPickerView' ) . withAncestor ( by . id ( 'dateTimePicker' ) ) ) ,
101- ) . toBeVisible ( ) ;
95+ await expect ( getDateTimePickerIOS ( ) ) . toBeVisible ( ) ;
10296 } else {
10397 await expect ( element ( by . type ( 'android.widget.TimePicker' ) ) ) . toBeVisible ( ) ;
10498 }
@@ -108,9 +102,7 @@ describe('Example', () => {
108102 await userOpensPicker ( { mode : 'time' , display : 'default' } ) ;
109103
110104 if ( isIOS ( ) ) {
111- await expect (
112- element ( by . type ( 'UIPickerView' ) . withAncestor ( by . id ( 'dateTimePicker' ) ) ) ,
113- ) . toBeVisible ( ) ;
105+ await expect ( getDateTimePickerIOS ( ) ) . toBeVisible ( ) ;
114106 } else {
115107 await userChangesMinuteValue ( ) ;
116108 await userTapsCancelButtonAndroid ( ) ;
@@ -124,9 +116,7 @@ describe('Example', () => {
124116 const timeText = getTimeText ( ) ;
125117
126118 if ( isIOS ( ) ) {
127- const testElement = element (
128- by . type ( 'UIPickerView' ) . withAncestor ( by . id ( 'dateTimePicker' ) ) ,
129- ) ;
119+ const testElement = getDateTimePickerIOS ( ) ;
130120 await testElement . setColumnToValue ( 0 , '2' ) ;
131121 await testElement . setColumnToValue ( 1 , '44' ) ;
132122 await testElement . setColumnToValue ( 2 , 'PM' ) ;
@@ -149,6 +139,14 @@ describe('Example', () => {
149139 await expect ( dateText ) . toHaveText ( '01/01/1970' ) ;
150140 } ) ;
151141
142+ it ( ':android: when component unmounts, dialog is dismissed' , async ( ) => {
143+ await elementById ( 'showAndDismissPickerButton' ) . tap ( ) ;
144+ await expect ( getDatePickerAndroid ( ) ) . toBeVisible ( ) ;
145+ await wait ( 3500 ) ;
146+
147+ await expect ( getDatePickerAndroid ( ) ) . toNotExist ( ) ;
148+ } ) ;
149+
152150 describe ( 'given 5-minute interval' , ( ) => {
153151 it ( ':android: clock picker should correct 18-minute selection to 20-minute one' , async ( ) => {
154152 try {
@@ -195,9 +193,7 @@ describe('Example', () => {
195193 it ( ':ios: picker should offer only options divisible by 5 (0, 5, 10,...)' , async ( ) => {
196194 await userOpensPicker ( { mode : 'time' , display : 'spinner' , interval : 5 } ) ;
197195
198- const testElement = element (
199- by . type ( 'UIPickerView' ) . withAncestor ( by . id ( 'dateTimePicker' ) ) ,
200- ) ;
196+ const testElement = getDateTimePickerIOS ( ) ;
201197 await testElement . setColumnToValue ( 0 , '2' ) ;
202198 await testElement . setColumnToValue ( 2 , 'PM' ) ;
203199 const timeText = getTimeText ( ) ;
0 commit comments