useIsMountedRef.spec.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {reactHooks} from 'sentry-test/reactTestingLibrary';
  2. import {useIsMountedRef} from './useIsMountedRef';
  3. describe('useIsMounted', () => {
  4. it('should return a ref', () => {
  5. const {result} = reactHooks.renderHook(() => useIsMountedRef());
  6. expect(result.current).toBeInstanceOf(Object);
  7. });
  8. it('should return false within first render', () => {
  9. const {result} = reactHooks.renderHook(() => {
  10. const isMountedRef = useIsMountedRef();
  11. return isMountedRef.current;
  12. });
  13. expect(result.current).toBe(false);
  14. });
  15. it('should return true after mount', () => {
  16. const {result} = reactHooks.renderHook(() => useIsMountedRef());
  17. expect(result.current.current).toBe(true);
  18. });
  19. it('should return same function on each render', () => {
  20. const {result, rerender} = reactHooks.renderHook(() => useIsMountedRef());
  21. const fn1 = result.current;
  22. rerender();
  23. const fn2 = result.current;
  24. rerender();
  25. const fn3 = result.current;
  26. expect(fn1).toBe(fn2);
  27. expect(fn2).toBe(fn3);
  28. });
  29. it('should return false after component unmount', () => {
  30. const {result, unmount} = reactHooks.renderHook(() => useIsMountedRef());
  31. expect(result.current.current).toBe(true);
  32. unmount();
  33. expect(result.current.current).toBe(false);
  34. });
  35. });