diff --git a/app/javascript/dashboard/helper/specs/validations.spec.js b/app/javascript/dashboard/helper/specs/validations.spec.js index a7248a069..f35f244b0 100644 --- a/app/javascript/dashboard/helper/specs/validations.spec.js +++ b/app/javascript/dashboard/helper/specs/validations.spec.js @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest'; import { validateConversationOrContactFilters, - // validateAutomation, + validateAutomation, } from '../validations'; describe('validateConversationOrContactFilters', () => { @@ -41,3 +41,87 @@ describe('validateConversationOrContactFilters', () => { }); }); }); + +describe('validateAutomation', () => { + it('should return no errors for a valid automation', () => { + const validAutomation = { + name: 'Test Automation', + description: 'A test automation', + event_name: 'message_created', + conditions: [ + { + attribute_key: 'content', + filter_operator: 'contains', + values: 'hello', + }, + ], + actions: [ + { action_name: 'send_message', action_params: ['Hello there!'] }, + ], + }; + const errors = validateAutomation(validAutomation); + expect(errors).toEqual({}); + }); + + it('should return errors for missing basic fields', () => { + const invalidAutomation = { + name: '', + description: '', + event_name: '', + conditions: [], + actions: [], + }; + const errors = validateAutomation(invalidAutomation); + expect(errors).toHaveProperty('name'); + expect(errors).toHaveProperty('description'); + expect(errors).toHaveProperty('event_name'); + }); + + it('should return errors for invalid conditions', () => { + const automationWithInvalidConditions = { + name: 'Test', + description: 'Test', + event_name: 'message_created', + conditions: [{ attribute_key: '', filter_operator: '', values: '' }], + actions: [{ action_name: 'send_message', action_params: ['Hello'] }], + }; + const errors = validateAutomation(automationWithInvalidConditions); + expect(errors).toHaveProperty('condition_0'); + }); + + it('should return errors for invalid actions', () => { + const automationWithInvalidActions = { + name: 'Test', + description: 'Test', + event_name: 'message_created', + conditions: [ + { + attribute_key: 'content', + filter_operator: 'contains', + values: 'hello', + }, + ], + actions: [{ action_name: 'send_message', action_params: [] }], + }; + const errors = validateAutomation(automationWithInvalidActions); + expect(errors).toHaveProperty('action_0'); + }); + + it('should not require action params for specific actions', () => { + const automationWithNoParamAction = { + name: 'Test', + description: 'Test', + event_name: 'message_created', + conditions: [ + { + attribute_key: 'content', + filter_operator: 'contains', + values: 'hello', + }, + ], + actions: [{ action_name: 'mute_conversation' }], + }; + const errors = validateAutomation(automationWithNoParamAction); + expect(errors).toEqual({}); + }); +});