Fix all broken CIs (#7439)
Fix all the broken CIs :p This includes an ongoing effort to simplify test maintenance by having 1 unique source of truth about metadata and data mocks (that will later be generated from a unique source of seeds: dev = demo = test) Regressions: - Unit line coverage: 60 > 55 - Storybook Pages branch coverage: 40 > 35 We will need to write tests to increase those coverage - RelationFieldDisplay perf: 0.2ms to 0.22ms > We might have a regression here - Removed perf story about RawJSON > We will need to re-add it
This commit is contained in:
committed by
Charles Bochet
parent
bd305c8432
commit
d8c4af9279
@ -3,7 +3,7 @@ import { ComponentDecorator } from 'twenty-ui';
|
||||
|
||||
import { FormProviderDecorator } from '~/testing/decorators/FormProviderDecorator';
|
||||
|
||||
import { mockedPersonObjectMetadataItem } from '~/testing/mock-data/metadata';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { SettingsDataModelFieldDescriptionForm } from '../SettingsDataModelFieldDescriptionForm';
|
||||
|
||||
const meta: Meta<typeof SettingsDataModelFieldDescriptionForm> = {
|
||||
@ -25,11 +25,15 @@ type Story = StoryObj<typeof SettingsDataModelFieldDescriptionForm>;
|
||||
|
||||
export const Default: Story = {};
|
||||
|
||||
const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.namePlural === 'person',
|
||||
);
|
||||
|
||||
export const WithFieldMetadataItem: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem?.fields.find(
|
||||
({ description }) => description === 'description',
|
||||
)!,
|
||||
),
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ import { ComponentDecorator } from 'twenty-ui';
|
||||
import { FormProviderDecorator } from '~/testing/decorators/FormProviderDecorator';
|
||||
import { IconsProviderDecorator } from '~/testing/decorators/IconsProviderDecorator';
|
||||
|
||||
import { mockedPersonObjectMetadataItem } from '~/testing/mock-data/metadata';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { SettingsDataModelFieldIconLabelForm } from '../SettingsDataModelFieldIconLabelForm';
|
||||
|
||||
const StyledContainer = styled.div`
|
||||
@ -32,11 +32,15 @@ type Story = StoryObj<typeof SettingsDataModelFieldIconLabelForm>;
|
||||
|
||||
export const Default: Story = {};
|
||||
|
||||
const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.namePlural === 'person',
|
||||
);
|
||||
|
||||
export const WithFieldMetadataItem: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === 'name',
|
||||
)!,
|
||||
),
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@ -7,10 +7,18 @@ import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorato
|
||||
import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator';
|
||||
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
||||
import { graphqlMocks } from '~/testing/graphqlMocks';
|
||||
import { mockedCompanyObjectMetadataItem } from '~/testing/mock-data/metadata';
|
||||
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { SettingsDataModelFieldSettingsFormCard } from '../SettingsDataModelFieldSettingsFormCard';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
);
|
||||
|
||||
if (!mockedCompanyObjectMetadataItem) {
|
||||
throw new Error('Company object metadata item not found');
|
||||
}
|
||||
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem.fields.find(
|
||||
({ type }) => type === FieldMetadataType.Text,
|
||||
)!;
|
||||
|
||||
@ -6,14 +6,23 @@ import { MemoryRouterDecorator } from '~/testing/decorators/MemoryRouterDecorato
|
||||
import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator';
|
||||
import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator';
|
||||
import { graphqlMocks } from '~/testing/graphqlMocks';
|
||||
import {
|
||||
mockedCompanyObjectMetadataItem,
|
||||
mockedOpportunityObjectMetadataItem,
|
||||
mockedPersonObjectMetadataItem,
|
||||
} from '~/testing/mock-data/metadata';
|
||||
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { SettingsDataModelFieldPreviewCard } from '../SettingsDataModelFieldPreviewCard';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
);
|
||||
|
||||
const mockedOpportunityObjectMetadataItem =
|
||||
generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'opportunity',
|
||||
);
|
||||
|
||||
const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'person',
|
||||
);
|
||||
|
||||
const meta: Meta<typeof SettingsDataModelFieldPreviewCard> = {
|
||||
title:
|
||||
'Modules/Settings/DataModel/Fields/Preview/SettingsDataModelFieldPreviewCard',
|
||||
@ -38,7 +47,7 @@ type Story = StoryObj<typeof SettingsDataModelFieldPreviewCard>;
|
||||
|
||||
export const LabelIdentifier: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === 'name' && type === FieldMetadataType.FullName,
|
||||
),
|
||||
@ -47,7 +56,7 @@ export const LabelIdentifier: Story = {
|
||||
|
||||
export const Text: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem?.fields.find(
|
||||
({ name, type }) => name === 'city' && type === FieldMetadataType.Text,
|
||||
),
|
||||
},
|
||||
@ -55,7 +64,7 @@ export const Text: Story = {
|
||||
|
||||
export const Boolean: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === 'idealCustomerProfile' && type === FieldMetadataType.Boolean,
|
||||
),
|
||||
@ -65,7 +74,7 @@ export const Boolean: Story = {
|
||||
|
||||
export const Currency: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === 'annualRecurringRevenue' &&
|
||||
type === FieldMetadataType.Currency,
|
||||
@ -76,7 +85,7 @@ export const Currency: Story = {
|
||||
|
||||
export const Date: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ type }) => type === FieldMetadataType.DateTime,
|
||||
),
|
||||
objectMetadataItem: mockedCompanyObjectMetadataItem,
|
||||
@ -85,7 +94,7 @@ export const Date: Story = {
|
||||
|
||||
export const Links: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === 'linkedinLink' && type === FieldMetadataType.Links,
|
||||
),
|
||||
@ -95,7 +104,7 @@ export const Links: Story = {
|
||||
|
||||
export const Number: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ type }) => type === FieldMetadataType.Number,
|
||||
),
|
||||
objectMetadataItem: mockedCompanyObjectMetadataItem,
|
||||
@ -114,7 +123,7 @@ export const Rating: Story = {
|
||||
|
||||
export const Relation: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedPersonObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === 'company',
|
||||
),
|
||||
relationObjectMetadataItem: mockedCompanyObjectMetadataItem,
|
||||
@ -123,7 +132,7 @@ export const Relation: Story = {
|
||||
|
||||
export const Select: Story = {
|
||||
args: {
|
||||
fieldMetadataItem: mockedOpportunityObjectMetadataItem.fields.find(
|
||||
fieldMetadataItem: mockedOpportunityObjectMetadataItem?.fields.find(
|
||||
({ name, type }) => name === 'stage' && type === FieldMetadataType.Select,
|
||||
),
|
||||
objectMetadataItem: mockedOpportunityObjectMetadataItem,
|
||||
|
||||
@ -1,35 +1,34 @@
|
||||
import { ReactNode } from 'react';
|
||||
import { MockedProvider } from '@apollo/client/testing';
|
||||
import { renderHook } from '@testing-library/react';
|
||||
import { RecoilRoot } from 'recoil';
|
||||
|
||||
import { ObjectMetadataItemsProvider } from '@/object-metadata/components/ObjectMetadataItemsProvider';
|
||||
import { FieldMetadataItemOption } from '@/object-metadata/types/FieldMetadataItem';
|
||||
import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope';
|
||||
import { FieldMetadataType } from '~/generated/graphql';
|
||||
import {
|
||||
mockedCompanyObjectMetadataItem,
|
||||
mockedOpportunityObjectMetadataItem,
|
||||
mockedPersonObjectMetadataItem,
|
||||
} from '~/testing/mock-data/metadata';
|
||||
|
||||
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { useFieldPreviewValue } from '../useFieldPreviewValue';
|
||||
|
||||
const Wrapper = ({ children }: { children: ReactNode }) => (
|
||||
<RecoilRoot>
|
||||
<MockedProvider>
|
||||
<SnackBarProviderScope snackBarManagerScopeId="snack-bar-manager">
|
||||
<ObjectMetadataItemsProvider>{children}</ObjectMetadataItemsProvider>
|
||||
</SnackBarProviderScope>
|
||||
</MockedProvider>
|
||||
</RecoilRoot>
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
);
|
||||
|
||||
const mockedOpportunityObjectMetadataItem =
|
||||
generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'opportunity',
|
||||
);
|
||||
|
||||
const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'person',
|
||||
);
|
||||
|
||||
const Wrapper = getJestMetadataAndApolloMocksWrapper({
|
||||
apolloMocks: [],
|
||||
});
|
||||
|
||||
describe('useFieldPreviewValue', () => {
|
||||
it('returns null if skip is true', () => {
|
||||
// Given
|
||||
const fieldName = 'amount';
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === fieldName && type === FieldMetadataType.Currency,
|
||||
);
|
||||
@ -52,7 +51,7 @@ describe('useFieldPreviewValue', () => {
|
||||
it("returns the field's preview value for a Currency field", () => {
|
||||
// Given
|
||||
const fieldName = 'amount';
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === fieldName && type === FieldMetadataType.Currency,
|
||||
);
|
||||
@ -106,7 +105,7 @@ describe('useFieldPreviewValue', () => {
|
||||
it("returns the field's preview value for a Select field", () => {
|
||||
// Given
|
||||
const fieldName = 'stage';
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === fieldName && type === FieldMetadataType.Select,
|
||||
);
|
||||
@ -169,7 +168,7 @@ describe('useFieldPreviewValue', () => {
|
||||
it("returns the field's preview value for other field types", () => {
|
||||
// Given
|
||||
const fieldName = 'employees';
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === fieldName,
|
||||
);
|
||||
|
||||
|
||||
@ -1,16 +1,22 @@
|
||||
import { CurrencyCode } from '@/object-record/record-field/types/CurrencyCode';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
import {
|
||||
mockedCompanyObjectMetadataItem,
|
||||
mockedOpportunityObjectMetadataItem,
|
||||
} from '~/testing/mock-data/metadata';
|
||||
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { getCurrencyFieldPreviewValue } from '../getCurrencyFieldPreviewValue';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
);
|
||||
|
||||
const mockedOpportunityObjectMetadataItem =
|
||||
generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'opportunity',
|
||||
);
|
||||
|
||||
describe('getCurrencyFieldPreviewValue', () => {
|
||||
it('returns null if the field is not a Currency field', () => {
|
||||
// Given
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ type }) => type !== FieldMetadataType.Currency,
|
||||
);
|
||||
|
||||
@ -26,7 +32,7 @@ describe('getCurrencyFieldPreviewValue', () => {
|
||||
});
|
||||
|
||||
const fieldName = 'amount';
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem?.fields.find(
|
||||
({ name, type }) =>
|
||||
name === fieldName && type === FieldMetadataType.Currency,
|
||||
);
|
||||
|
||||
@ -1,17 +1,21 @@
|
||||
import { getFieldPreviewValue } from '@/settings/data-model/fields/preview/utils/getFieldPreviewValue';
|
||||
import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
import {
|
||||
mockedCompanyObjectMetadataItem,
|
||||
mockedCustomObjectMetadataItem,
|
||||
mockedPersonObjectMetadataItem,
|
||||
} from '~/testing/mock-data/metadata';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
);
|
||||
|
||||
const mockedPersonObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'person',
|
||||
);
|
||||
|
||||
describe('getFieldPreviewValue', () => {
|
||||
it("returns the field's defaultValue from metadata if it exists", () => {
|
||||
// Given
|
||||
const fieldName = 'idealCustomerProfile';
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === fieldName,
|
||||
);
|
||||
|
||||
@ -29,7 +33,7 @@ describe('getFieldPreviewValue', () => {
|
||||
it('returns a placeholder defaultValue if the field metadata does not have a defaultValue', () => {
|
||||
// Given
|
||||
const fieldName = 'employees';
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === fieldName,
|
||||
);
|
||||
|
||||
@ -50,25 +54,7 @@ describe('getFieldPreviewValue', () => {
|
||||
it('returns null if the field is supported in Settings but has no pre-configured placeholder defaultValue', () => {
|
||||
// Given
|
||||
const fieldName = 'company';
|
||||
const fieldMetadataItem = mockedPersonObjectMetadataItem.fields.find(
|
||||
({ name }) => name === fieldName,
|
||||
);
|
||||
|
||||
if (!fieldMetadataItem) {
|
||||
throw new Error(`Field '${fieldName}' not found`);
|
||||
}
|
||||
|
||||
// When
|
||||
const result = getFieldPreviewValue({ fieldMetadataItem });
|
||||
|
||||
// Then
|
||||
expect(result).toBeNull();
|
||||
});
|
||||
|
||||
it('returns null if the field is not supported in Settings', () => {
|
||||
// Given
|
||||
const fieldName = 'position';
|
||||
const fieldMetadataItem = mockedCustomObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedPersonObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === fieldName,
|
||||
);
|
||||
|
||||
|
||||
@ -1,15 +1,20 @@
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
import {
|
||||
mockedCompanyObjectMetadataItem,
|
||||
mockedCustomObjectMetadataItem,
|
||||
} from '~/testing/mock-data/metadata';
|
||||
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { getMultiSelectFieldPreviewValue } from '../getMultiSelectFieldPreviewValue';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
);
|
||||
|
||||
const mockedOpportunityObjectMetadataItem =
|
||||
generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'opportunity',
|
||||
);
|
||||
|
||||
describe('getMultiSelectFieldPreviewValue', () => {
|
||||
it('returns null if the field is not a Multi-Select field', () => {
|
||||
// Given
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ type }) => type !== FieldMetadataType.MultiSelect,
|
||||
);
|
||||
|
||||
@ -24,10 +29,11 @@ describe('getMultiSelectFieldPreviewValue', () => {
|
||||
expect(previewValue).toBeNull();
|
||||
});
|
||||
|
||||
const fieldName = 'priority';
|
||||
const selectFieldMetadataItem = mockedCustomObjectMetadataItem.fields.find(
|
||||
({ name, type }) => name === fieldName && type === FieldMetadataType.Select,
|
||||
);
|
||||
const fieldName = 'stage';
|
||||
const selectFieldMetadataItem =
|
||||
mockedOpportunityObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === fieldName,
|
||||
);
|
||||
|
||||
if (!selectFieldMetadataItem) {
|
||||
throw new Error(`Field '${fieldName}' not found`);
|
||||
@ -52,7 +58,13 @@ describe('getMultiSelectFieldPreviewValue', () => {
|
||||
});
|
||||
|
||||
// Then
|
||||
expect(previewValue).toEqual(['MEDIUM', 'LOW']);
|
||||
expect(previewValue).toEqual([
|
||||
'NEW',
|
||||
'SCREENING',
|
||||
'MEETING',
|
||||
'PROPOSAL',
|
||||
'CUSTOMER',
|
||||
]);
|
||||
});
|
||||
|
||||
it("returns all option values if no defaultValue was found in the field's metadata", () => {
|
||||
@ -69,7 +81,13 @@ describe('getMultiSelectFieldPreviewValue', () => {
|
||||
});
|
||||
|
||||
// Then
|
||||
expect(previewValue).toEqual(['LOW', 'MEDIUM', 'HIGH']);
|
||||
expect(previewValue).toEqual([
|
||||
'NEW',
|
||||
'SCREENING',
|
||||
'MEETING',
|
||||
'PROPOSAL',
|
||||
'CUSTOMER',
|
||||
]);
|
||||
expect(previewValue).toEqual(
|
||||
fieldMetadataItemWithDefaultValue.options?.map(({ value }) => value),
|
||||
);
|
||||
@ -89,7 +107,13 @@ describe('getMultiSelectFieldPreviewValue', () => {
|
||||
});
|
||||
|
||||
// Then
|
||||
expect(previewValue).toEqual(['LOW', 'MEDIUM', 'HIGH']);
|
||||
expect(previewValue).toEqual([
|
||||
'NEW',
|
||||
'SCREENING',
|
||||
'MEETING',
|
||||
'PROPOSAL',
|
||||
'CUSTOMER',
|
||||
]);
|
||||
expect(previewValue).toEqual(
|
||||
fieldMetadataItemWithDefaultValue.options?.map(({ value }) => value),
|
||||
);
|
||||
|
||||
@ -1,15 +1,21 @@
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
import {
|
||||
mockedCompanyObjectMetadataItem,
|
||||
mockedCustomObjectMetadataItem,
|
||||
} from '~/testing/mock-data/metadata';
|
||||
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
||||
import { getSelectFieldPreviewValue } from '../getSelectFieldPreviewValue';
|
||||
|
||||
const mockedCompanyObjectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'company',
|
||||
);
|
||||
|
||||
const mockedOpportunityObjectMetadataItem =
|
||||
generatedMockObjectMetadataItems.find(
|
||||
(item) => item.nameSingular === 'opportunity',
|
||||
);
|
||||
|
||||
describe('getSelectFieldPreviewValue', () => {
|
||||
it('returns null if the field is not a Select field', () => {
|
||||
// Given
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem.fields.find(
|
||||
const fieldMetadataItem = mockedCompanyObjectMetadataItem?.fields.find(
|
||||
({ type }) => type !== FieldMetadataType.Select,
|
||||
);
|
||||
|
||||
@ -24,9 +30,9 @@ describe('getSelectFieldPreviewValue', () => {
|
||||
expect(previewValue).toBeNull();
|
||||
});
|
||||
|
||||
const fieldName = 'priority';
|
||||
const fieldMetadataItem = mockedCustomObjectMetadataItem.fields.find(
|
||||
({ name, type }) => name === fieldName && type === FieldMetadataType.Select,
|
||||
const fieldName = 'stage';
|
||||
const fieldMetadataItem = mockedOpportunityObjectMetadataItem?.fields.find(
|
||||
({ name }) => name === fieldName,
|
||||
);
|
||||
|
||||
if (!fieldMetadataItem) {
|
||||
@ -35,7 +41,7 @@ describe('getSelectFieldPreviewValue', () => {
|
||||
|
||||
it("returns the defaultValue as an option value if a valid defaultValue is found in the field's metadata", () => {
|
||||
// Given
|
||||
const defaultValue = "'MEDIUM'";
|
||||
const defaultValue = "'NEW'";
|
||||
const fieldMetadataItemWithDefaultValue = {
|
||||
...fieldMetadataItem,
|
||||
defaultValue,
|
||||
@ -47,7 +53,7 @@ describe('getSelectFieldPreviewValue', () => {
|
||||
});
|
||||
|
||||
// Then
|
||||
expect(previewValue).toBe('MEDIUM');
|
||||
expect(previewValue).toBe('NEW');
|
||||
});
|
||||
|
||||
it("returns the first option value if no defaultValue was found in the field's metadata", () => {
|
||||
@ -64,7 +70,7 @@ describe('getSelectFieldPreviewValue', () => {
|
||||
});
|
||||
|
||||
// Then
|
||||
expect(previewValue).toBe('LOW');
|
||||
expect(previewValue).toBe('NEW');
|
||||
expect(previewValue).toBe(
|
||||
fieldMetadataItemWithDefaultValue.options?.[0]?.value,
|
||||
);
|
||||
@ -84,7 +90,7 @@ describe('getSelectFieldPreviewValue', () => {
|
||||
});
|
||||
|
||||
// Then
|
||||
expect(previewValue).toBe('LOW');
|
||||
expect(previewValue).toBe('NEW');
|
||||
expect(previewValue).toBe(
|
||||
fieldMetadataItemWithDefaultValue.options?.[0]?.value,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user