| | 65 | def test_selfref(self): |
| | 66 | class Person(Entity): |
| | 67 | name = Field(Unicode(30)) |
| | 68 | |
| | 69 | friends = ManyToMany('Person') |
| | 70 | |
| | 71 | create_all() |
| | 72 | |
| | 73 | barney = Person(name="Barney") |
| | 74 | homer = Person(name="Homer", friends=[barney]) |
| | 75 | barney.friends.append(homer) |
| | 76 | |
| | 77 | session.flush() |
| | 78 | session.clear() |
| | 79 | |
| | 80 | homer = Person.get_by(name="Homer") |
| | 81 | barney = Person.get_by(name="Barney") |
| | 82 | |
| | 83 | assert homer in barney.friends |
| | 84 | assert barney in homer.friends |
| | 85 | |
| | 86 | def test_has_and_belongs_to_many(self): |
| | 87 | class A(Entity): |
| | 88 | has_field('name', String(100)) |
| | 89 | |
| | 90 | has_and_belongs_to_many('bs', of_kind='B') |
| | 91 | |
| | 92 | class B(Entity): |
| | 93 | has_field('name', String(100), primary_key=True) |
| | 94 | |
| | 95 | setup_all(True) |
| | 96 | |
| | 97 | b1 = B(name='b1') |
| | 98 | a1 = A(name='a1', bs=[B(name='b2'), b1]) |
| | 99 | a2 = A(name='a2', bs=[B(name='b3'), b1]) |
| | 100 | a3 = A(name='a3') |
| | 101 | |
| | 102 | session.flush() |
| | 103 | session.clear() |
| | 104 | |
| | 105 | a1 = A.get_by(name='a1') |
| | 106 | a2 = A.get_by(name='a2') |
| | 107 | a3 = A.get_by(name='a3') |
| | 108 | b1 = B.get_by(name='b1') |
| | 109 | b2 = B.get_by(name='b2') |
| | 110 | |
| | 111 | assert b1 in a1.bs |
| | 112 | assert b2 in a1.bs |
| | 113 | assert b1 in a2.bs |
| | 114 | assert not a3.bs |
| | 115 | |