Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion src/utils/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ const StrategiesType = Object.freeze({
VALUE: 'VALUE_VALIDATION',
NUMERIC: 'NUMERIC_VALIDATION',
TIME: 'TIME_VALIDATION',
DATE: 'DATE_VALIDATION'
DATE: 'DATE_VALIDATION',
REGEX: 'REGEX_VALIDATION'
});

const OperationsType = Object.freeze({
Expand All @@ -42,6 +43,8 @@ const processOperation = (strategy, operation, input, values) => {
return processTime(operation, input, values);
case StrategiesType.DATE:
return processDate(operation, input, values);
case StrategiesType.REGEX:
return processREGEX(operation, input, values);
}
}

Expand Down Expand Up @@ -136,6 +139,29 @@ function processDate(operation, input, values) {
}
}

function processREGEX(operation, input, values) {
switch(operation) {
case OperationsType.EXIST:
for (var i = 0; i < values.length; i++) {
if (input.match(values[i])) {
return true;
}
}
return false;
case OperationsType.NOT_EXIST:
for (var i = 0; i < values.length; i++) {
if (input.match(values[i])) {
return false;
}
}
return true;
case OperationsType.EQUAL:
return input.match(`\\b${values[0]}\\b`) != null;
case OperationsType.NOT_EQUAL:
return input.match(`\\b${values[0]}\\b`) == null;
}
}

module.exports = {
loadDomain,
processOperation,
Expand Down
75 changes: 75 additions & 0 deletions test/test-strategy-operations.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -374,4 +374,79 @@ describe('Processing strategy: DATE', () => {
assert.isTrue(result);
})

})

describe('Processing strategy: REGEX', () => {
const mock_values1 = [
'\\bUSER_[0-9]{1,2}\\b'
];

const mock_values2 = [
'\\bUSER_[0-9]{1,2}\\b', '\\buser-[0-9]{1,2}\\b'
];

const mock_values3 = [
'USER_[0-9]{1,2}'
];

it('UNIT_STRATEGY_SUITE - Should agree when expect to exist using EXIST operation', () => {
let result = processOperation(
StrategiesType.REGEX, OperationsType.EXIST, 'USER_1', mock_values1);
assert.isTrue(result);

result = processOperation(
StrategiesType.REGEX, OperationsType.EXIST, 'user-01', mock_values2);
assert.isTrue(result);
})

it('UNIT_STRATEGY_SUITE - Should NOT agree when expect to exist using EXIST operation', () => {
let result = processOperation(
StrategiesType.REGEX, OperationsType.EXIST, 'USER_123', mock_values1);
assert.isFalse(result);

//mock_values3 does not require exact match
result = processOperation(
StrategiesType.REGEX, OperationsType.EXIST, 'USER_123', mock_values3);
assert.isTrue(result);
})

it('UNIT_STRATEGY_SUITE - Should agree when expect to not exist using NOT_EXIST operation', () => {
let result = processOperation(
StrategiesType.REGEX, OperationsType.NOT_EXIST, 'USER_123', mock_values1);
assert.isTrue(result);

result = processOperation(
StrategiesType.REGEX, OperationsType.NOT_EXIST, 'user-123', mock_values2);
assert.isTrue(result);
})

it('UNIT_STRATEGY_SUITE - Should NOT agree when expect to not exist using NOT_EXIST operation', () => {
const result = processOperation(
StrategiesType.REGEX, OperationsType.NOT_EXIST, 'USER_12', mock_values1);
assert.isFalse(result);
})

it('UNIT_STRATEGY_SUITE - Should agree when expect to be equal using EQUAL operation', () => {
const result = processOperation(
StrategiesType.REGEX, OperationsType.EQUAL, 'USER_11', mock_values3);
assert.isTrue(result);
})

it('UNIT_STRATEGY_SUITE - Should NOT agree when expect to be equal using EQUAL operation', () => {
const result = processOperation(
StrategiesType.REGEX, OperationsType.EQUAL, 'user-11', mock_values3);
assert.isFalse(result);
})

it('UNIT_STRATEGY_SUITE - Should agree when expect to not be equal using NOT_EQUAL operation', () => {
const result = processOperation(
StrategiesType.REGEX, OperationsType.NOT_EQUAL, 'USER_123', mock_values3);
assert.isTrue(result);
})

it('UNIT_STRATEGY_SUITE - Should NOT agree when expect to not be equal using NOT_EQUAL operation', () => {
const result = processOperation(
StrategiesType.REGEX, OperationsType.NOT_EQUAL, 'USER_1', mock_values3);
assert.isFalse(result);
})
})