"""Tests for data_validator module.""" import pytest import data_validator import lambda_exceptions @pytest.fixture def valid_phf_sales_data_record(): """Return valid phf sales data.""" return { 'original_track_id': 10, 'company': 'phonofile', 'track_name': 'test_name', 'upc': '012345678', 'isrc': '234567901', 'track_artist': 'test_artist', 'length_minute': 2, 'length_seconds': 22, 'label': 'test_label', 'public_domain': 'domain', 'writer': 'test_writer', 'publisher': 'test_publisher', 'release_date': '20180101', 'release_title': 'test_title', 'release_artist': 'test_artist', 'original_publishers': 'test_publishers', 'store': 'test store', 'transaction_type': 'test_type', 'usage_type': 111, 'qty': 100, 'royalty_rate': 33.33, 'royalty': 22.22, 'gross_revenue': None, 'net_revenue': None, 'dist_fee': 55.55, 'admin_fee': 66.66 } def test_validate_phf_sales_data_record_valid( valid_phf_sales_data_record): """Test validate_phf_sales_data_record with valid data.""" line_number = 1 result = data_validator.validate_phf_sales_data_record( valid_phf_sales_data_record, line_number) assert result == valid_phf_sales_data_record def test_validate_phf_sales_data_record_invalid( valid_phf_sales_data_record): """Test validate_phf_sales_data_record with invalid data.""" invalid_data = { 'length_minute': 'a', 'writer': 'test_writer' * 100, 'track_name': 20, 'upc': 12345678, 'public_domain': 'test_domain', } line_number = 1 expected_msg = ( '(DataValidationFailed(...), ' '\'Following fields contain invalid data:') test_data = valid_phf_sales_data_record test_data.update(invalid_data) with pytest.raises(lambda_exceptions.DataValidationFailed) as e: data_validator.validate_phf_sales_data_record(test_data, line_number) err_msg = str(e.value) assert err_msg.startswith(expected_msg) for field in invalid_data: assert any(field in val for val in e.value.invalid_fields.values())