"""Test logic/validate module.""" from src.logic import validate def test_validate_product_all_fields_valid(): """Test validate_product with all fields passing validation.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_service_tier_tier1(): """Test validate_product fails for Tier 1 service tier.""" product = { 'label': { 'service_tier': { 'name': 'tier-1' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'label.service_tier.name' in result['failed_validations'] assert result['failed_validations']['label.service_tier.name'] == \ 'Account is Tier 1 or Premium Services.' def test_validate_product_with_validation_errors(): """Test validate_product fails when validation errors exist.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [{'level': 'error', 'code': 'SOME_ERROR'}] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'validation.errors' in result['failed_validations'] assert result['failed_validations']['validation.errors'] == \ 'Product has metadata errors.' def test_validate_product_with_release_correction(): """Test validate_product fails when release correction exists.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'pending', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'release_correction' in result['failed_validations'] assert result['failed_validations']['release_correction'] == \ 'Product has error correction.' def test_validate_product_with_review_history_two(): """Test validate_product fails when review history count is 2 or more.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 2 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'review_history.totalCount' in result['failed_validations'] assert result['failed_validations']['review_history.totalCount'] == \ 'Product has been submitted more than once.' def test_validate_product_with_review_history_three(): """Test validate_product fails when review history count is 3.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 3 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'review_history.totalCount' in result['failed_validations'] def test_validate_product_with_review_history_one(): """Test validate_product passes when review history count is 1.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 1 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_with_review_history_zero(): """Test validate_product passes when review history count is 0.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_with_special_instructions(): """Test validate_product fails when special instructions exist.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'Some special instructions', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'special_instructions' in result['failed_validations'] assert result['failed_validations']['special_instructions'] == \ 'Product has special instructions.' def test_validate_product_with_version(): """Test validate_product fails when version exists.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'v1.2.3' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'version' in result['failed_validations'] assert result['failed_validations']['version'] == 'Product has version notes.' def test_validate_product_with_empty_array_validation_errors(): """Test validate_product passes when validation errors is empty array.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_with_empty_string_release_correction(): """Test validate_product passes when release_correction is empty string.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': '', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_with_empty_string_special_instructions(): """Test validate_product passes when special_instructions is empty string.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': '', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_with_empty_string_version(): """Test validate_product passes when version is empty string.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': '' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_multiple_failures(): """Test validate_product with multiple validation failures.""" product = { 'label': { 'service_tier': { 'name': 'tier-1' # Should fail } }, 'validation': { 'errors': [{'level': 'error', 'code': 'SOME_ERROR'}], # Should fail 'warnings': [{'level': 'warning', 'code': 'SOME_WARNING'}] # Should fail }, 'release_correction': 'pending', # Should fail 'review_history': { 'totalCount': 3 # Should fail }, 'special_instructions': 'Special instructions', # Should fail 'version': 'v1.0' # Should fail } result = validate.validate_product(product) assert result['is_valid'] is False assert len(result['failed_validations']) == 7 assert 'label.service_tier.name' in result['failed_validations'] assert 'validation.errors' in result['failed_validations'] assert 'validation.warnings' in result['failed_validations'] assert 'release_correction' in result['failed_validations'] assert 'review_history.totalCount' in result['failed_validations'] assert 'special_instructions' in result['failed_validations'] assert 'version' in result['failed_validations'] def test_service_tier_names_constant(): """Test SERVICE_TIER_NAMES constant has expected values.""" assert 'tier-1' in validate.SERVICE_TIER_NAMES assert 'premium-services' in validate.SERVICE_TIER_NAMES assert len(validate.SERVICE_TIER_NAMES) == 2 def test_fields_to_validate_constant(): """Test FIELDS_TO_VALIDATE constant structure.""" assert len(validate.FIELDS_TO_VALIDATE) == 7 paths = [field['path'] for field in validate.FIELDS_TO_VALIDATE] assert 'label.service_tier.name' in paths assert 'validation.errors' in paths assert 'validation.warnings' in paths assert 'release_correction' in paths assert 'review_history.totalCount' in paths assert 'special_instructions' in paths assert 'version' in paths for field_rule in validate.FIELDS_TO_VALIDATE: assert 'path' in field_rule assert 'is_valid' in field_rule assert 'fail_message' in field_rule assert callable(field_rule['is_valid']) def test_validate_product_with_validation_warnings(): """Test validate_product fails when product validation warnings exist.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [], 'warnings': [{'level': 'warning', 'code': 'SOME_WARNING'}] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is False assert 'validation.warnings' in result['failed_validations'] assert result['failed_validations']['validation.warnings'] == \ 'Product has metadata warnings.' def test_validate_product_with_track_validation_errors(): """Test validate_product fails when any track has validation errors.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [], 'warnings': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None', 'tracks': [ { 'trackNumber': 1, 'validation': { 'errors': [], 'warnings': [] } }, { 'trackNumber': 2, 'validation': { 'errors': [{'level': 'error', 'code': 'TRACK_ERROR'}], 'warnings': [] } } ] } result = validate.validate_product(product) assert result['is_valid'] is False assert 'tracks[1].validation.errors' in result['failed_validations'] assert result['failed_validations']['tracks[1].validation.errors'] == \ 'Track 2 has validation errors.' def test_validate_product_with_track_validation_warnings(): """Test validate_product fails when any track has validation warnings.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [], 'warnings': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None', 'tracks': [ { 'trackNumber': 1, 'validation': { 'errors': [], 'warnings': [{'level': 'warning', 'code': 'TRACK_WARNING'}] } } ] } result = validate.validate_product(product) assert result['is_valid'] is False assert 'tracks[0].validation.warnings' in result['failed_validations'] assert result['failed_validations']['tracks[0].validation.warnings'] == \ 'Track 1 has validation warnings.' def test_validate_product_with_multiple_track_validation_issues(): """Test validate_product fails when multiple tracks have validation issues.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [], 'warnings': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None', 'tracks': [ { 'trackNumber': 1, 'validation': { 'errors': [{'level': 'error', 'code': 'ERROR_1'}], 'warnings': [{'level': 'warning', 'code': 'WARNING_1'}] } }, { 'trackNumber': 2, 'validation': { 'errors': [{'level': 'error', 'code': 'ERROR_2'}], 'warnings': [] } } ] } result = validate.validate_product(product) assert result['is_valid'] is False assert 'tracks[0].validation.errors' in result['failed_validations'] assert 'tracks[0].validation.warnings' in result['failed_validations'] assert 'tracks[1].validation.errors' in result['failed_validations'] assert len(result['failed_validations']) == 3 def test_validate_product_with_valid_tracks(): """Test validate_product passes when tracks have no validation issues.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [], 'warnings': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None', 'tracks': [ { 'trackNumber': 1, 'validation': { 'errors': [], 'warnings': [] } }, { 'trackNumber': 2, 'validation': { 'errors': [], 'warnings': [] } } ] } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {} def test_validate_product_with_no_tracks(): """Test validate_product handles products with no tracks array.""" product = { 'label': { 'service_tier': { 'name': 'tier-2' } }, 'validation': { 'errors': [], 'warnings': [] }, 'release_correction': 'None', 'review_history': { 'totalCount': 0 }, 'special_instructions': 'None', 'version': 'None' } result = validate.validate_product(product) assert result['is_valid'] is True assert result['failed_validations'] == {}