@@ -146,3 +146,40 @@ def test_commit_model_raises_on_unregistered(memory):
146146
147147 with pytest .raises (MemoryStoreError , match = "is not registered" ):
148148 memory .commit_model (unknown )
149+
150+
151+ def test_commit_model_create_vs_update (memory ):
152+ memory .register_schema ("user" , User )
153+
154+ user = User (name = "Survivor" , age = 50 )
155+ fid = memory .commit_model (user )
156+
157+ assert fid is not None
158+ data_v1 = memory .storage .load (fid )
159+ assert data_v1 ["payload" ]["name" ] == "Survivor"
160+ assert data_v1 ["payload" ]["age" ] == 50
161+
162+ user_v2 = User (name = "Survivor" , age = 55 )
163+
164+ fid_updated = memory .commit_model (user_v2 , fact_id = fid )
165+
166+ assert fid_updated == fid
167+
168+ data_v2 = memory .storage .load (fid )
169+ assert data_v2 ["payload" ]["name" ] == "Survivor"
170+ assert data_v2 ["payload" ]["age" ] == 55
171+
172+ all_facts = memory .storage .query (type_filter = "user" )
173+ assert len (all_facts ) == 1
174+
175+
176+ def test_commit_model_without_id_creates_duplicate (memory ):
177+ memory .register_schema ("user" , User )
178+ user = User (name = "Survivor" , age = 50 )
179+
180+ id1 = memory .commit_model (user )
181+ id2 = memory .commit_model (user )
182+
183+ assert id1 != id2
184+ all_facts = memory .storage .query (type_filter = "user" )
185+ assert len (all_facts ) == 2
0 commit comments