~ubuntu-branches/debian/jessie/sqlalchemy/jessie

« back to all changes in this revision

Viewing changes to examples/versioning/test_versioning.py

  • Committer: Package Import Robot
  • Author(s): Piotr Ożarowski, Jakub Wilk, Piotr Ożarowski
  • Date: 2013-07-06 20:53:52 UTC
  • mfrom: (1.4.23) (16.1.17 experimental)
  • Revision ID: package-import@ubuntu.com-20130706205352-ryppl1eto3illd79
Tags: 0.8.2-1
[ Jakub Wilk ]
* Use canonical URIs for Vcs-* fields.

[ Piotr Ożarowski ]
* New upstream release
* Upload to unstable
* Build depend on python3-all instead of -dev, extensions are not built for
  Python 3.X 

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
from sqlalchemy.orm import clear_mappers, sessionmaker, deferred, relationship
6
6
from _lib import ComparableEntity, eq_
7
7
 
 
8
engine = Session = None
 
9
 
 
10
 
8
11
def setup():
9
12
    global engine
10
13
    engine = create_engine('sqlite://', echo=True)
12
15
class TestVersioning(TestCase):
13
16
    def setUp(self):
14
17
        global Base, Session, Versioned
15
 
        Base = declarative_base(bind=engine)
16
 
        Session = sessionmaker()
 
18
        Base = declarative_base()
 
19
        Session = sessionmaker(engine)
17
20
        versioned_session(Session)
18
21
 
19
22
    def tearDown(self):
20
23
        clear_mappers()
21
 
        Base.metadata.drop_all()
 
24
        Base.metadata.drop_all(engine)
22
25
 
23
26
    def create_tables(self):
24
 
        Base.metadata.create_all()
 
27
        Base.metadata.create_all(engine)
25
28
 
26
29
    def test_plain(self):
27
30
        class SomeClass(Versioned, Base, ComparableEntity):
303
306
            id = Column(Integer, primary_key=True)
304
307
            name = Column(String(50))
305
308
            related_id = Column(Integer, ForeignKey('somerelated.id'))
306
 
            related = relationship("SomeRelated")
 
309
            related = relationship("SomeRelated", backref='classes')
307
310
 
308
311
        SomeClassHistory = SomeClass.__history_mapper__.class_
309
312
 
338
341
 
339
342
        assert sc.version == 3
340
343
 
 
344
    def test_backref_relationship(self):
 
345
 
 
346
        class SomeRelated(Base, ComparableEntity):
 
347
            __tablename__ = 'somerelated'
 
348
 
 
349
            id = Column(Integer, primary_key=True)
 
350
            name = Column(String(50))
 
351
            related_id = Column(Integer, ForeignKey('sometable.id'))
 
352
            related = relationship("SomeClass", backref='related')
 
353
 
 
354
        class SomeClass(Versioned, Base, ComparableEntity):
 
355
            __tablename__ = 'sometable'
 
356
 
 
357
            id = Column(Integer, primary_key=True)
 
358
 
 
359
        self.create_tables()
 
360
        sess = Session()
 
361
        sc = SomeClass()
 
362
        sess.add(sc)
 
363
        sess.commit()
 
364
 
 
365
        assert sc.version == 1
 
366
 
 
367
        sr = SomeRelated(name='sr', related=sc)
 
368
        sess.add(sr)
 
369
        sess.commit()
 
370
 
 
371
        assert sc.version == 1
 
372
 
 
373
        sr.name = 'sr2'
 
374
        sess.commit()
 
375
 
 
376
        assert sc.version == 1
 
377
 
 
378
        sess.delete(sr)
 
379
        sess.commit()
 
380
 
 
381
        assert sc.version == 1