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:
gitstart-app[bot] 2024-01-23 14:15:41 +01:00 committed by GitHub
parent 3f0743493b
commit 562cdc563f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 96 additions and 0 deletions

View File

@ -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);
});
});

View File

@ -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);
});
});