use-callback-handlers.test.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import sinon from 'sinon'
  2. import { renderHook } from '@testing-library/react-hooks'
  3. import useCallbackHandlers from '../../../../frontend/js/shared/hooks/use-callback-handlers'
  4. describe('useCallbackHandlers', function () {
  5. it('adds, removes and calls all handlers without duplicate', async function () {
  6. const handler1 = sinon.stub()
  7. const handler2 = sinon.stub()
  8. const handler3 = sinon.stub()
  9. const { result } = renderHook(() => useCallbackHandlers())
  10. result.current.addHandler(handler1)
  11. result.current.deleteHandler(handler1)
  12. result.current.addHandler(handler1)
  13. result.current.addHandler(handler2)
  14. result.current.deleteHandler(handler2)
  15. result.current.addHandler(handler3)
  16. result.current.addHandler(handler3)
  17. result.current.callHandlers('foo')
  18. result.current.callHandlers(1337)
  19. sinon.assert.calledTwice(handler1)
  20. sinon.assert.calledWith(handler1, 'foo')
  21. sinon.assert.calledWith(handler1, 1337)
  22. sinon.assert.notCalled(handler2)
  23. sinon.assert.calledTwice(handler3)
  24. })
  25. })