"""Test OWS logic.""" import pytest from src.exceptions import ApproveRequestBlockedException from src.exceptions import NotSubmittedException from src.exceptions import OwsRequestException from src.logic import ows def test_get_product_submission_success(request_engine): """Test get product submission success.""" request_engine['ows-product-review'].add_spec( 'GET', '/review-queue', response={'items': []}) actual = ows.get_product_submission(1) assert actual == {'items': []} def test_get_product_submission_failure(request_engine): """Test get product submission failure.""" request_engine['ows-product-review'].add_spec( 'GET', '/review-queue', response={'code': 'err'}, status=500) with pytest.raises(OwsRequestException) as e: ows.get_product_submission(1) assert e.value.args[0] == 'review queue' assert e.value.args[1] == '{"code": "err"}' def test_get_review_queue_id_by_product_id_success(request_engine): """Test get review queue id by product id success.""" request_engine['ows-product-review'].add_spec( 'GET', '/review-queue', response={'items': [{'review_queue_id': 7}]} ) actual = ows.get_review_queue_id_by_product_id(1) assert actual == 7 def test_get_review_queue_id_by_product_id_not_submitted(request_engine): """Test get review queue id by product id not submitted.""" request_engine['ows-product-review'].add_spec( 'GET', '/review-queue', response={'items': []}) with pytest.raises(NotSubmittedException) as e: ows.get_review_queue_id_by_product_id(1) assert e.value.args[0] == 1 def test_approve_by_id_success(request_engine): """Test approve by id success.""" request_engine['ows-product-review'].add_spec('POST', '/approve/5') actual = ows.approve_by_id(5) assert actual is None def test_approve_by_id_failure(request_engine): """Test approve by id failure.""" request_engine['ows-product-review'].add_spec( 'POST', '/approve/5', status=500, response='foo') with pytest.raises(OwsRequestException) as e: ows.approve_by_id(5) assert e.value.args[0] == 'approve' assert e.value.args[1] == '"foo"' def test_approve_by_id_blocked(request_engine): """Test approve by id blocked.""" request_engine['ows-product-review'].add_spec( 'POST', '/approve/5', status=400, response={'code': 'foo'}) with pytest.raises(ApproveRequestBlockedException) as e: ows.approve_by_id(5) assert e.value.args[0] == {'code': 'foo'}