Files
twenty/packages/twenty-zapier/src/test/utils/computeInputFields.test.ts
martmull c6a676e1d5 Fix zapier tests (#7568)
See title
2024-10-10 16:34:34 +02:00

285 lines
7.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { computeInputFields } from '../../utils/computeInputFields';
import { FieldMetadataType, InputField } from '../../utils/data.types';
describe('computeInputFields', () => {
test('should create Person input fields properly', () => {
const personNode = {
nameSingular: 'person',
namePlural: 'people',
labelSingular: 'Person',
fields: {
edges: [
{
node: {
type: FieldMetadataType.RELATION,
name: 'favorites',
label: 'Favorites',
description: 'Favorites linked to the contact',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: FieldMetadataType.CURRENCY,
name: 'annualSalary',
label: 'Annual Salary',
description: 'Annual Salary of the Person',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: FieldMetadataType.TEXT,
name: 'jobTitle',
label: 'Job Title',
description: 'Contacts job title',
isNullable: false,
defaultValue: {
value: '',
},
},
},
{
node: {
type: FieldMetadataType.DATE_TIME,
name: 'updatedAt',
label: 'Update date',
description: null,
isNullable: false,
defaultValue: {
type: 'now',
},
},
},
{
node: {
type: FieldMetadataType.FULL_NAME,
name: 'name',
label: 'Name',
description: 'Contacts name',
isNullable: true,
defaultValue: {
lastName: '',
firstName: '',
},
},
},
{
node: {
type: FieldMetadataType.UUID,
name: 'id',
label: 'Id',
description: null,
icon: null,
isNullable: false,
defaultValue: {
type: 'uuid',
},
},
},
{
node: {
type: FieldMetadataType.NUMBER,
name: 'recordPosition',
label: 'RecordPosition',
description: 'Record Position',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: FieldMetadataType.LINK,
name: 'xLink',
label: 'X',
description: 'Contacts X/Twitter account',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: FieldMetadataType.LINKS,
name: 'whatsapp',
label: 'Whatsapp',
description: 'Contacts Whatsapp account',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: FieldMetadataType.EMAIL,
name: 'email',
label: 'Email',
description: 'Contacts Email',
isNullable: false,
defaultValue: {
value: '',
},
},
},
{
node: {
type: FieldMetadataType.UUID,
name: 'companyId',
label: 'Company id (foreign key)',
description: 'Contacts company id foreign key',
isNullable: true,
defaultValue: null,
},
},
],
},
};
const baseExpectedResult: InputField[] = [
{
key: 'annualSalary__amountMicros',
label: 'Annual Salary: Amount Micros',
type: 'integer',
helpText:
'Annual Salary of the Person: Amount Micros. eg: set 3210000 for 3.21$',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'annualSalary__currencyCode',
label: 'Annual Salary: Currency Code',
type: 'string',
helpText:
'Annual Salary of the Person: Currency Code. eg: USD, EUR, etc...',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'jobTitle',
label: 'Job Title',
type: 'string',
helpText: 'Contacts job title',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'updatedAt',
label: 'Update date',
type: 'datetime',
helpText: null,
required: false,
list: false,
placeholder: undefined,
},
{
key: 'name__firstName',
label: 'Name: First Name',
type: 'string',
helpText: 'Contacts name: First Name',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'name__lastName',
label: 'Name: Last Name',
type: 'string',
helpText: 'Contacts name: Last Name',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'recordPosition',
label: 'RecordPosition',
type: 'integer',
helpText: 'Record Position',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'xLink__url',
label: 'X: Url',
type: 'string',
helpText: 'Contacts X/Twitter account: Link Url',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'xLink__label',
label: 'X: Label',
type: 'string',
helpText: 'Contacts X/Twitter account: Link Label',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'whatsapp__primaryLinkLabel',
label: 'Whatsapp: Primary Link Label',
type: 'string',
helpText: 'Contacts Whatsapp account: Primary Link Label',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'whatsapp__primaryLinkUrl',
label: 'Whatsapp: Primary Link Url',
type: 'string',
helpText: 'Contacts Whatsapp account: Primary Link Url',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'whatsapp__secondaryLinks',
label: 'Whatsapp: Secondary Links',
type: 'string',
helpText: 'Contacts Whatsapp account: Secondary Links',
required: false,
list: true,
placeholder: '{ url: "", label: "" }',
},
{
key: 'email',
label: 'Email',
type: 'string',
helpText: 'Contacts Email',
required: false,
list: false,
placeholder: undefined,
},
{
key: 'companyId',
label: 'Company id (foreign key)',
type: 'string',
helpText: 'Contacts company id foreign key',
required: false,
list: false,
placeholder: undefined,
},
];
const idInputField: InputField = {
key: 'id',
label: 'Id',
type: 'string',
helpText: null,
list: false,
placeholder: undefined,
required: false,
};
const expectedResult = [idInputField].concat(baseExpectedResult);
expect(computeInputFields(personNode)).toEqual(expectedResult);
idInputField.required = true;
const idRequiredExpectedResult = [idInputField].concat(baseExpectedResult);
expect(computeInputFields(personNode, true)).toEqual(
idRequiredExpectedResult,
);
});
});