"""Test product eligibility endpoint.""" from unittest.mock import patch from owsresponse import response from product_review.constants import services @patch("product_review.logic.product.get_single_feature_by_attributes") def test_product_eligibility(mock_split, fixture_client, request_engine): """Test product eligibility check.""" mock_split.return_value = response.Response("enabled") request_engine[services.OWS_PRODUCT].add_spec( "GET", "/product/1", { "product_id": 1, "distribution_format_id": 1, "project_id": 1, "product_type_id": 1, "upc": 1, "context_type": "digital", "vendor_id": 1, "subaccount_id": 0, "release_date": "2025-01-01", "status": "label_processing", "product_name": "foo", "deletions": "N", "not_for_distribution": "N", }, ) request_engine[services.OWS_ACCOUNT].add_spec( "GET", "/vendor/brand/1", "theorchard", ) request_engine[services.OWS_ACCOUNT].add_spec("GET", "/vendor/1", {"owner": "odd"}) result = fixture_client.get("/review-queue/product/1/eligibility-check") assert result.data.decode("utf-8") == "eligible" mock_split.return_value = response.Response("control") result = fixture_client.get("/review-queue/product/1/eligibility-check") assert result.data.decode("utf-8") == "ineligible" @patch("product_review.logic.product.get_single_feature_by_attributes") def test_product_eligibility_ows_product_error(_, fixture_client, request_engine): """Test product eligibility check with ows-product error.""" request_engine[services.OWS_PRODUCT].add_spec( "GET", "/product/1", {"status": "error"}, status=400 ) result = fixture_client.get("/review-queue/product/1/eligibility-check") assert result.status_code == 400 @patch("product_review.logic.product.get_single_feature_by_attributes") def test_product_eligibility_vendor_error(_, fixture_client, request_engine): """Test product eligibility check with ows-product error.""" request_engine[services.OWS_PRODUCT].add_spec( "GET", "/product/1", { "product_id": 1, "distribution_format_id": 1, "project_id": 1, "product_type_id": 1, "upc": 1, "context_type": "digital", "vendor_id": 1, "subaccount_id": 0, "release_date": "2025-01-01", "status": "label_processing", "product_name": "foo", "deletions": "N", "not_for_distribution": "N", }, ) request_engine[services.OWS_ACCOUNT].add_spec( "GET", "/vendor/brand/1", "theorchard", ) request_engine[services.OWS_ACCOUNT].add_spec( "GET", "/vendor/1", {"message": "vendor not found"}, status=400 ) result = fixture_client.get("/review-queue/product/1/eligibility-check") assert result.status_code == 400