@@ -253,4 +253,54 @@ class MyEntity:
253253 box = store .box (MyEntity )
254254 assert box .count () == 2
255255
256- # TODO: test_prop_rename ? Do we need a uid annotation for properties then?
256+
257+ def test_prop_rename (env ):
258+ @Entity ()
259+ class EntityA :
260+ id = Id ()
261+ name = Property (str )
262+
263+ model = Model ()
264+ model .entity (EntityA )
265+ env .sync (model )
266+ store = env .store ()
267+ box = store .box (EntityA )
268+ box .put (EntityA (name = "Luca" ))
269+ assert box .count () == 1
270+ assert box .get (1 ).name == "Luca"
271+ assert not hasattr (box .get (1 ), "renamed_name" )
272+
273+ entity1_iduid = EntityA .iduid
274+ name = EntityA .get_property ("name" )
275+ name_iduid = name .iduid
276+ print (f"Entity.name ID/UID: { name .iduid } " )
277+
278+ del box # Close store
279+ store .close ()
280+ del store
281+
282+ # *** Rename ***
283+
284+ @Entity ()
285+ class EntityA :
286+ id = Id ()
287+ renamed_name = Property (str , uid = name .uid ) # Renamed property (same UID as "name")
288+
289+ model = Model ()
290+ model .entity (EntityA )
291+ env .sync (model )
292+ store = env .store ()
293+
294+ # Check ID/UID(s) are preserved after renaming
295+ entity2_iduid = EntityA .iduid
296+ renamed_name = EntityA .get_property ("renamed_name" )
297+ renamed_name_iduid = renamed_name .iduid
298+ print (f"Entity.renamed_name ID/UID: { renamed_name_iduid } " )
299+ assert entity1_iduid == entity2_iduid
300+ assert name_iduid == renamed_name_iduid
301+
302+ # Check property value is preserved after renaming
303+ box = store .box (EntityA )
304+ assert box .count () == 1
305+ assert not hasattr (box .get (1 ), "name" )
306+ assert box .get (1 ).renamed_name == "Luca"
0 commit comments