1import pytest 2import sqlalchemy as sa 3 4from sqlalchemy_utils.functions import identity 5 6 7class IdentityTestCase(object): 8 9 @pytest.fixture 10 def init_models(self, Building): 11 pass 12 13 def test_for_transient_class_without_id(self, Building): 14 assert identity(Building()) == (None, ) 15 16 def test_for_transient_class_with_id(self, session, Building): 17 building = Building(name=u'Some building') 18 session.add(building) 19 session.flush() 20 21 assert identity(building) == (building.id, ) 22 23 def test_identity_for_class(self, Building): 24 assert identity(Building) == (Building.id, ) 25 26 27class TestIdentity(IdentityTestCase): 28 29 @pytest.fixture 30 def Building(self, Base): 31 class Building(Base): 32 __tablename__ = 'building' 33 id = sa.Column(sa.Integer, primary_key=True) 34 name = sa.Column(sa.Unicode(255)) 35 return Building 36 37 38class TestIdentityWithColumnAlias(IdentityTestCase): 39 40 @pytest.fixture 41 def Building(self, Base): 42 class Building(Base): 43 __tablename__ = 'building' 44 id = sa.Column('_id', sa.Integer, primary_key=True) 45 name = sa.Column(sa.Unicode(255)) 46 return Building 47