From da0a3547ca6e1383cb7880e5b671ef5d941677b3 Mon Sep 17 00:00:00 2001 From: AmauryD Date: Mon, 13 Nov 2023 18:59:11 +0100 Subject: [PATCH] add ability to pass an html element to test helpers --- addon-test-support/helpers.js | 12 ++++ .../components/ember-flatpickr-test.js | 59 +++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/addon-test-support/helpers.js b/addon-test-support/helpers.js index f1b40097..45e95343 100644 --- a/addon-test-support/helpers.js +++ b/addon-test-support/helpers.js @@ -24,6 +24,10 @@ export function isFlatpickrOpen(pickrIndex = 0) { * @function setFlatpickrDate */ export function setFlatpickrDate(selector, date, triggerChange = true) { + if (selector instanceof HTMLElement) { + selector._flatpickr.setDate(date, triggerChange); + return; + } const flatpickrInput = find(selector); if (!flatpickrInput) _throwSelectorError(selector, 'setFlatpickrDate'); flatpickrInput._flatpickr.setDate(date, triggerChange); @@ -34,6 +38,10 @@ export function setFlatpickrDate(selector, date, triggerChange = true) { * @function closeFlatpickrDate */ export function closeFlatpickrDate(selector) { + if (selector instanceof HTMLElement) { + selector._flatpickr.close(); + return; + } const flatpickrInput = find(selector); if (!flatpickrInput) _throwSelectorError(selector, 'closeFlatpickrDate'); flatpickrInput._flatpickr.close(); @@ -45,6 +53,10 @@ export function closeFlatpickrDate(selector) { * @function clearFlatpickrDate */ export function clearFlatpickrDate(selector) { + if (selector instanceof HTMLElement) { + selector._flatpickr.clear(); // eslint-disable-line + return; + } const flatpickrInput = find(selector); if (!flatpickrInput) _throwSelectorError(selector, 'clearFlatpickrDate'); flatpickrInput._flatpickr.clear(); // eslint-disable-line diff --git a/tests/integration/components/ember-flatpickr-test.js b/tests/integration/components/ember-flatpickr-test.js index ff153998..ed2d583c 100644 --- a/tests/integration/components/ember-flatpickr-test.js +++ b/tests/integration/components/ember-flatpickr-test.js @@ -9,6 +9,11 @@ import { triggerEvent, } from '@ember/test-helpers'; import { hbs } from 'ember-cli-htmlbars'; +import { + clearFlatpickrDate, + closeFlatpickrDate, + setFlatpickrDate, +} from 'ember-flatpickr/test-support/helpers'; const clickDay = async (index) => { await triggerEvent(findAll('.flatpickr-days .flatpickr-day')[index], 'click'); @@ -774,4 +779,58 @@ module('Integration | Component | ember flatpickr', function (hooks) { 'disable config was not overwritten' ); }); + + module('Addon test support', (hooks) => { + async function renderFlatPickr() { + await render( + hbs`` + ); + } + + hooks.beforeEach(async function () { + this.set('date', null); + await renderFlatPickr(); + }); + + test('setFlatpickrDate allows an html element as selector', async function (assert) { + assert.expect(1); + const flatpickr = find('[data-test-ember-flatpickr]'); + const date = new Date('2080-12-01T16:16:22.585Z'); + + setFlatpickrDate(flatpickr, date); + + assert.strictEqual( + flatpickr._flatpickr.selectedDates[0].toISOString(), + '2080-12-01T16:16:22.000Z' + ); + }); + + test('closeFlatpickrDate allows an html element as selector', async function (assert) { + assert.expect(2); + const flatpickr = find('[data-test-ember-flatpickr]'); + + flatpickr._flatpickr.open(); + + assert.true(flatpickr._flatpickr.isOpen); + + closeFlatpickrDate(flatpickr); + + assert.false(flatpickr._flatpickr.isOpen); + }); + + test('clearFlatpickrDate allows an html element as selector', async function (assert) { + this.set('date', new Date('2080-12-01T16:16:22.000Z')); + const flatpickr = find('[data-test-ember-flatpickr]'); + assert.strictEqual( + flatpickr._flatpickr.selectedDates[0].toISOString(), + '2080-12-01T16:16:22.000Z' + ); + clearFlatpickrDate(flatpickr); + assert.strictEqual(flatpickr._flatpickr.selectedDates[0], undefined); + }); + }); });