File: test_onetoone.py

package info (click to toggle)
sqlalchemy 1.2.18%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 16,080 kB
  • sloc: python: 239,496; ansic: 1,345; makefile: 264; xml: 17
file content (92 lines) | stat: -rw-r--r-- 2,321 bytes parent folder | download | duplicates (2)
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
81
82
83
84
85
86
87
88
89
90
91
92
from sqlalchemy import ForeignKey
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy.orm import create_session
from sqlalchemy.orm import mapper
from sqlalchemy.orm import relationship
from sqlalchemy.testing import fixtures
from sqlalchemy.testing.schema import Column
from sqlalchemy.testing.schema import Table


class O2OTest(fixtures.MappedTest):
    @classmethod
    def define_tables(cls, metadata):
        Table(
            "jack",
            metadata,
            Column(
                "id", Integer, primary_key=True, test_needs_autoincrement=True
            ),
            Column("number", String(50)),
            Column("status", String(20)),
            Column("subroom", String(5)),
        )

        Table(
            "port",
            metadata,
            Column(
                "id", Integer, primary_key=True, test_needs_autoincrement=True
            ),
            Column("name", String(30)),
            Column("description", String(100)),
            Column("jack_id", Integer, ForeignKey("jack.id")),
        )

    @classmethod
    def setup_mappers(cls):
        class Jack(cls.Basic):
            pass

        class Port(cls.Basic):
            pass

    def test_basic(self):
        Port, port, jack, Jack = (
            self.classes.Port,
            self.tables.port,
            self.tables.jack,
            self.classes.Jack,
        )

        mapper(Port, port)
        mapper(
            Jack,
            jack,
            properties=dict(
                port=relationship(Port, backref="jack", uselist=False)
            ),
        )

        session = create_session()

        j = Jack(number="101")
        session.add(j)
        p = Port(name="fa0/1")
        session.add(p)

        j.port = p
        session.flush()
        jid = j.id
        pid = p.id

        j = session.query(Jack).get(jid)
        p = session.query(Port).get(pid)
        assert p.jack is not None
        assert p.jack is j
        assert j.port is not None
        p.jack = None
        assert j.port is None

        session.expunge_all()

        j = session.query(Jack).get(jid)
        p = session.query(Port).get(pid)

        j.port = None
        self.assert_(p.jack is None)
        session.flush()

        session.delete(j)
        session.flush()