TWNTY-3482 - Add tests for modules/ui/utilities/recoil-scope/scopes-internal/hooks (#3582)
Add tests for `modules/ui/utilities/recoil-scope/scopes-internal/hooks` Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com> Co-authored-by: KlingerMatheus <klinger.matheus@gitstart.dev>
This commit is contained in:
committed by
GitHub
parent
3f0743493b
commit
562cdc563f
@ -0,0 +1,64 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { renderHook } from '@testing-library/react';
|
||||||
|
|
||||||
|
import { useAvailableScopeIdOrThrow } from '@/ui/utilities/recoil-scope/scopes-internal/hooks/useAvailableScopeId';
|
||||||
|
import { createScopeInternalContext } from '@/ui/utilities/recoil-scope/scopes-internal/utils/createScopeInternalContext';
|
||||||
|
|
||||||
|
const mockScopeIdFrom = {
|
||||||
|
Props: 'scopeIdFromProps',
|
||||||
|
Context: 'scopeIdFromContext',
|
||||||
|
};
|
||||||
|
const MockedContext = createScopeInternalContext();
|
||||||
|
const errorMessage = 'Scope id is not provided and cannot be found in context.';
|
||||||
|
|
||||||
|
const Wrapper = ({ children }: { children: React.ReactNode }) => (
|
||||||
|
<MockedContext.Provider value={{ scopeId: mockScopeIdFrom.Context }}>
|
||||||
|
{children}
|
||||||
|
</MockedContext.Provider>
|
||||||
|
);
|
||||||
|
|
||||||
|
describe('useAvailableScopeIdOrThrow', () => {
|
||||||
|
it('should return scopeIdFromProps if provided', () => {
|
||||||
|
const {
|
||||||
|
result: {
|
||||||
|
current: { availableScopeId },
|
||||||
|
},
|
||||||
|
} = renderHook(
|
||||||
|
() => ({
|
||||||
|
availableScopeId: useAvailableScopeIdOrThrow(
|
||||||
|
MockedContext,
|
||||||
|
mockScopeIdFrom.Props,
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
{ wrapper: Wrapper },
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(availableScopeId).toBe(mockScopeIdFrom.Props);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return scopeIdFromContext if no scopeIdFromProps is present', () => {
|
||||||
|
const {
|
||||||
|
result: {
|
||||||
|
current: { availableScopeId },
|
||||||
|
},
|
||||||
|
} = renderHook(
|
||||||
|
() => ({
|
||||||
|
availableScopeId: useAvailableScopeIdOrThrow(MockedContext),
|
||||||
|
}),
|
||||||
|
{ wrapper: Wrapper },
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(availableScopeId).toBe(mockScopeIdFrom.Context);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw an error if no scopeId is provided and scopeId is undefined in the context', () => {
|
||||||
|
console.error = jest.fn();
|
||||||
|
|
||||||
|
const renderFunction = () =>
|
||||||
|
renderHook(() => ({
|
||||||
|
availableScopeId: useAvailableScopeIdOrThrow(MockedContext),
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(renderFunction).toThrow(errorMessage);
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
import { renderHook } from '@testing-library/react';
|
||||||
|
|
||||||
|
import { useScopeInternalContext } from '@/ui/utilities/recoil-scope/scopes-internal/hooks/useScopeInternalContext';
|
||||||
|
import { createScopeInternalContext } from '@/ui/utilities/recoil-scope/scopes-internal/utils/createScopeInternalContext';
|
||||||
|
|
||||||
|
const scopeId = 'scopeId';
|
||||||
|
const MockedContext = createScopeInternalContext();
|
||||||
|
|
||||||
|
const Wrapper = ({ children }: { children: React.ReactNode }) => (
|
||||||
|
<MockedContext.Provider value={{ scopeId }}>
|
||||||
|
{children}
|
||||||
|
</MockedContext.Provider>
|
||||||
|
);
|
||||||
|
|
||||||
|
describe('useScopeInternalContext', () => {
|
||||||
|
it('should work as expected', () => {
|
||||||
|
const {
|
||||||
|
result: {
|
||||||
|
current: { scopeInternalContext },
|
||||||
|
},
|
||||||
|
} = renderHook(
|
||||||
|
() => ({
|
||||||
|
scopeInternalContext: useScopeInternalContext(MockedContext),
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
wrapper: Wrapper,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(scopeInternalContext!.scopeId).toBe(scopeId);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user