"""Test ows-product-digital.""" import pytest from src.exceptions import OwsRequestException from src.exceptions import ValidationException from src.logic import ows_product_digital def test_validate_product_by_id_ows_error(request_engine): """Test validate_product_by_id ows error.""" request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/1/validate', status=500, response='foo') with pytest.raises(OwsRequestException) as e: ows_product_digital.validate_product_by_id(1) assert e.value.args == ('validate', '"foo"') def test_validate_product_by_id_validation_error(request_engine): """Test validate_product_by_id validation error.""" request_engine['ows-product-digital'].add_spec( 'GET', '/product/audio/1/validate', response={ 'validations': { 'is_valid': False, 'errors': [{'code': 'A', 'reason': 'a'}], 'tracks': {'1': {'errors': []}} } } ) with pytest.raises(ValidationException) as e: ows_product_digital.validate_product_by_id(1) assert e.value.args == ([(1, None, 'A', 'a')],) def test_format_errors(): """Test format_errors.""" mock_input = { 'validations': { 'is_valid': False, 'errors': [ {'code': 'ABC', 'reason': 'abc'}, {'code': 'DEF', 'reason': 'def'} ], 'warnings': [], 'tracks': { '123': { 'tuid': 123, 'is_valid': False, 'errors': [ {'code': 'FOO', 'reason': 'foo'}, {'code': 'BAR', 'reason': 'bar'} ], 'warnings': [] } } } } actual = ows_product_digital.format_errors(mock_input, 1) assert actual == [ (1, None, 'ABC', 'abc'), (1, None, 'DEF', 'def'), (1, 123, 'FOO', 'foo'), (1, 123, 'BAR', 'bar') ] def test_update_product_status_already_submitted(request_engine): """Test submitting an already submitted product.""" request_engine['ows-product-digital'].add_spec( 'POST', '/product/audio/1/submit', status=400, response='Product is already submitted.' ) actual = ows_product_digital.mark_product_as_submitted(1) assert actual is None def test_update_product_status_error(request_engine): """Test updating a product status error.""" request_engine['ows-product-digital'].add_spec( 'POST', '/product/audio/1/submit', status=400, response='some error' ) with pytest.raises(OwsRequestException) as e: ows_product_digital.mark_product_as_submitted(1) assert e.value.args == ('update_status', '"some error"')