Skip to content

Commit ecb563c

Browse files
committed
fix: qa fixes
1 parent 67c171c commit ecb563c

4 files changed

Lines changed: 78 additions & 12 deletions

File tree

pyatlan/generator/templates/methods/asset/alpha__d_q_rule.jinja2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
@classmethod
2+
@classmethod
33
@init_guid
44
def custom_sql_creator(
55
cls,

pyatlan/model/dq_rule_conditions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def add_condition(
9393
value: Optional[Union[str, int, List[str]]] = None,
9494
min_value: Optional[int] = None,
9595
max_value: Optional[int] = None,
96-
) -> "DQRuleConditionsBuilder":
96+
) -> DQRuleConditionsBuilder:
9797
"""
9898
Add a condition to the builder.
9999

tests/unit/model/alpha__d_q_rule_test.py

Lines changed: 74 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import pytest
55

6+
from pyatlan.errors import ErrorCode, InvalidRequestError
67
from pyatlan.model.assets import Column, Table, alpha_DQRule
78
from pyatlan.model.dq_rule_conditions import DQRuleConditionsBuilder
89
from pyatlan.model.enums import (
@@ -454,8 +455,6 @@ def test_column_level_rule_creator_with_rule_conditions(mock_client):
454455

455456

456457
def test_validate_template_features_rule_conditions_not_supported(mock_client):
457-
from pyatlan.errors import InvalidRequestError
458-
459458
config = Mock()
460459
config.alpha_dq_rule_template_config_rule_conditions = None
461460
config.alpha_dq_rule_template_advanced_settings = json.dumps({})
@@ -494,8 +493,6 @@ def test_validate_template_features_rule_conditions_not_supported(mock_client):
494493

495494

496495
def test_validate_template_features_row_scope_filtering_not_supported(mock_client):
497-
from pyatlan.errors import InvalidRequestError
498-
499496
config = Mock()
500497
config.alpha_dq_rule_template_config_rule_conditions = json.dumps(
501498
{"enum": ["STRING_LENGTH_BETWEEN"]}
@@ -539,3 +536,76 @@ def test_updater_with_invalid_parameter_raises_value_error(
539536
client=mock_client,
540537
qualified_name=qualified_name,
541538
)
539+
540+
541+
def test_validate_template_features_invalid_rule_conditions(mock_client):
542+
config = Mock()
543+
config.alpha_dq_rule_template_config_rule_conditions = json.dumps(
544+
{"enum": ["STRING_LENGTH_BETWEEN"]}
545+
)
546+
config.alpha_dq_rule_template_advanced_settings = json.dumps({})
547+
548+
template_config = {
549+
"name": "Test Template",
550+
"qualified_name": "test/template/123",
551+
"config": config,
552+
}
553+
554+
mock_client.dq_template_config_cache.get_template_config.return_value = (
555+
template_config
556+
)
557+
558+
unsupported_condition = json.dumps(
559+
{"conditions": [{"type": "UNSUPPORTED_CONDITION", "value": "test"}]}
560+
)
561+
562+
with pytest.raises(
563+
InvalidRequestError,
564+
match="Invalid rule conditions: condition type 'UNSUPPORTED_CONDITION' not supported, allowed: \\['STRING_LENGTH_BETWEEN'\\]",
565+
):
566+
alpha_DQRule.Attributes._validate_template_features(
567+
rule_type="Test Rule",
568+
rule_conditions=unsupported_condition,
569+
row_scope_filtering_enabled=False,
570+
template_config=template_config,
571+
threshold_compare_operator=alpha_DQRuleThresholdCompareOperator.EQUAL,
572+
)
573+
574+
575+
def test_validate_template_features_row_scope_filter_column_missing(mock_client):
576+
config = Mock()
577+
config.alpha_dq_rule_template_config_rule_conditions = json.dumps(
578+
{"enum": ["STRING_LENGTH_BETWEEN"]}
579+
)
580+
config.alpha_dq_rule_template_advanced_settings = json.dumps(
581+
{"alpha_dqRuleRowScopeFilteringEnabled": True}
582+
)
583+
584+
template_config = {
585+
"name": "Test Template",
586+
"qualified_name": "test/template/123",
587+
"config": config,
588+
}
589+
590+
mock_client.dq_template_config_cache.get_template_config.return_value = (
591+
template_config
592+
)
593+
594+
table_asset = Table.ref_by_qualified_name(
595+
qualified_name=ALPHA_DQ_TABLE_QUALIFIED_NAME
596+
)
597+
598+
with pytest.raises(
599+
InvalidRequestError,
600+
match=ErrorCode.DQ_ROW_SCOPE_FILTER_COLUMN_MISSING.error_message.format(
601+
ALPHA_DQ_TABLE_QUALIFIED_NAME
602+
),
603+
):
604+
alpha_DQRule.Attributes._validate_template_features(
605+
rule_type="Test Rule",
606+
rule_conditions=None,
607+
row_scope_filtering_enabled=True,
608+
template_config=template_config,
609+
threshold_compare_operator=alpha_DQRuleThresholdCompareOperator.EQUAL,
610+
asset=table_asset,
611+
)

tests/unit/test_client.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171
TEST_USER_CLIENT_METHODS,
7272
)
7373
from tests.unit.model.constants import (
74+
ALPHA_DQ_COLUMN_QUALIFIED_NAME,
75+
ALPHA_DQ_TABLE_QUALIFIED_NAME,
7476
CONNECTION_NAME,
7577
CONNECTOR_TYPE,
7678
DATA_DOMAIN_NAME,
@@ -2770,12 +2772,6 @@ def test_add_dq_rule_schedule(mock_api_caller):
27702772

27712773

27722774
def test_set_dq_row_scope_filter_column(mock_api_caller):
2773-
from pyatlan.model.response import AssetMutationResponse
2774-
from tests.unit.model.constants import (
2775-
ALPHA_DQ_COLUMN_QUALIFIED_NAME,
2776-
ALPHA_DQ_TABLE_QUALIFIED_NAME,
2777-
)
2778-
27792775
asset_client = AssetClient(mock_api_caller)
27802776
mock_response = Mock(spec=AssetMutationResponse)
27812777

0 commit comments

Comments
 (0)