@@ -79,6 +79,55 @@ async def test_write_documents_duplicate_fail_async(self, document_store):
7979 async def test_write_documents_duplicate_skip_async (self , document_store ):
8080 pytest .skip ("ValkeyDocumentStore does not support DuplicatePolicy.SKIP" )
8181
82+ # --- Overrides for mixin tests that use undeclared metadata fields ---
83+ # ValkeyDocumentStore requires metadata fields to be pre-declared in the fixture.
84+
85+ @pytest .mark .asyncio
86+ async def test_update_by_filter_async (self , document_store ):
87+ """Override: use declared metadata fields (category, priority) instead of filterable_docs fixture."""
88+ test_id = str (uuid .uuid4 ())[:8 ]
89+ docs = [
90+ Document (id = f"u1_{ test_id } " , content = "doc 1" , embedding = [0.1 , 0.2 , 0.3 ], meta = {"category" : "news" , "priority" : 1 }),
91+ Document (id = f"u2_{ test_id } " , content = "doc 2" , embedding = [0.2 , 0.3 , 0.4 ], meta = {"category" : "blog" , "priority" : 2 }),
92+ Document (id = f"u3_{ test_id } " , content = "doc 3" , embedding = [0.3 , 0.4 , 0.5 ], meta = {"category" : "news" , "priority" : 3 }),
93+ ]
94+ await document_store .write_documents_async (docs )
95+
96+ updated_count = await document_store .update_by_filter_async (
97+ filters = {"field" : "meta.category" , "operator" : "==" , "value" : "news" }, meta = {"status" : "archived" }
98+ )
99+ assert updated_count == 2
100+
101+ all_docs = await document_store .filter_documents_async (filters = None )
102+ by_id = {d .id : d for d in all_docs }
103+ assert by_id [f"u1_{ test_id } " ].meta .get ("status" ) == "archived"
104+ assert by_id [f"u2_{ test_id } " ].meta .get ("status" ) is None
105+ assert by_id [f"u3_{ test_id } " ].meta .get ("status" ) == "archived"
106+
107+ @staticmethod
108+ @pytest .mark .asyncio
109+ async def test_count_unique_metadata_by_filter_async_with_multiple_filters (document_store ):
110+ """Override: use declared metadata fields (category, priority) instead of year."""
111+ test_id = str (uuid .uuid4 ())[:8 ]
112+ docs = [
113+ Document (id = f"cu1_{ test_id } " , content = "doc 1" , meta = {"category" : "A" , "priority" : 1 }),
114+ Document (id = f"cu2_{ test_id } " , content = "doc 2" , meta = {"category" : "A" , "priority" : 2 }),
115+ Document (id = f"cu3_{ test_id } " , content = "doc 3" , meta = {"category" : "B" , "priority" : 1 }),
116+ Document (id = f"cu4_{ test_id } " , content = "doc 4" , meta = {"category" : "B" , "priority" : 2 }),
117+ ]
118+ await document_store .write_documents_async (docs )
119+
120+ count = await document_store .count_documents_by_filter_async (
121+ filters = {
122+ "operator" : "AND" ,
123+ "conditions" : [
124+ {"field" : "meta.category" , "operator" : "==" , "value" : "B" },
125+ {"field" : "meta.priority" , "operator" : "==" , "value" : 1 },
126+ ],
127+ }
128+ )
129+ assert count == 1
130+
82131 # --- Valkey-specific tests ---
83132
84133 async def test_async_write_exceed_batch_size (self , document_store ):
0 commit comments