OpenMetadata/ingestion/tests/unit/profiler/test_validation_parsing.py
Pere Miquel Brull 434aa30a92
Fix #3221 - columnValuesToBeUnique vs. columnValuesToBeNotNull JSONs (#3255)
Fix #3221 - columnValuesToBeUnique vs. columnValuesToBeNotNull JSONs (#3255)
2022-03-08 09:15:20 +01:00

197 lines
5.2 KiB
Python

# Copyright 2021 Collate
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Test that we can properly parse JSON definition
of validations
"""
from metadata.generated.schema.tests.column.columnValuesLengthsToBeBetween import (
ColumnValueLengthsToBeBetween,
)
from metadata.generated.schema.tests.column.columnValuesMissingCountToBeEqual import (
ColumnValuesMissingCount,
)
from metadata.generated.schema.tests.column.columnValuesToBeBetween import (
ColumnValuesToBeBetween,
)
from metadata.generated.schema.tests.column.columnValuesToBeNotInSet import (
ColumnValuesToBeNotInSet,
)
from metadata.generated.schema.tests.column.columnValuesToBeNotNull import (
ColumnValuesToBeNotNull,
)
from metadata.generated.schema.tests.column.columnValuesToBeUnique import (
ColumnValuesToBeUnique,
)
from metadata.generated.schema.tests.column.columnValuesToMatchRegex import (
ColumnValuesToMatchRegex,
)
from metadata.generated.schema.tests.columnTest import ColumnTestCase
from metadata.generated.schema.tests.table.tableColumnCountToEqual import (
TableColumnCountToEqual,
)
from metadata.generated.schema.tests.table.tableRowCountToBeBetween import (
TableRowCountToBeBetween,
)
from metadata.generated.schema.tests.table.tableRowCountToEqual import (
TableRowCountToEqual,
)
from metadata.generated.schema.tests.tableTest import TableTestCase
def test_column_values_to_be_unique():
"""
ColumnValuesToBeUnique
"""
obj = {
"config": {"columnValuesToBeUnique": True},
"columnTestType": "columnValuesToBeUnique",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValuesToBeUnique)
def test_column_values_to_be_not_null():
"""
ColumnValuesToBeNotNull
"""
obj = {
"config": {"columnValuesToBeNotNull": True},
"columnTestType": "columnValuesToBeNotNull",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValuesToBeNotNull)
def test_column_values_to_be_between():
"""
ColumnValuesToBeBetween
"""
obj = {
"config": {"minValue": 6, "maxValue": 10},
"columnTestType": "columnValuesToBeBetween",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValuesToBeBetween)
def test_column_value_length_to_be_between():
"""
ColumnValueLengthsToBeBetween
"""
obj = {
"config": {"minLength": 6, "maxLength": 10},
"columnTestType": "columnValueLengthsToBeBetween",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValueLengthsToBeBetween)
def test_column_values_not_in_set():
"""
ColumnValuesToBeNotInSet
"""
obj = {
"config": {"forbiddenValues": ["random"]},
"columnTestType": "columnValuesToBeNotInSet",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValuesToBeNotInSet)
def test_column_values_to_match_regex():
"""
ColumnValuesToMatchRegex
"""
obj = {
"config": {"regex": "%regex%"},
"columnTestType": "columnValuesToMatchRegex",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValuesToMatchRegex)
def test_column_values_missing_count_to_be_equal():
"""
ColumnValuesMissingCount
"""
obj = {
"config": {"missingCountValue": 10, "missingValueMatch": ["N/A"]},
"columnTestType": "columnValuesMissingCountToBeEqual",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValuesMissingCount)
obj = {
"config": {"missingCountValue": 10},
"columnTestType": "columnValuesMissingCountToBeEqual",
}
test_case = ColumnTestCase.parse_obj(obj)
assert isinstance(test_case.config, ColumnValuesMissingCount)
def test_table_row_count_to_equal():
"""
TableRowCountToEqual
"""
obj = {
"config": {"value": 10},
"tableTestType": "tableRowCountToEqual",
}
test_case = TableTestCase.parse_obj(obj)
assert isinstance(test_case.config, TableRowCountToEqual)
def test_table_row_count_to_be_between():
"""
TableRowCountToBeBetween
"""
obj = {
"config": {"minValue": 10, "maxValue": 100},
"tableTestType": "tableRowCountToBeBetween",
}
test_case = TableTestCase.parse_obj(obj)
assert isinstance(test_case.config, TableRowCountToBeBetween)
def test_table_column_count_to_equal():
"""
TableColumnCountToEqual
"""
obj = {
"config": {"columnCount": 10},
"tableTestType": "tableColumnCountToEqual",
}
test_case = TableTestCase.parse_obj(obj)
assert isinstance(test_case.config, TableColumnCountToEqual)