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
+  });
+});