]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
move the delete tests from CRUDTest into sql/test_delete.py (see #2630)
authorDiana Clarke <diana.joan.clarke@gmail.com>
Fri, 29 Mar 2013 21:25:39 +0000 (17:25 -0400)
committerDiana Clarke <diana.joan.clarke@gmail.com>
Fri, 29 Mar 2013 21:25:39 +0000 (17:25 -0400)
test/sql/test_compiler.py
test/sql/test_delete.py [new file with mode: 0644]

index fa15c7aa2920933e6fa6cf41fa267dccfea1854b..3e2c206e7356c92e3c24053f841941d3ef803320 100644 (file)
@@ -14,7 +14,7 @@ from sqlalchemy.testing import eq_, is_, assert_raises, assert_raises_message
 from sqlalchemy import testing
 from sqlalchemy.testing import fixtures, AssertsCompiledSQL
 from sqlalchemy import Integer, String, MetaData, Table, Column, select, \
-    func, not_, cast, text, tuple_, exists, delete, update, bindparam,\
+    func, not_, cast, text, tuple_, exists, update, bindparam,\
     insert, literal, and_, null, type_coerce, alias, or_, literal_column,\
     Float, TIMESTAMP, Numeric, Date, Text, collate, union, except_,\
     intersect, union_all, Boolean, distinct, join, outerjoin, asc, desc,\
@@ -2852,51 +2852,6 @@ class CRUDTest(fixtures.TestBase, AssertsCompiledSQL):
                 "AND myothertable.othername = mytable_1.name",
                 dialect=mssql.dialect())
 
-    def test_delete(self):
-        self.assert_compile(
-                        delete(table1, table1.c.myid == 7),
-                        "DELETE FROM mytable WHERE mytable.myid = :myid_1")
-        self.assert_compile(
-                        table1.delete().where(table1.c.myid == 7),
-                        "DELETE FROM mytable WHERE mytable.myid = :myid_1")
-        self.assert_compile(
-                        table1.delete().where(table1.c.myid == 7).\
-                                        where(table1.c.name == 'somename'),
-                        "DELETE FROM mytable WHERE mytable.myid = :myid_1 "
-                        "AND mytable.name = :name_1")
-
-    def test_delete_prefix(self):
-        stmt = table1.delete().prefix_with("A", "B", dialect="mysql").\
-                prefix_with("C", "D")
-        self.assert_compile(stmt,
-            "DELETE A B C D FROM mytable",
-            dialect=mysql.dialect()
-        )
-        self.assert_compile(stmt,
-            "DELETE C D FROM mytable")
-
-    def test_aliased_delete(self):
-        talias1 = table1.alias('t1')
-        self.assert_compile(
-                        delete(talias1).where(talias1.c.myid == 7),
-                        "DELETE FROM mytable AS t1 WHERE t1.myid = :myid_1")
-
-    def test_correlated_delete(self):
-        # test a non-correlated WHERE clause
-        s = select([table2.c.othername], table2.c.otherid == 7)
-        u = delete(table1, table1.c.name == s)
-        self.assert_compile(u, "DELETE FROM mytable WHERE mytable.name = "
-        "(SELECT myothertable.othername FROM myothertable "
-            "WHERE myothertable.otherid = :otherid_1)")
-
-        # test one that is actually correlated...
-        s = select([table2.c.othername], table2.c.otherid == table1.c.myid)
-        u = table1.delete(table1.c.name == s)
-        self.assert_compile(u,
-                    "DELETE FROM mytable WHERE mytable.name = (SELECT "
-                    "myothertable.othername FROM myothertable WHERE "
-                    "myothertable.otherid = mytable.myid)")
-
     def test_binds_that_match_columns(self):
         """test bind params named after column names
         replace the normal SET/VALUES generation."""
diff --git a/test/sql/test_delete.py b/test/sql/test_delete.py
new file mode 100644 (file)
index 0000000..a8506fe
--- /dev/null
@@ -0,0 +1,86 @@
+#! coding:utf-8
+
+from sqlalchemy import Column, Integer, String, Table, delete, select
+from sqlalchemy.dialects import mysql
+from sqlalchemy.testing import AssertsCompiledSQL, fixtures
+
+
+class _DeleteTestBase(object):
+    @classmethod
+    def define_tables(cls, metadata):
+        Table('mytable', metadata,
+              Column('myid', Integer),
+              Column('name', String),
+              Column('description', String))
+        Table('myothertable', metadata,
+              Column('otherid', Integer),
+              Column('othername', String))
+
+
+class DeleteTest(_DeleteTestBase, fixtures.TablesTest, AssertsCompiledSQL):
+    __dialect__ = 'default'
+
+    def test_delete(self):
+        table1 = self.tables.mytable
+
+        self.assert_compile(
+            delete(table1, table1.c.myid == 7),
+            'DELETE FROM mytable WHERE mytable.myid = :myid_1')
+
+        self.assert_compile(
+            table1.delete().where(table1.c.myid == 7),
+            'DELETE FROM mytable WHERE mytable.myid = :myid_1')
+
+        self.assert_compile(
+            table1.delete().
+                where(table1.c.myid == 7).
+                where(table1.c.name == 'somename'),
+            'DELETE FROM mytable '
+            'WHERE mytable.myid = :myid_1 '
+            'AND mytable.name = :name_1')
+
+    def test_prefix_with(self):
+        table1 = self.tables.mytable
+
+        stmt = table1.delete().\
+            prefix_with('A', 'B', dialect='mysql').\
+            prefix_with('C', 'D')
+
+        self.assert_compile(stmt,
+            'DELETE C D FROM mytable')
+
+        self.assert_compile(stmt,
+            'DELETE A B C D FROM mytable',
+            dialect=mysql.dialect())
+
+    def test_alias(self):
+        table1 = self.tables.mytable
+
+        talias1 = table1.alias('t1')
+        stmt = delete(talias1).where(talias1.c.myid == 7)
+
+        self.assert_compile(stmt,
+            'DELETE FROM mytable AS t1 WHERE t1.myid = :myid_1')
+
+    def test_correlated(self):
+        table1, table2 = self.tables.mytable, self.tables.myothertable
+
+        # test a non-correlated WHERE clause
+        s = select([table2.c.othername], table2.c.otherid == 7)
+        self.assert_compile(delete(table1, table1.c.name == s),
+            'DELETE FROM mytable '
+            'WHERE mytable.name = ('
+                'SELECT myothertable.othername '
+                'FROM myothertable '
+                'WHERE myothertable.otherid = :otherid_1'
+            ')')
+
+        # test one that is actually correlated...
+        s = select([table2.c.othername], table2.c.otherid == table1.c.myid)
+        self.assert_compile(table1.delete(table1.c.name == s),
+            'DELETE FROM mytable '
+            'WHERE mytable.name = ('
+                'SELECT myothertable.othername '
+                'FROM myothertable '
+                'WHERE myothertable.otherid = mytable.myid'
+            ')')