"""Functional tests for endpoint to sync product statuses with art_relations. GET /dbsync """ from product_review.logic import review_queue as review_queue_logic from product_review.testing_accommodations import art_relations as art_relations_model from tests.conftest import Release from tests.utils.db_utils import ( create_test_approval, create_test_rejection, create_test_review_queue_item, ) def test_sync_db(fixture_client, mocker): """Test db sync is successful.""" # normal ones create_test_review_queue_item( **{"review_queue_id": 11, "product_id": 100, "status": "complete"} ) create_test_review_queue_item( **{"review_queue_id": 12, "product_id": 101, "status": "complete"} ) create_test_review_queue_item( **{"review_queue_id": 13, "product_id": 102, "status": "new"} ) create_test_rejection(**{"review_queue_id": 11, "user_id": "123", "note": "hello"}) create_test_approval(**{"review_queue_id": 12, "user_id": "456"}) # non-existent one create_test_review_queue_item( **{"review_queue_id": 14, "product_id": 200, "status": "complete"} ) create_test_rejection(**{"review_queue_id": 14, "user_id": "123", "note": "hi"}) # harmless mismatch one create_test_review_queue_item( **{"review_queue_id": 15, "product_id": 201, "status": "complete"} ) create_test_rejection( **{"review_queue_id": 15, "user_id": "456", "note": "goodbye"} ) # to be deleted because of mismatch create_test_review_queue_item( **{"review_queue_id": 16, "product_id": 202, "status": "new"} ) create_test_review_queue_item( **{"review_queue_id": 17, "product_id": 203, "status": "new"} ) # to be reset because of mismatch create_test_review_queue_item( **{"review_queue_id": 18, "product_id": 204, "status": "complete"} ) create_test_approval(**{"review_queue_id": 18, "user_id": "456"}) mock_response = [ Release(100, "in_content", 1), Release(101, "in_content", 1), Release(102, "transfer_to_content", 1), Release(201, "label_processing", 1), Release(202, "in_content", 1), Release(203, "label_processing", 1), Release(204, "transfer_to_content", 1), Release(300, "transfer_to_content", 1), ] mocker.patch.object( art_relations_model, "get_products", return_value=mock_response, autospec=True, ) result = fixture_client.get("/dbsync") assert result.status_code == 200 assert result.json is None new_items = review_queue_logic.get_review_queue_items() complete_items = review_queue_logic.get_review_queue_items(status="complete") assert [i["review_queue_id"] for i in new_items.message["items"]] == [13] assert [i["review_queue_id"] for i in complete_items.message["items"]] == [ 18, 15, 12, 11, ]