const { scrollWheel, expectDate, setDate, setMode, setMaximumDate, setMinimumDate, init, } = require('../utils'); const scrollDays = days => scrollWheel(1, days); describe('Invalid dates', () => { beforeAll(async () => { await init(); await element(by.text('Advanced')).tap(); await setMinimumDate(undefined); await setMaximumDate(undefined); await setMode('date'); }); it('scrolls back to last valid date', async () => { await setDate(new Date('2001-02-28 00:00')); await scrollDays(1); await expectDate('2001-02-28 00:00:00'); }); it('scrolls back after scrolling multiple dates', async () => { await setDate(new Date('2001-02-27 00:00')); await scrollDays(2); await expectDate('2001-02-28 00:00:00'); }); it('not scrolling back on unusual valid dates', async () => { await setDate(new Date('2000-02-28 00:00')); await scrollDays(1); await expectDate('2000-02-29 00:00:00'); }); it('not scrolling back after scrolling past invalid dates', async () => { await setDate(new Date('2001-02-28 00:00')); await scrollDays(4); await expectDate('2001-02-01 00:00:00'); }); it('works on months with 30 days', async () => { await setDate(new Date('2001-04-30 00:00')); await scrollDays(1); await expectDate('2001-04-30 00:00:00'); }); it('works on months with 31 days', async () => { await setDate(new Date('2001-05-30 00:00')); await scrollDays(1); await expectDate('2001-05-31 00:00:00'); }); });