From dda390ef014e0380c2a46460b034197cd8423e8d Mon Sep 17 00:00:00 2001 From: Andrew Kirwin <github@andrewkirwin.co.uk> Date: Thu, 20 Jun 2024 09:40:53 +0100 Subject: [PATCH] add failing test demoing https://github.com/ember-modifier/ember-modifier/issues/851 --- .../select-box/conditional-modifier-test.gjs | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/integration/components/select-box/conditional-modifier-test.gjs diff --git a/tests/integration/components/select-box/conditional-modifier-test.gjs b/tests/integration/components/select-box/conditional-modifier-test.gjs new file mode 100644 index 00000000..d0f67dc7 --- /dev/null +++ b/tests/integration/components/select-box/conditional-modifier-test.gjs @@ -0,0 +1,42 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'dummy/tests/helpers'; +import { render, click } from '@ember/test-helpers'; +import SelectBox from '@zestia/ember-select-box/components/select-box'; +import { modifier } from 'ember-modifier'; +import { tracked } from '@glimmer/tracking'; + +module('select-box', function (hooks) { + setupRenderingTest(hooks); + + // Regression test for issue + // https://github.com/ember-modifier/ember-modifier/issues/851 + + const position = modifier( + (dropdown, [container]) => (dropdown.dataset.positioned = 'true'), + { eager: false } + ); + + test('it does not blow up', async function (assert) { + assert.expect(0); + + const state = new (class { + @tracked value; + })(); + + const handleChange = (value) => { + state.value = value; + }; + + await render(<template> + <SelectBox @value={{state.value}} @onChange={{handleChange}} as |sb|> + <sb.Trigger /> + <sb.Options {{(if sb.isOpen (modifier position sb.element))}}> + <sb.Option @value="foo" /> + </sb.Options> + </SelectBox> + </template>); + + await click('.select-box__trigger'); // Open + await click('.select-box__option'); // Close + }); +});