diff options
| author | Chayim I. Kirshen <c@kirshen.com> | 2021-10-31 11:46:30 +0200 |
|---|---|---|
| committer | Chayim I. Kirshen <c@kirshen.com> | 2021-10-31 11:46:30 +0200 |
| commit | b8948d4a3049d393ad1c07bfb6054486e94ae2b9 (patch) | |
| tree | 91983eea9cbad5686a6daac15cbb8f5407b22a08 | |
| parent | 8178997e2838d01dafe14dcf0a1d2d6c6a20f051 (diff) | |
| download | redis-py-b8948d4a3049d393ad1c07bfb6054486e94ae2b9.tar.gz | |
multi path tests for rejson
| -rw-r--r-- | tests/test_json.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/test_json.py b/tests/test_json.py index 83fbf28..fb36fc0 100644 --- a/tests/test_json.py +++ b/tests/test_json.py @@ -233,3 +233,73 @@ def test_objlenshouldsucceed(client): # assert [True, "bar", 1] == p.execute() # assert client.keys() == [] # assert client.get("foo") is None + +@pytest.mark.redismod +def test_jsondollardelete(client): + doc1 = {"a": 1, "nested": {"a": 2, "b": 3}} + assert client.json().set("doc1", "$", doc1) + assert client.json().delete("doc1", "$..a") == 2 + r = client.json().get("doc1", "$") + assert r == [{"nested": {"b": 3}}] + + + doc2 = {"a": {"a": 2, "b": 3}, "b": ["a", "b"], + "nested": {"b":[True, "a","b"]}} + assert client.json().set('doc2', '$', doc2) + assert client.json().delete("doc2", "$..a") == 1 + res = client.json().get("doc2", "$") + assert res == [{"nested":{"b":[True,"a","b"]},"b":["a","b"]}] + + doc3 = [{"ciao":["non ancora"],"nested":[{"ciao":[1,"a"]}, + {"ciao":[2,"a"]}, + {"ciaoc":[3,"non","ciao"]}, + {"ciao":[4,"a"]}, {"e":[5,"non","ciao"]}]}] + assert client.json().set('doc3', '$', doc3) + assert client.json().delete('doc3', '$.[0]["nested"]..ciao') == 3 + + doc3val = [[{"ciao":["non ancora"], + "nested":[{},{}, + {"ciaoc":[3,"non","ciao"]},{},{"e":[5,"non","ciao"]}]}]] + res = client.json().get('doc3', '$') + assert res == doc3val + + # Test default path + assert client.json().delete("doc3") == 1 + assert client.json().get("doc3", "$") is None + + client.json().delete("not_a_document", "..a") + +@pytest.mark.redismod +def test_jsondollarforget(client): + doc1 = {"a": 1, "nested": {"a": 2, "b": 3}} + assert client.json().set("doc1", "$", doc1) + assert client.json().forget("doc1", "$..a") == 2 + r = client.json().get("doc1", "$") + assert r == [{"nested": {"b": 3}}] + + + doc2 = {"a": {"a": 2, "b": 3}, "b": ["a", "b"], + "nested": {"b":[True, "a","b"]}} + assert client.json().set('doc2', '$', doc2) + assert client.json().forget("doc2", "$..a") == 1 + res = client.json().get("doc2", "$") + assert res == [{"nested":{"b":[True,"a","b"]},"b":["a","b"]}] + + doc3 = [{"ciao":["non ancora"],"nested":[{"ciao":[1,"a"]}, + {"ciao":[2,"a"]}, + {"ciaoc":[3,"non","ciao"]}, + {"ciao":[4,"a"]}, {"e":[5,"non","ciao"]}]}] + assert client.json().set('doc3', '$', doc3) + assert client.json().forget('doc3', '$.[0]["nested"]..ciao') == 3 + + doc3val = [[{"ciao":["non ancora"], + "nested":[{},{}, + {"ciaoc":[3,"non","ciao"]},{},{"e":[5,"non","ciao"]}]}]] + res = client.json().get('doc3', '$') + assert res == doc3val + + # Test default path + assert client.json().forget("doc3") == 1 + assert client.json().get("doc3", "$") is None + + client.json().forget("not_a_document", "..a")
\ No newline at end of file |
