"""Test utils.""" import json from unittest.mock import (MagicMock, patch) from bulk_metadata_ingester_common.models.bulk_release import ( BulkRelease, sanitize_string ) from bulk_metadata_ingester_common.utils import ( catalog_ingestion, data, error, release_utils, ) from ddex_ingester_common.constants.catalog_ingestion import ( INSERT_ACTION, ) from lambdacommon.graphql.graphql import GraphQLError import pytest @patch('bulk_metadata_ingester_common.utils.release_utils.get_release_track_list') # noqa: E501 def test_get_all_release_models( mock_get_release_track_list, test_multiple_releases_json): """Test get_all_release_models.""" mock_get_release_track_list.return_value = json.loads(test_multiple_releases_json) # noqa: E501 full_model = release_utils.get_all_release_models('', '') assert full_model['7892920192100_____991397102'].release_name == 'Vacilei' assert full_model assert len(full_model) == 11 def test_catalog_ingestion( test_event, test_release_json): """Test catalog_ingestion.""" release = {} event = {} data = json.loads(test_release_json) # Grab an item from the list via passed item_index release = data[test_event.get('item_index')] modeled_release = BulkRelease(json_release_rows=release) mock_catalog_ingestion_session = MagicMock() catalog_ingestion.catalog_ingestion_session = \ mock_catalog_ingestion_session catalog_ingestion.save_catalog_ingestion_action( event, modeled_release, {}, INSERT_ACTION ) mock_catalog_ingestion_session.save.assert_called() mock_catalog_ingestion_session.add.assert_called() add_call_object = mock_catalog_ingestion_session.add.call_args[0][0] assert add_call_object.action == 'insert' assert add_call_object.result == 'Success' def test_catalog_ingestion_with_track_data( test_event, test_track_data, test_release_json): """Test catalog_ingestion with track data.""" release = {} event = {} data = json.loads(test_release_json) # Grab an item from the list via passed item_index release = data[test_event.get('item_index')] modeled_release = BulkRelease(json_release_rows=release) mock_catalog_ingestion_session = MagicMock() catalog_ingestion.catalog_ingestion_session = \ mock_catalog_ingestion_session catalog_ingestion.save_catalog_ingestion_action( event, modeled_release, test_track_data, INSERT_ACTION ) mock_catalog_ingestion_session.save.assert_called() mock_catalog_ingestion_session.add.assert_called() add_call_object = mock_catalog_ingestion_session.add.call_args[0][0] assert add_call_object.isrc == 'BAC1283' assert add_call_object.tuid == 19521 assert add_call_object.track_sequence_number == 1 assert add_call_object.track_volume_number == 1 assert add_call_object.track_name == 'My Cool Track' assert add_call_object.action == 'insert' assert add_call_object.result == 'Success' def test_pivot_bulk_file(bulk_dataframe, pivot_bulk_file_return): """Test pivot_bulk_file.""" result = data.pivot_bulk_file(bulk_dataframe, MagicMock()) assert result == pivot_bulk_file_return def test_retry_on_infra_failure(infra_error, graphql_error_data): """Test retry_on_infra_failure.""" graphql_error_data[0]['message'] = infra_error['errorMessage'] err = GraphQLError(graphql_error_data) with pytest.raises(error.RetryLambdaException): error.retry_on_infra_failure(err, MagicMock()) def test_retry_on_infra_failure_2(regular_error, graphql_error_data): """Test retry_on_infra_failure.""" graphql_error_data[0]['message'] = regular_error['errorMessage'] err = GraphQLError(graphql_error_data) error.retry_on_infra_failure(err, MagicMock()) def test_sanitize_string(): """Test sanitize_string method.""" s = ' \thello\n\r ' output = sanitize_string(s) expected_output = 'hello' assert output == expected_output