fix pointers again
This commit is contained in:
+20
-7
@@ -1,3 +1,5 @@
|
||||
from pprint import pprint as print
|
||||
|
||||
import pytest
|
||||
from tinydb import Query
|
||||
from tinydb.storages import MemoryStorage
|
||||
@@ -44,16 +46,18 @@ def test_crud(db):
|
||||
|
||||
def test_pointers(db):
|
||||
user = examples.User(name="john", email="john@foo")
|
||||
players = examples.Group(name="players", members=[user], groups=[])
|
||||
players = examples.Group(name="players", members=[user])
|
||||
|
||||
with pytest.raises(PointerReferenceError):
|
||||
players = db.save(players)
|
||||
|
||||
user = db.save(user)
|
||||
players = db.save(examples.Group(name="players", members=[user]))
|
||||
|
||||
players.members[0] = user
|
||||
players = db.save(players)
|
||||
assert players.members[0] == user
|
||||
user = db.table('User').get(doc_id=user.doc_id)
|
||||
assert user.groups.uid == players.uid
|
||||
|
||||
assert players.members[0].groups.uid == players.uid
|
||||
|
||||
|
||||
def test_subgroups(db):
|
||||
@@ -66,7 +70,11 @@ def test_subgroups(db):
|
||||
starfleet = db.save(examples.Group(name="Starfleet", groups=[tos, snw]))
|
||||
assert tos in starfleet.groups
|
||||
assert snw in starfleet.groups
|
||||
assert kirk in set([user for group in starfleet.groups for user in group.members])
|
||||
|
||||
unique_users = set([user for group in starfleet.groups for user in group.members])
|
||||
|
||||
kirk = db.table('User').get(doc_id=kirk.doc_id)
|
||||
assert kirk in unique_users
|
||||
|
||||
|
||||
def test_unique(db):
|
||||
@@ -80,18 +88,23 @@ def test_unique(db):
|
||||
|
||||
|
||||
def test_search(db):
|
||||
# create crew members
|
||||
kirk = db.save(examples.User(name="Captain James T. Kirk", email="riskybiznez@starfleet"))
|
||||
bones = db.save(examples.User(name="Doctor McCoy", email="dammitjim@starfleet"))
|
||||
ricky = db.save(examples.User(name="Ensign Ricky Redshirt", email="invincible@starfleet"))
|
||||
|
||||
# create the crew record
|
||||
crew = db.save(examples.Group(name="Crew", members=[kirk, bones, ricky]))
|
||||
|
||||
User = Query()
|
||||
captains = db.User.search(User.name.matches("Captain"))
|
||||
assert len(captains) == 1
|
||||
|
||||
Group = Query()
|
||||
crew = db.Group.search(Group.name == "Crew")[0]
|
||||
# update the crew members so they have the backreference to crew
|
||||
kirk = db.table('User').get(doc_id=kirk.doc_id)
|
||||
bones = db.table('User').get(doc_id=bones.doc_id)
|
||||
ricky = db.table('User').get(doc_id=ricky.doc_id)
|
||||
|
||||
assert kirk in crew.members
|
||||
assert bones in crew.members
|
||||
assert ricky in crew.members
|
||||
|
||||
Reference in New Issue
Block a user