"""Tests for product logic.""" import config import pytest from src.logic import common @pytest.mark.parametrize( "processed_events,expected_result", [ ( # No processed product event [ { "_index": config.TRACK_INDEX_NAME, "_op_type": "update", "_id": 100, "doc": {}, "doc_as_upsert": True, }, { "_index": config.TRACK_INDEX_NAME, "_op_type": "update", "_id": 101, "doc": {}, "doc_as_upsert": True, }, ], False, ), ( # Same product update event [ { "_index": config.TRACK_INDEX_NAME, "_op_type": "update", "_id": 100, "doc": {}, "doc_as_upsert": True, }, { "_index": config.PRODUCT_INDEX_NAME, "_op_type": "update", "_id": 2104178, "doc": {}, "doc_as_upsert": True, }, ], True, ), ( # Same product delete event [ { "_index": config.PRODUCT_INDEX_NAME, "_op_type": "delete", "_id": 2104178, "doc": {}, "doc_as_upsert": True, }, { "_index": config.TRACK_INDEX_NAME, "_op_type": "update", "_id": 100, "doc": {}, "doc_as_upsert": True, }, ], False, ), ], ) def test_is_duplicate_event(processed_events, expected_result, product_update_input): """Test is_duplicate_event.""" result = common.is_duplicate_event(product_update_input, processed_events) assert result == expected_result def test_is_duplicate_deleted_event(product_delete_input): """Test is_duplicate_event.""" processed_events = [ { "_index": config.PRODUCT_INDEX_NAME, "_op_type": "update", "_id": product_delete_input["data"]["release_id"], "doc": {}, "doc_as_upsert": True, }, ] # even if we update the same product, delete won't be considered dupe. # not_found errors are handled by upload handler. result = common.is_duplicate_event(product_delete_input, processed_events) assert result is False