@mic-rexjs/usecases-react
Version:
React-based solution for use usecases of Clean Architecture
53 lines (52 loc) • 2.27 kB
JavaScript
import { describe, expect, test } from '@jest/globals';
import { renderHook } from '@testing-library/react';
import { useContext } from '.';
import { ArgumentTypes } from '../../enums/ArgumentTypes';
import { useContext as useReactContext } from 'react';
const testUseCase = () => {
return {};
};
describe('useContext', () => {
test('should return the default context with value `null` if map has not saved a usecase with default args', () => {
const { result } = renderHook(() => {
const context = useContext(testUseCase);
const value = useReactContext(context);
return value;
});
const { current } = result;
expect(current).toBe(null);
});
test('should return the default context with value `null` if map has not saved a usecase with `ArgumentTypes.None` & `UseCaseModes.Normal`', () => {
const { result } = renderHook(() => {
const context = useContext(testUseCase, ArgumentTypes.None);
const value = useReactContext(context);
return value;
});
const { current } = result;
expect(current).toBe(null);
});
test('should return the default context with value `null` as unmount this hook', () => {
const { result: result1, unmount: unmount1 } = renderHook(() => {
const context = useContext(testUseCase, ArgumentTypes.None);
const value = useReactContext(context);
return value;
});
const { current: current1 } = result1;
expect(typeof current1).toBe('object');
unmount1();
const { result: result2 } = renderHook(() => {
const context = useContext(testUseCase, ArgumentTypes.None);
const value = useReactContext(context);
return value;
});
const { current: current2 } = result2;
expect(current2).toBe(null);
});
test('should return a new context if map has not saved a usecase with `ArgumentTypes.Entity` & `UseCaseModes.Normal`', () => {
const { result } = renderHook(() => {
return useContext(testUseCase, ArgumentTypes.Entity);
});
const { current } = result;
expect(typeof current).toBe('object');
});
});