Skip to content

Commit 63bc70c

Browse files
committed
tests: add idsync test_prop_rename #25
1 parent 15e8ef9 commit 63bc70c

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

objectbox/model/iduid.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ def is_assigned(self):
1212
def __bool__(self):
1313
return self.is_assigned()
1414

15+
def __eq__(self, rhs: 'IdUid'):
16+
return self.id == rhs.id and self.uid == rhs.uid
17+
1518
def __str__(self):
1619
return f"{self.id}:{self.uid}"
1720

tests/test_idsync.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)