]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
unit test for mutable PGArray, thanks to AlexB !!!
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 4 Mar 2008 20:14:28 +0000 (20:14 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 4 Mar 2008 20:14:28 +0000 (20:14 +0000)
test/dialect/postgres.py

index 71fb0c763f40979318e0ebda5e6b4a7dd03a98dc..21b11f114bd9ece7cb1d5f266b68bcbe67b6a3ef 100644 (file)
@@ -1,6 +1,7 @@
 import testenv; testenv.configure_for_tests()
 import datetime
 from sqlalchemy import *
+from sqlalchemy.orm import *
 from sqlalchemy import exceptions
 from sqlalchemy.databases import postgres
 from sqlalchemy.engine.strategies import MockEngineStrategy
@@ -705,6 +706,47 @@ class ArrayTest(TestBase, AssertsExecutionResults):
         self.assertEquals(results[1]['strarr'], [[u'm\xe4\xe4'], [u'm\xf6\xf6']])
         arrtable.delete().execute()
 
+    def test_array_mutability(self):
+        class Foo(object): pass
+        footable = Table('foo', metadata,
+            Column('id', Integer, primary_key=True),
+            Column('intarr', postgres.PGArray(Integer), nullable=True)
+        )
+        mapper(Foo, footable)
+        metadata.create_all()
+        sess = create_session()
+        
+        foo = Foo()
+        foo.id = 1
+        foo.intarr = [1,2,3]
+        sess.save(foo)
+        sess.flush()
+        sess.clear()
+        foo = sess.query(Foo).get(1)
+        self.assertEquals(foo.intarr, [1,2,3])
+        
+        foo.intarr.append(4)
+        sess.flush()
+        sess.clear()
+        foo = sess.query(Foo).get(1)
+        self.assertEquals(foo.intarr, [1,2,3,4])
+        
+        foo.intarr = []
+        sess.flush()
+        sess.clear()
+        self.assertEquals(foo.intarr, [])
+        
+        foo.intarr = None
+        sess.flush()
+        sess.clear()
+        self.assertEquals(foo.intarr, None)
+
+        # Errors in r4217:
+        foo = Foo()
+        foo.id = 2
+        sess.save(foo)
+        sess.flush()
+
 class TimeStampTest(TestBase, AssertsExecutionResults): 
     __only_on__ = 'postgres' 
     def test_timestamp(self):