yapplabs / ember-modal-dialog

An ember-cli addon for implementing modal dialogs
http://yapplabs.github.io/ember-modal-dialog/
MIT License
392 stars 154 forks source link

4.1.3 - need to wait until modal overlay is opened (in test) #397

Open Techn1x opened 8 months ago

Techn1x commented 8 months ago

This is more an advisory to others in case it affects them.

I was confused why one of my tests was failing under 4.1.3 (it had no release notes to guide).

I have a test like this

test('it closes on click outside', async function (assert) {
  this.showModal = true
  this.close = sinon.stub().callsFake(() => set(this, 'showModal', false))

  await render(hbs`
    <LayoutBlocks::Modal
      data-test-my-modal
      @title="My Modal"
      @showModal={{this.showModal}}
      @close={{this.close}}
    >
      content here
    </LayoutBlocks::Modal>
  `)

  assert.dom('[data-test-my-modal]').exists()

  // simulate a click that occurs outside of the modal
  await click('.ember-modal-overlay')

  assert.calledOnce(this.close)
  assert.dom('[data-test-my-modal]').doesNotExist()
})

It took me a while to figure out, but I needed to add this line before the click await waitFor('.ember-modal-overlay', { count: 1 })

(import waitFor from '@ember/test-helpers')

Techn1x commented 8 months ago

Nothing to fix here, feel free to close when desired. I just figured this would help others in lieu of the release notes.