mirror of
https://github.com/d3vyce/taskiq-deduplication.git
synced 2026-08-04 19:14:07 +00:00
fix: include positional args in the deduplication fingerprint (#81)
This commit is contained in:
+4
-2
@@ -33,13 +33,15 @@ async def real_redis():
|
||||
|
||||
@pytest.fixture
|
||||
def make_message():
|
||||
def _make(task_name="my_task", task_id="task-1", labels=None, kwargs=None):
|
||||
def _make(
|
||||
task_name="my_task", task_id="task-1", labels=None, kwargs=None, args=None
|
||||
):
|
||||
return TaskiqMessage(
|
||||
task_id=task_id,
|
||||
task_name=task_name,
|
||||
labels=labels or {},
|
||||
labels_types={},
|
||||
args=[],
|
||||
args=args or [],
|
||||
kwargs=kwargs or {},
|
||||
)
|
||||
|
||||
|
||||
@@ -86,6 +86,27 @@ class TestDefaultBuildDeduplicationKey:
|
||||
m1
|
||||
) == middleware._build_deduplication_key(m2)
|
||||
|
||||
def test_different_args_different_key(self, middleware, make_message):
|
||||
m1 = make_message(args=["a"])
|
||||
m2 = make_message(args=["b"])
|
||||
assert middleware._build_deduplication_key(
|
||||
m1
|
||||
) != middleware._build_deduplication_key(m2)
|
||||
|
||||
def test_arg_order_matters(self, middleware, make_message):
|
||||
m1 = make_message(args=["a", "b"])
|
||||
m2 = make_message(args=["b", "a"])
|
||||
assert middleware._build_deduplication_key(
|
||||
m1
|
||||
) != middleware._build_deduplication_key(m2)
|
||||
|
||||
def test_key_fields_ignores_args(self, middleware, make_message):
|
||||
m1 = make_message(args=["a"], labels={DEDUP_KEY_FIELDS_LABEL: ["x"]})
|
||||
m2 = make_message(args=["b"], labels={DEDUP_KEY_FIELDS_LABEL: ["x"]})
|
||||
assert middleware._build_deduplication_key(
|
||||
m1
|
||||
) == middleware._build_deduplication_key(m2)
|
||||
|
||||
def test_key_prefix_in_output(self, make_message):
|
||||
mw = RedisDeduplicationMiddleware(
|
||||
redis_url="redis://localhost", key_prefix="myapp:locks"
|
||||
|
||||
Reference in New Issue
Block a user