"""Test save validation result.""" from unittest.mock import MagicMock from ddex_ingester_common.constants.catalog_ingestion import ( REJECT, SUCCESS, WARNING, ) from ddex_ingester_common.helpers.catalog_ingestion import ( CatalogIngestionValidationResult ) from ddex_ingester_common.validation.rules import RuleResult from ddex_ingester_common.validation.utils import save_validation_result def test_save_validation_result(): """Test save validation result.""" catalog_ingestion_session = MagicMock() state_machine_name = 'state-machine' execution_name = 'state-machine-execution-123' validation_results = [ RuleResult(123, REJECT, 'Something is not correct'), RuleResult(124, REJECT, 'Something ELSE is not correct') ] expected_output = [ CatalogIngestionValidationResult( state_machine_name=state_machine_name, state_machine_execution_name=execution_name, validation_rule_id=validation_results[0].validation_rule_id, response=validation_results[0].response, message=validation_results[0].message ), CatalogIngestionValidationResult( state_machine_name=state_machine_name, state_machine_execution_name=execution_name, validation_rule_id=validation_results[1].validation_rule_id, response=validation_results[1].response, message=validation_results[1].message ), ] output = save_validation_result( validation_results, state_machine_name, execution_name, catalog_ingestion_session ) assert output == expected_output catalog_ingestion_session.add.assert_called_once_with( expected_output ) catalog_ingestion_session.save.assert_called_once() def test_save_validation_result_mixed_warnings(): """Test save validation result.""" catalog_ingestion_session = MagicMock() state_machine_name = 'state-machine' execution_name = 'state-machine-execution-123' validation_results = [ RuleResult(122, WARNING, 'A warning to be aware of'), RuleResult(123, REJECT, 'Something is not correct'), RuleResult(124, REJECT, 'Something ELSE is not correct') ] expected_output = [ CatalogIngestionValidationResult( state_machine_name=state_machine_name, state_machine_execution_name=execution_name, validation_rule_id=validation_results[0].validation_rule_id, response=validation_results[0].response, message=validation_results[0].message ), CatalogIngestionValidationResult( state_machine_name=state_machine_name, state_machine_execution_name=execution_name, validation_rule_id=validation_results[1].validation_rule_id, response=validation_results[1].response, message=validation_results[1].message ), CatalogIngestionValidationResult( state_machine_name=state_machine_name, state_machine_execution_name=execution_name, validation_rule_id=validation_results[2].validation_rule_id, response=validation_results[2].response, message=validation_results[2].message ), ] output = save_validation_result( validation_results, state_machine_name, execution_name, catalog_ingestion_session ) assert output == expected_output catalog_ingestion_session.add.assert_called_once_with( expected_output ) catalog_ingestion_session.save.assert_called_once() def test_save_validation_result_on_success(): """Test save validation result.""" catalog_ingestion_session = MagicMock() state_machine_name = 'state-machine' execution_name = 'state-machine-execution-123' validation_results = [ RuleResult(1, SUCCESS, None) ] expected_output = [CatalogIngestionValidationResult( state_machine_name=state_machine_name, state_machine_execution_name=execution_name, validation_rule_id=1, response=SUCCESS, message=None )] output = save_validation_result( validation_results, state_machine_name, execution_name, catalog_ingestion_session ) assert output == expected_output catalog_ingestion_session.add.assert_called_once_with( expected_output ) catalog_ingestion_session.save.assert_called_once()