|
3 | 3 |
|
4 | 4 | import pytest |
5 | 5 |
|
| 6 | +from pyatlan.errors import ErrorCode, InvalidRequestError |
6 | 7 | from pyatlan.model.assets import Column, Table, alpha_DQRule |
7 | 8 | from pyatlan.model.dq_rule_conditions import DQRuleConditionsBuilder |
8 | 9 | from pyatlan.model.enums import ( |
@@ -454,8 +455,6 @@ def test_column_level_rule_creator_with_rule_conditions(mock_client): |
454 | 455 |
|
455 | 456 |
|
456 | 457 | def test_validate_template_features_rule_conditions_not_supported(mock_client): |
457 | | - from pyatlan.errors import InvalidRequestError |
458 | | - |
459 | 458 | config = Mock() |
460 | 459 | config.alpha_dq_rule_template_config_rule_conditions = None |
461 | 460 | config.alpha_dq_rule_template_advanced_settings = json.dumps({}) |
@@ -494,8 +493,6 @@ def test_validate_template_features_rule_conditions_not_supported(mock_client): |
494 | 493 |
|
495 | 494 |
|
496 | 495 | def test_validate_template_features_row_scope_filtering_not_supported(mock_client): |
497 | | - from pyatlan.errors import InvalidRequestError |
498 | | - |
499 | 496 | config = Mock() |
500 | 497 | config.alpha_dq_rule_template_config_rule_conditions = json.dumps( |
501 | 498 | {"enum": ["STRING_LENGTH_BETWEEN"]} |
@@ -539,3 +536,76 @@ def test_updater_with_invalid_parameter_raises_value_error( |
539 | 536 | client=mock_client, |
540 | 537 | qualified_name=qualified_name, |
541 | 538 | ) |
| 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 | + ) |
0 commit comments