Remove filterDefinition.type usage (#10164)
This PR essentially removes the usage of filterDefinition.type, by replacing it with fieldMetadataItem.type derivation. Thus allowing to completely remove filterDefinition later on. In computeFilterRecordGqlOperationFilter, emptyOperationFilter is now returned before going into the big switch case. This avoids repeating the same exact call to getEmptyRecordGqlOperationFilter for each type. Fixed some tests that need getJestMetadataAndApolloMocksAndActionMenuWrapper to have record filters properly working with the new implementation. We'll probably want to refactor the record context store, record index context, etc. Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
This commit is contained in:
@ -1,14 +1,17 @@
|
||||
import { ActionMenuComponentInstanceContext } from '@/action-menu/states/contexts/ActionMenuComponentInstanceContext';
|
||||
import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext';
|
||||
import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext';
|
||||
import { RecordIndexContextProvider } from '@/object-record/record-index/contexts/RecordIndexContext';
|
||||
import { MockedResponse } from '@apollo/client/testing';
|
||||
import { ReactNode } from 'react';
|
||||
import { MutableSnapshot } from 'recoil';
|
||||
import { isDefined } from 'twenty-shared';
|
||||
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
|
||||
import {
|
||||
JestContextStoreSetter,
|
||||
JestContextStoreSetterMocks,
|
||||
} from '~/testing/jest/JestContextStoreSetter';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
|
||||
export type GetJestMetadataAndApolloMocksAndActionMenuWrapperProps = {
|
||||
apolloMocks:
|
||||
@ -32,6 +35,18 @@ export const getJestMetadataAndApolloMocksAndActionMenuWrapper = ({
|
||||
onInitializeRecoilSnapshot,
|
||||
});
|
||||
|
||||
const mockObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(objectMetadataItem) =>
|
||||
objectMetadataItem.nameSingular ===
|
||||
contextStoreCurrentObjectMetadataNameSingular,
|
||||
);
|
||||
|
||||
if (!isDefined(mockObjectMetadataItem)) {
|
||||
throw new Error(
|
||||
`Mock object metadata item ${contextStoreCurrentObjectMetadataNameSingular} not found`,
|
||||
);
|
||||
}
|
||||
|
||||
return ({ children }: { children: ReactNode }) => (
|
||||
<Wrapper>
|
||||
<RecordFiltersComponentInstanceContext.Provider
|
||||
@ -47,18 +62,31 @@ export const getJestMetadataAndApolloMocksAndActionMenuWrapper = ({
|
||||
instanceId: componentInstanceId,
|
||||
}}
|
||||
>
|
||||
<JestContextStoreSetter
|
||||
contextStoreFilters={contextStoreFilters}
|
||||
contextStoreTargetedRecordsRule={contextStoreTargetedRecordsRule}
|
||||
contextStoreNumberOfSelectedRecords={
|
||||
contextStoreNumberOfSelectedRecords
|
||||
}
|
||||
contextStoreCurrentObjectMetadataNameSingular={
|
||||
contextStoreCurrentObjectMetadataNameSingular
|
||||
}
|
||||
<RecordIndexContextProvider
|
||||
value={{
|
||||
indexIdentifierUrl: () => 'indexIdentifierUrl',
|
||||
onIndexRecordsLoaded: () => {},
|
||||
objectNamePlural: mockObjectMetadataItem.namePlural,
|
||||
objectNameSingular: mockObjectMetadataItem.nameSingular,
|
||||
objectMetadataItem: mockObjectMetadataItem,
|
||||
recordIndexId: 'recordIndexId',
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</JestContextStoreSetter>
|
||||
<JestContextStoreSetter
|
||||
contextStoreFilters={contextStoreFilters}
|
||||
contextStoreTargetedRecordsRule={
|
||||
contextStoreTargetedRecordsRule
|
||||
}
|
||||
contextStoreNumberOfSelectedRecords={
|
||||
contextStoreNumberOfSelectedRecords
|
||||
}
|
||||
contextStoreCurrentObjectMetadataNameSingular={
|
||||
contextStoreCurrentObjectMetadataNameSingular
|
||||
}
|
||||
>
|
||||
{children}
|
||||
</JestContextStoreSetter>
|
||||
</RecordIndexContextProvider>
|
||||
</ActionMenuComponentInstanceContext.Provider>
|
||||
</ContextStoreComponentInstanceContext.Provider>
|
||||
</RecordFiltersComponentInstanceContext.Provider>
|
||||
|
||||
@ -3,12 +3,10 @@ import { ReactNode } from 'react';
|
||||
import { MutableSnapshot, RecoilRoot } from 'recoil';
|
||||
|
||||
import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext';
|
||||
import { RecordIndexContextProvider } from '@/object-record/record-index/contexts/RecordIndexContext';
|
||||
import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope';
|
||||
import { ViewComponentInstanceContext } from '@/views/states/contexts/ViewComponentInstanceContext';
|
||||
import { InMemoryCache } from '@apollo/client';
|
||||
import { JestObjectMetadataItemSetter } from '~/testing/jest/JestObjectMetadataItemSetter';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
|
||||
export const getJestMetadataAndApolloMocksWrapper = ({
|
||||
apolloMocks,
|
||||
@ -25,31 +23,17 @@ export const getJestMetadataAndApolloMocksWrapper = ({
|
||||
<RecoilRoot initializeState={onInitializeRecoilSnapshot}>
|
||||
<SnackBarProviderScope snackBarManagerScopeId="snack-bar-manager">
|
||||
<MockedProvider mocks={apolloMocks} addTypename={false} cache={cache}>
|
||||
<RecordIndexContextProvider
|
||||
value={{
|
||||
indexIdentifierUrl: () => 'indexIdentifierUrl',
|
||||
onIndexRecordsLoaded: () => {},
|
||||
objectNamePlural: 'objectNamePlural',
|
||||
objectNameSingular: 'objectNameSingular',
|
||||
objectMetadataItem:
|
||||
generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
) ?? generatedMockObjectMetadataItems[0],
|
||||
recordIndexId: 'recordIndexId',
|
||||
}}
|
||||
<RecordFiltersComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'instanceId' }}
|
||||
>
|
||||
<RecordFiltersComponentInstanceContext.Provider
|
||||
<ViewComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'instanceId' }}
|
||||
>
|
||||
<ViewComponentInstanceContext.Provider
|
||||
value={{ instanceId: 'instanceId' }}
|
||||
>
|
||||
<JestObjectMetadataItemSetter>
|
||||
{children}
|
||||
</JestObjectMetadataItemSetter>
|
||||
</ViewComponentInstanceContext.Provider>
|
||||
</RecordFiltersComponentInstanceContext.Provider>
|
||||
</RecordIndexContextProvider>
|
||||
<JestObjectMetadataItemSetter>
|
||||
{children}
|
||||
</JestObjectMetadataItemSetter>
|
||||
</ViewComponentInstanceContext.Provider>
|
||||
</RecordFiltersComponentInstanceContext.Provider>
|
||||
</MockedProvider>
|
||||
</SnackBarProviderScope>
|
||||
</RecoilRoot>
|
||||
|
||||
Reference in New Issue
Block a user