Files
twenty_crm/packages/twenty-zapier/src/test/utils/computeInputFields.test.ts
martmull 15a5fec545 Zapier add description to labels (#3787)
* Use object metadata graphql api to fetch input fields

* Clean code

* Clean code

* Remove targetColumnMap

* Remove duplicated testing

* Fix labels
2024-02-13 22:22:47 +01:00

224 lines
5.9 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 { 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: 'RELATION',
name: 'favorites',
label: 'Favorites',
description: 'Favorites linked to the contact',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: 'CURRENCY',
name: 'annualSalary',
label: 'Annual Salary',
description: 'Annual Salary of the Person',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: 'TEXT',
name: 'jobTitle',
label: 'Job Title',
description: 'Contacts job title',
isNullable: false,
defaultValue: {
value: '',
},
},
},
{
node: {
type: 'DATE_TIME',
name: 'updatedAt',
label: 'Update date',
description: null,
isNullable: false,
defaultValue: {
type: 'now',
},
},
},
{
node: {
type: 'FULL_NAME',
name: 'name',
label: 'Name',
description: 'Contacts name',
isNullable: true,
defaultValue: {
lastName: '',
firstName: '',
},
},
},
{
node: {
type: 'UUID',
name: 'id',
label: 'Id',
description: null,
icon: null,
isNullable: false,
defaultValue: {
type: 'uuid',
},
},
},
{
node: {
type: 'NUMBER',
name: 'recordPosition',
label: 'RecordPosition',
description: 'Record Position',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: 'LINK',
name: 'xLink',
label: 'X',
description: 'Contacts X/Twitter account',
isNullable: true,
defaultValue: null,
},
},
{
node: {
type: 'EMAIL',
name: 'email',
label: 'Email',
description: 'Contacts Email',
isNullable: false,
defaultValue: {
value: '',
},
},
},
{
node: {
type: '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,
},
{
key: 'annualSalary__currencyCode',
label: 'Annual Salary: Currency Code',
type: 'string',
helpText:
'Annual Salary of the Person: Currency Code. eg: USD, EUR, etc...',
required: false,
},
{
key: 'jobTitle',
label: 'Job Title',
type: 'string',
helpText: 'Contacts job title',
required: false,
},
{
key: 'updatedAt',
label: 'Update date',
type: 'datetime',
helpText: null,
required: false,
},
{
key: 'name__firstName',
label: 'Name: First Name',
type: 'string',
helpText: 'Contacts name: First Name',
required: false,
},
{
key: 'name__lastName',
label: 'Name: Last Name',
type: 'string',
helpText: 'Contacts name: Last Name',
required: false,
},
{
key: 'recordPosition',
label: 'RecordPosition',
type: 'integer',
helpText: 'Record Position',
required: false,
},
{
key: 'xLink__url',
label: 'X: Url',
type: 'string',
helpText: 'Contacts X/Twitter account: Link Url',
required: false,
},
{
key: 'xLink__label',
label: 'X: Label',
type: 'string',
helpText: 'Contacts X/Twitter account: Link Label',
required: false,
},
{
key: 'email',
label: 'Email',
type: 'string',
helpText: 'Contacts Email',
required: false,
},
{
key: 'companyId',
label: 'Company id (foreign key)',
type: 'string',
helpText: 'Contacts company id foreign key',
required: false,
},
];
const idInputField: InputField = {
key: 'id',
label: 'Id',
type: 'string',
helpText: null,
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,
);
});
});