Skip to content

Commit

Permalink
[UXE-5966] fix: incorrect argument when saving criteria rules engine (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasmendes21 authored Dec 20, 2024
1 parent 4e9a135 commit 5ca1f13
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { AxiosHttpClientAdapter } from '@/services/axios/AxiosHttpClientAdapter'
import { makeEdgeApplicationV4BaseUrl } from '@/services/edge-application-services/v4/make-edge-application-v4-base-url'
import * as Errors from '@/services/axios/errors'
import { adaptBehavior } from './helper-behavior'
import { adaptCriteria } from './helper-criteria'
import { extractApiError } from '@/helpers/extract-api-error'

export const editRulesEngineService = async ({ id, payload, reorder = false }) => {
Expand All @@ -28,7 +29,7 @@ const adapt = (payload, reorder) => {
name,
phase: phase.content || phase,
behaviors: adaptBehavior(behaviors),
criteria,
criteria: adaptCriteria(criteria),
active: isActive,
description
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const isExistenceOperator = (operator) => ['exists', 'does_not_exist'].includes(operator)

const processCriteria = (criteria) => {
if (!isExistenceOperator(criteria.operator)) {
return criteria
}

// eslint-disable-next-line no-unused-vars
const { argument, ...processedCriteria } = criteria
return processedCriteria
}

export const adaptCriteria = (criterias) => {
return criterias.map((criteriaArray) => {
return criteriaArray.map(processCriteria)
})
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { AxiosHttpClientAdapter } from '@/services/axios/AxiosHttpClientAdapter'
import * as Errors from '@/services/axios/errors'
import { editRulesEngineService } from '@/services/edge-application-rules-engine-services/v4'
import { describe, expect, it, vi } from 'vitest'
import { adaptCriteria } from '@/services/edge-application-rules-engine-services/v4/helper-criteria'

const fixtures = {
ruleEngineMock: {
Expand All @@ -17,15 +18,13 @@ const fixtures = {
}
],
criteria: [
{
entries: [
{
variable: 'remote_addr',
operator: 'is_equal',
value: '127.0.0.1'
}
]
}
[
{
variable: 'remote_addr',
operator: 'is_equal',
value: '127.0.0.1'
}
]
],
isActive: true,
description: 'Test rule description'
Expand Down Expand Up @@ -123,4 +122,48 @@ describe('EdgeApplicationRulesEngineServices', () => {

expect(promise).rejects.toBe('Bad Request Error')
})

it('should remove argument from criteria when operator is "exists" or "does_not_exist"', () => {
const criterias = [
[
{
variable: 'remote_addr',
operator: 'exists',
argument: '192.168.1.1'
},
{
variable: 'remote_addr',
operator: 'is_equal',
argument: '192.168.1.1'
},
{
variable: 'remote_addr',
operator: 'does_not_exist',
argument: '192.168.1.2'
},
]
]

const expectedCriterias = [
[
{
variable: 'remote_addr',
operator: 'exists'
},
{
variable: 'remote_addr',
operator: 'is_equal',
argument: '192.168.1.1'
},
{
variable: 'remote_addr',
operator: 'does_not_exist'
},
]
]

const result = adaptCriteria(criterias)

expect(result).toEqual(expectedCriterias)
})
})

0 comments on commit 5ca1f13

Please sign in to comment.