Skip to content

Commit cfa3ad1

Browse files
committed
unit tests
1 parent 45bc465 commit cfa3ad1

22 files changed

+549
-150
lines changed
Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
11
{
22
"folders": [
3-
{
4-
"path": "."
5-
},
6-
{
7-
"path": "backend"
8-
},
9-
{
10-
"path": "filenameprocessor"
11-
},
12-
{
13-
"path": "recordprocessor"
14-
},
15-
{
16-
"path": "delta_backend"
17-
},
18-
{
19-
"path": "mesh_processor"
20-
},
21-
{
22-
"path": "e2e"
23-
},
24-
{
25-
"path": "e2e_batch"
26-
},
27-
{
28-
"path": "lambdas/ack_backend"
29-
},
3+
{
4+
"path": "."
5+
},
6+
{
7+
"path": "backend"
8+
},
9+
{
10+
"path": "filenameprocessor"
11+
},
12+
{
13+
"path": "recordprocessor"
14+
},
15+
{
16+
"path": "delta_backend"
17+
},
18+
{
19+
"path": "mesh_processor"
20+
},
21+
{
22+
"path": "e2e"
23+
},
24+
{
25+
"path": "e2e_batch"
26+
},
27+
{
28+
"path": "lambdas/ack_backend"
29+
},
3030
{
3131
"path": "lambdas/redis_sync"
3232
},
33-
{
34-
"path": "lambdas/id_sync"
33+
{
34+
"path": "lambdas/id_sync"
3535
},
36-
{
36+
{
3737
"path": "lambdas/mns_subscription"
38-
},
39-
{
40-
"path": "lambdas/shared"
41-
}
42-
],
38+
},
39+
{
40+
"path": "lambdas/shared"
41+
}
42+
],
4343
"settings": {}
4444
}

lambdas/shared/Makefile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1+
TEST_ENV := @PYTHONPATH=src:tests:src/common
2+
13
test:
2-
@PYTHONPATH=src:../ python -m unittest discover -s tests -p "test_*.py" -v
4+
$(TEST_ENV) python -m unittest discover -s tests -p "test_*.py" -v
5+
6+
testv:
7+
$(TEST_ENV) python -m unittest discover -s tests/test_common/validator -p "test_*.py" -v
38

49
test-list:
510
@PYTHONPATH=src:tests python -m unittest discover -s tests -p "test_*.py" --verbose | grep test_

lambdas/shared/src/common/validator/__init__.py

Whitespace-only changes.

lambdas/shared/src/common/validator/enums/__init__.py

Whitespace-only changes.

lambdas/shared/src/common/validator/enums/error_levels.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
WARNING = 1
66
NOTIFICATION = 2
77

8+
89
MESSAGES = {
910
CRITICAL_ERROR: 'Critical Validation Error [%s]: %s',
1011
WARNING: 'Non-Critical Validation Error [%s]: %s',

lambdas/shared/src/common/validator/enums/exception_messages.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
2+
13
# all exceptions and messgaes
24
UNEXPECTED_EXCEPTION = 0
35
VALUE_CHECK_FAILED = 1

lambdas/shared/src/common/validator/validation_expression_checker.py renamed to lambdas/shared/src/common/validator/expression_checker.py

Lines changed: 24 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,14 @@
11
# Root and base type expression checker functions
2-
import validator.enums.exception_messages as ExceptionMessages
2+
import common.validator.enums.exception_messages as ExceptionMessages
33
import datetime
44
import uuid
55
import re
6-
from validator.lookup.lookup_data import LookUpData
7-
from validator.lookup.key_data import KeyData
8-
9-
10-
class ErrorReport():
11-
def __init__(self, code: int, message: str, row: int = None, field: str = None, details: str = None,
12-
summarise: bool = False):
13-
self.code = code
14-
self.message = message
15-
if not summarise:
16-
self.row = row
17-
self.field = field
18-
self.details = details
19-
self.summarise = summarise
20-
# these are set when the error is added to the report
21-
self.error_group = None
22-
self.name = None
23-
self.id = None
24-
self.error_level = None
25-
26-
# function to return the object as a dictionary
27-
def to_dict(self):
28-
ret = {
29-
'code': self.code,
30-
'message': self.message
31-
}
32-
if not self.summarise:
33-
ret.update({
34-
'row': self.row,
35-
'field': self.field,
36-
'details': self.details
37-
})
38-
return ret
39-
40-
41-
# record exception capture
42-
class RecordError(Exception):
43-
44-
def __init__(self, code=None, message=None, details=None):
45-
self.code = code
46-
self.message = message
47-
self.details = details
48-
49-
def __str__(self):
50-
return repr((self.code, self.message, self.details))
51-
52-
def __repr__(self):
53-
return repr((self.code, self.message, self.details))
54-
55-
56-
# main expressions checker
6+
from common.validator.lookup.lookup_data import LookUpData
7+
from common.validator.lookup.key_data import KeyData
8+
from common.validator.record_error import RecordError, ErrorReport
9+
10+
5711
class ExpressionChecker:
58-
# validation settings
59-
# summarise = False
60-
# report_unexpected_exception = True
61-
# dataParser = any
62-
# dataLookUp = any
63-
# keyData = any
6412

6513
def __init__(self, data_parser, summarise, report_unexpected_exception):
6614
self.data_parser = data_parser # FHIR data parser for additional functions
@@ -160,9 +108,26 @@ def _validate_uuid(self, expressionRule, field_name, field_value, row):
160108

161109
# Integer Validate
162110
def _validate_integer(self, expression_rule, field_name,
163-
field_value, row, summarise) -> ErrorReport:
111+
field_value, row, summarise=False) -> ErrorReport:
164112
try:
165113
int(field_value)
114+
if expression_rule:
115+
# TODO - code is incomplete here. It appears there should be a check
116+
# against expression_rule but it's not implemented. eg max, min, equal etc
117+
# eg "1" means value must be 1
118+
# "1:10" means value must be between 1 to 10
119+
# "1,10" means value must be either 1 or 10
120+
# ":10" means value must be less than or equal to 10
121+
# "1:" means value must be greater than or equal to 1
122+
# ">10" means value must be greater than 10
123+
# "<10" means value must be less than 10
124+
125+
check_value = int(expression_rule)
126+
if field_value != check_value:
127+
raise RecordError(ExceptionMessages.RECORD_CHECK_FAILED,
128+
"Value integer check failed",
129+
"Value does not equal expected value, Expected- " + expression_rule
130+
+ " found- " + field_value)
166131
except RecordError as e:
167132
code = e.code if e.code is not None else ExceptionMessages.RECORD_CHECK_FAILED
168133
message = (e.message if e.message is not None

lambdas/shared/src/common/validator/lookup/__init__.py

Whitespace-only changes.

lambdas/shared/src/common/validator/parsers/__init__.py

Whitespace-only changes.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
2+
3+
class ErrorReport():
4+
def __init__(self, code: int = None, message: str = None, row: int = None, field: str = None, details: str = None,
5+
summarise: bool = False, error_level: int = None):
6+
self.code = code
7+
self.message = message
8+
if not summarise:
9+
self.row = row
10+
self.field = field
11+
self.details = details
12+
self.summarise = summarise
13+
# these are set when the error is added to the report
14+
self.error_group = None
15+
self.name = None
16+
self.id = None
17+
self.error_level = error_level
18+
19+
# function to return the object as a dictionary
20+
def to_dict(self):
21+
ret = {
22+
'code': self.code,
23+
'message': self.message
24+
}
25+
if not self.summarise:
26+
ret.update({
27+
'row': self.row,
28+
'field': self.field,
29+
'details': self.details
30+
})
31+
return ret
32+
33+
34+
# record exception capture
35+
class RecordError(Exception):
36+
37+
def __init__(self, code=None, message=None, details=None):
38+
self.code = code
39+
self.message = message
40+
self.details = details
41+
42+
def __str__(self):
43+
return repr((self.code, self.message, self.details))
44+
45+
def __repr__(self):
46+
return repr((self.code, self.message, self.details))

0 commit comments

Comments
 (0)