1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
"""
test integrating Elixir entities with plain SQLAlchemy defined classes
"""
from sqlalchemy.orm import *
from sqlalchemy import *
from elixir import *
def setup():
metadata.bind = 'sqlite:///'
class TestSAIntegration(object):
def teardown(self):
cleanup_all(True)
def test_sa_to_elixir(self):
class A(Entity):
name = Field(String(60))
# Remember the entity need to be setup before you can refer to it from
# SQLAlchemy.
setup_all(True)
b_table = Table('b', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(60)),
Column('a_id', Integer, ForeignKey(A.id))
)
b_table.create()
class B(object):
pass
mapper(B, b_table, properties={
'a': relation(A)
})
b1 = B()
b1.name = 'b1'
b1.a = A(name='a1')
session.save(b1)
session.commit()
session.clear()
b = session.query(B).one()
assert b.a.name == 'a1'
# def test_elxir_to_sa(self):
# a_table = Table('a', metadata,
# Column('id', Integer, primary_key=True),
# Column('name', String(60)),
# )
# a_table.create()
#
# class A(object):
# pass
#
# mapper(A, a_table)
#
# class B(Entity):
# name = Field(String(60))
# a = ManyToOne('A')
#
# setup_all(True)
#
# a1 = A()
# a1.name = 'a1'
# b1 = B(name='b1', a=a1)
#
# session.save(b1)
# session.commit()
# session.clear()
#
# b = B.query.one()
#
# assert b.a.name == 'a1'
|