leave-project-modal.test.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { expect } from 'chai'
  2. import sinon from 'sinon'
  3. import { render, screen } from '@testing-library/react'
  4. import userEvent from '@testing-library/user-event'
  5. import LeaveProjectModal from '@/features/token-access/components/leave-project-modal'
  6. describe('<LeaveProjectModal/>', function () {
  7. const closeHandler = sinon.stub()
  8. const leaveHandler = sinon.stub()
  9. it('does not render when no show prop is passed', function () {
  10. render(
  11. <LeaveProjectModal
  12. handleCloseModal={closeHandler}
  13. handleLeaveAction={leaveHandler}
  14. showModal={false}
  15. />
  16. )
  17. const leaveText = screen.queryByText('Leave Project')
  18. expect(leaveText).to.be.null
  19. })
  20. it('renders when the show prop is passed', function () {
  21. render(
  22. <LeaveProjectModal
  23. handleCloseModal={closeHandler}
  24. handleLeaveAction={leaveHandler}
  25. showModal
  26. />
  27. )
  28. const leaveText = screen.queryByText('Leave Project')
  29. expect(leaveText).to.exist
  30. })
  31. it('calls the close handler when dismissed', async function () {
  32. const user = userEvent.setup()
  33. render(
  34. <LeaveProjectModal
  35. handleCloseModal={closeHandler}
  36. handleLeaveAction={leaveHandler}
  37. showModal
  38. />
  39. )
  40. await user.click(screen.getByRole('button', { name: /Cancel/i }))
  41. expect(closeHandler).to.have.been.calledOnce
  42. })
  43. it('calls the leave handler when confirmed', async function () {
  44. const user = userEvent.setup()
  45. render(
  46. <LeaveProjectModal
  47. handleCloseModal={closeHandler}
  48. handleLeaveAction={leaveHandler}
  49. showModal
  50. />
  51. )
  52. await user.click(screen.getByRole('button', { name: /Confirm/i }))
  53. expect(leaveHandler).to.have.been.calledOnce
  54. })
  55. })