Refactor action menu (#7586)

Introduces effects to set the actionMenuEntries
This commit is contained in:
Raphaël Bosi
2024-10-11 15:25:35 +02:00
committed by GitHub
parent 9b9b34f991
commit 3761fbf86f
26 changed files with 447 additions and 319 deletions

View File

@ -1,6 +1,5 @@
import { renderHook } from '@testing-library/react';
import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/ObjectMetadataNotFoundError';
import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById';
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
@ -31,14 +30,19 @@ describe('useObjectMetadataItemById', () => {
const { objectMetadataItem } = result.current;
expect(objectMetadataItem.id).toBe(opportunityObjectMetadata.id);
expect(objectMetadataItem?.id).toBe(opportunityObjectMetadata.id);
});
it('should throw an error when invalid ID is provided', async () => {
expect(() =>
renderHook(() => useObjectMetadataItemById({ objectId: 'invalid-id' }), {
it('should return null when invalid ID is provided', async () => {
const { result } = renderHook(
() => useObjectMetadataItemById({ objectId: 'invalid-id' }),
{
wrapper: Wrapper,
}),
).toThrow(ObjectMetadataItemNotFoundError);
},
);
const { objectMetadataItem } = result.current;
expect(objectMetadataItem).toBeNull();
});
});

View File

@ -1,13 +1,12 @@
import { useRecoilValue } from 'recoil';
import { ObjectMetadataItemNotFoundError } from '@/object-metadata/errors/ObjectMetadataNotFoundError';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { isDefined } from '~/utils/isDefined';
export const useObjectMetadataItemById = ({
objectId,
}: {
objectId: string;
objectId: string | null;
}) => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
@ -16,7 +15,9 @@ export const useObjectMetadataItemById = ({
);
if (!isDefined(objectMetadataItem)) {
throw new ObjectMetadataItemNotFoundError(objectId, objectMetadataItems);
return {
objectMetadataItem: null,
};
}
return {