summaryrefslogtreecommitdiff
path: root/test/orm/test_immediate_load.py
blob: e809ebfe6383f416469c9dacd4a252b783f90cb6 (plain)
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
"""basic tests of lazy loaded attributes"""

from test.lib import testing
from sqlalchemy.orm import mapper, relationship, create_session, immediateload
from test.lib.testing import eq_
from test.orm import _fixtures


class ImmediateTest(_fixtures.FixtureTest):
    run_inserts = 'once'
    run_deletes = None

    def test_basic_option(self):
        Address, addresses, users, User = (self.classes.Address,
                                self.tables.addresses,
                                self.tables.users,
                                self.classes.User)

        mapper(Address, addresses)
        mapper(User, users, properties={
            'addresses':relationship(Address)
        })
        sess = create_session()

        l = sess.query(User).options(immediateload(User.addresses)).filter(users.c.id==7).all()
        eq_(len(sess.identity_map), 2)

        sess.close()

        eq_(
            [User(id=7, addresses=[Address(id=1, email_address='jack@bean.com')])],
            l
        )


    def test_basic(self):
        Address, addresses, users, User = (self.classes.Address,
                                self.tables.addresses,
                                self.tables.users,
                                self.classes.User)

        mapper(Address, addresses)
        mapper(User, users, properties={
            'addresses':relationship(Address, lazy='immediate')
        })
        sess = create_session()

        l = sess.query(User).filter(users.c.id==7).all()
        eq_(len(sess.identity_map), 2)
        sess.close()

        eq_(
            [User(id=7, addresses=[Address(id=1, email_address='jack@bean.com')])],
            l
        )