diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts index 7fbb7efcedb..083d4e2cf47 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/__tests__/evaluate-filter-conditions.util.spec.ts @@ -298,6 +298,78 @@ describe('evaluateFilterConditions', () => { expect(evaluateFilterConditions({ filters: [filter2] })).toBe(false); }); + it('should return true when left operand is non-empty (IS_NOT_NULL UUID)', () => { + const filter = createFilter( + ViewFilterOperand.IS_NOT_NULL, + uuid1, + '', + 'UUID', + ); + const result = evaluateFilterConditions({ filters: [filter] }); + + expect(result).toBe(true); + }); + + it('should return false when left operand is empty (IS_NOT_NULL UUID)', () => { + const filter = createFilter( + ViewFilterOperand.IS_NOT_NULL, + '', + '', + 'UUID', + ); + const result = evaluateFilterConditions({ filters: [filter] }); + + expect(result).toBe(false); + }); + + it('should return true when left operand is non-empty (IS_NOT_EMPTY UUID)', () => { + const filter = createFilter( + ViewFilterOperand.IS_NOT_EMPTY, + uuid1, + '', + 'UUID', + ); + const result = evaluateFilterConditions({ filters: [filter] }); + + expect(result).toBe(true); + }); + + it('should return false when left operand is empty (IS_NOT_EMPTY UUID)', () => { + const filter = createFilter( + ViewFilterOperand.IS_NOT_EMPTY, + '', + '', + 'UUID', + ); + const result = evaluateFilterConditions({ filters: [filter] }); + + expect(result).toBe(false); + }); + + it('should return true when left operand is empty (IS_EMPTY UUID)', () => { + const filter = createFilter( + ViewFilterOperand.IS_EMPTY, + '', + '', + 'UUID', + ); + const result = evaluateFilterConditions({ filters: [filter] }); + + expect(result).toBe(true); + }); + + it('should return false when left operand is non-empty (IS_EMPTY UUID)', () => { + const filter = createFilter( + ViewFilterOperand.IS_EMPTY, + uuid1, + '', + 'UUID', + ); + const result = evaluateFilterConditions({ filters: [filter] }); + + expect(result).toBe(false); + }); + it('should throw error for unsupported UUID filter operand', () => { const filter = createFilter( ViewFilterOperand.CONTAINS, diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts index 1ba0308573d..78e39b1a8c2 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/filter/utils/evaluate-filter-conditions.util.ts @@ -268,6 +268,11 @@ function evaluateUuidFilter(filter: ResolvedFilter): boolean { return filter.leftOperand === filter.rightOperand; case ViewFilterOperand.IS_NOT: return filter.leftOperand !== filter.rightOperand; + case ViewFilterOperand.IS_EMPTY: + return !isNonEmptyString(filter.leftOperand); + case ViewFilterOperand.IS_NOT_NULL: + case ViewFilterOperand.IS_NOT_EMPTY: + return isNonEmptyString(filter.leftOperand); default: throw new Error( `Operand ${filter.operand} not supported for uuid filter`,