~cr3/storm/reference_is_in

« back to all changes in this revision

Viewing changes to tests/store/postgres.py

  • Committer: James Henstridge
  • Date: 2009-03-04 18:07:14 UTC
  • mfrom: (282.3.4 storm.bug-136806)
  • Revision ID: james@jamesh.id.au-20090304180714-i6exc60jtdjhwysw
Fix ListVariable.get(to_db=True) to convert its elements correctly.  
This caused problems for element types that had significantly different 
Python and database representations such as EnumVariable.
[r=therve,jkakar] [f=136806]

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import gc
23
23
 
24
24
from storm.database import create_database
25
 
from storm.properties import Int, List
 
25
from storm.properties import Enum, Int, List
26
26
from storm.info import get_obj_info
27
27
 
28
28
from tests.store.base import StoreTest, EmptyResultSetTest, Foo
34
34
    id = Int(primary=True)
35
35
    ints = List(type=Int())
36
36
 
 
37
class LstEnum(object):
 
38
    __storm_table__ = "lst1"
 
39
    id = Int(primary=True)
 
40
    ints = List(type=Enum(map={"one": 1, "two": 2, "three": 3}))
 
41
 
37
42
class Lst2(object):
38
43
    __storm_table__ = "lst2"
39
44
    id = Int(primary=True)
119
124
        result = self.store.execute("SELECT ints FROM lst1 WHERE id=1")
120
125
        self.assertEquals(result.get_one(), ([1,2,3,4,5],))
121
126
 
 
127
    def test_list_enum_variable(self):
 
128
 
 
129
        lst = LstEnum()
 
130
        lst.id = 1
 
131
        lst.ints = ["one", "two"]
 
132
        self.store.add(lst)
 
133
 
 
134
        result = self.store.execute("SELECT ints FROM lst1 WHERE id=1")
 
135
        self.assertEquals(result.get_one(), ([1,2],))
 
136
 
 
137
        del lst
 
138
        gc.collect()
 
139
 
 
140
        lst = self.store.find(LstEnum, LstEnum.ints == ["one", "two"]).one()
 
141
        self.assertTrue(lst)
 
142
 
 
143
        lst.ints.append("three")
 
144
 
 
145
        result = self.store.execute("SELECT ints FROM lst1 WHERE id=1")
 
146
        self.assertEquals(result.get_one(), ([1,2,3],))
 
147
 
122
148
    def test_list_variable_nested(self):
123
149
 
124
150
        lst = Lst2()