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