# Introduction ### Summary Implements side effect handling for `ViewGroup` and `ViewFilters` when field metadata is updated in the v2 architecture. This ensures that view-related records are properly maintained when enum field options are modified, deleted, or created. ### Side effects - **Side Effect System**: Added side effect handling for field metadata updates that manages related view groups and view filters - **Enum Field Updates**: When enum field options are modified, the system now: - **View Groups**: Creates new groups for added options, updates existing groups for modified options, and deletes groups for removed options - **View Filters**: Updates filter values to reflect option changes and removes filters that reference deleted options ### Enum runner fix Update now works for both atomic enum and array enum ( multi select for instance ) ### Compute flat entity maps from to Standardized this method usage across v2 services Next step is to require dependencies dynamically ## Conclusion closes https://github.com/twentyhq/core-team-issues/issues/1649
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { createOneCoreView } from 'test/integration/metadata/suites/view/utils/create-one-core-view.util';
|
|
|
|
import { type CreateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/create-view.input';
|
|
import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity';
|
|
|
|
import { createViewData } from './view-data-factory.util';
|
|
|
|
export const createTestViewWithGraphQL = async (
|
|
overrides: Partial<ViewEntity> = {},
|
|
): Promise<ViewEntity> => {
|
|
const viewData = createViewData(overrides);
|
|
const input: CreateViewInput = {
|
|
name: viewData.name,
|
|
objectMetadataId: viewData.objectMetadataId as string,
|
|
icon: viewData.icon,
|
|
type: viewData.type,
|
|
position: viewData.position,
|
|
isCompact: viewData.isCompact,
|
|
openRecordIn: viewData.openRecordIn,
|
|
};
|
|
|
|
const { data, errors } = await createOneCoreView({
|
|
input,
|
|
expectToFail: false,
|
|
});
|
|
|
|
if (errors) {
|
|
throw new Error(`Failed to create test view: ${JSON.stringify(errors)}`);
|
|
}
|
|
|
|
if (!data) {
|
|
throw new Error('No data returned from createTestViewWithGraphQL');
|
|
}
|
|
|
|
return data.createCoreView;
|
|
};
|