106 lines
3.2 KiB
TypeScript
106 lines
3.2 KiB
TypeScript
import { createOneFieldMetadataFactory } from 'test/integration/metadata/suites/field-metadata/utils/create-one-field-metadata-factory.util';
|
|
import { createListingCustomObject } from 'test/integration/metadata/suites/object-metadata/utils/create-test-object-metadata.util';
|
|
import { deleteOneObjectMetadataItem } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util';
|
|
import { makeMetadataAPIRequest } from 'test/integration/metadata/suites/utils/make-metadata-api-request.util';
|
|
import { FieldMetadataType } from 'twenty-shared';
|
|
|
|
describe('createOne', () => {
|
|
describe('FieldMetadataService name/label sync', () => {
|
|
let listingObjectId = '';
|
|
|
|
beforeEach(async () => {
|
|
const { objectMetadataId: createdObjectId } =
|
|
await createListingCustomObject();
|
|
|
|
listingObjectId = createdObjectId;
|
|
});
|
|
afterEach(async () => {
|
|
await deleteOneObjectMetadataItem(listingObjectId);
|
|
});
|
|
it('should create a field when name and label are synced correctly', async () => {
|
|
// Arrange
|
|
const FIELD_NAME = 'testField';
|
|
const createFieldInput = {
|
|
name: FIELD_NAME,
|
|
label: 'Test Field',
|
|
type: FieldMetadataType.TEXT,
|
|
objectMetadataId: listingObjectId,
|
|
isLabelSyncedWithName: true,
|
|
};
|
|
|
|
// Act
|
|
const graphqlOperation = createOneFieldMetadataFactory({
|
|
input: { field: createFieldInput },
|
|
gqlFields: `
|
|
id
|
|
name
|
|
label
|
|
isLabelSyncedWithName
|
|
`,
|
|
});
|
|
|
|
const response = await makeMetadataAPIRequest(graphqlOperation);
|
|
|
|
// Assert
|
|
expect(response.body.data.createOneField.name).toBe(FIELD_NAME);
|
|
});
|
|
|
|
it('should set isLabelSyncWithName to false if not in input', async () => {
|
|
// Arrange
|
|
const createFieldInput = {
|
|
name: 'testField',
|
|
label: 'Test Field',
|
|
type: FieldMetadataType.TEXT,
|
|
objectMetadataId: listingObjectId,
|
|
};
|
|
|
|
// Act
|
|
const graphqlOperation = createOneFieldMetadataFactory({
|
|
input: { field: createFieldInput },
|
|
gqlFields: `
|
|
id
|
|
name
|
|
label
|
|
isLabelSyncedWithName
|
|
`,
|
|
});
|
|
|
|
const response = await makeMetadataAPIRequest(graphqlOperation);
|
|
|
|
// Assert
|
|
expect(response.body.data.createOneField.isLabelSyncedWithName).toBe(
|
|
false,
|
|
);
|
|
});
|
|
|
|
it('should return an error when name and label are not synced but isLabelSyncedWithName is true', async () => {
|
|
// Arrange
|
|
const createFieldInput = {
|
|
name: 'testField',
|
|
label: 'Different Label',
|
|
type: FieldMetadataType.TEXT,
|
|
objectMetadataId: listingObjectId,
|
|
isLabelSyncedWithName: true,
|
|
};
|
|
|
|
const graphqlOperation = createOneFieldMetadataFactory({
|
|
input: { field: createFieldInput },
|
|
gqlFields: `
|
|
id
|
|
name
|
|
label
|
|
isLabelSyncedWithName
|
|
`,
|
|
});
|
|
|
|
// Act
|
|
const response = await makeMetadataAPIRequest(graphqlOperation);
|
|
|
|
// Assert
|
|
expect(response.body.errors[0].message).toBe(
|
|
'Name is not synced with label. Expected name: "differentLabel", got testField',
|
|
);
|
|
});
|
|
});
|
|
});
|