]> git.phdru.name Git - sqlconvert.git/blobdiff - tests/test_process_mysql.py
Separate split INSERTs with newlines
[sqlconvert.git] / tests / test_process_mysql.py
index 500a35db746f146e3eed543cc6c10b633a6e4700..df60a647d5de00a997bbc7248303af33b2ff0b55 100644 (file)
@@ -5,7 +5,7 @@ from sqlparse import parse
 from sqlconvert.print_tokens import tlist2str
 from sqlconvert.process_mysql import remove_directive_tokens, \
         is_directive_statement, requote_names, unescape_strings, \
-        process_statement
+        is_insert, process_statement
 from sqlconvert.process_tokens import escape_strings
 
 
@@ -53,6 +53,46 @@ def test_escape_string_sqlite():
     assert query == u"INSERT INTO test VALUES ('\"te''st\"\n')"
 
 
+def test_is_insert():
+    parsed = parse("select /*! test */ * from /* test */ `T`")[0]
+    statement = next(process_statement(parsed))
+    assert not is_insert(statement)
+
+    parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
+    statement = next(process_statement(parsed))
+    assert is_insert(statement)
+
+
+def test_split_ext_insert():
+    parsed = parse("insert into test values (1, 2)")[0]
+    statement = next(process_statement(parsed))
+    query = tlist2str(statement)
+    assert query == u"INSERT INTO test VALUES (1, 2)"
+
+    parsed = parse("insert into test (age, salary) values (1, 2);")[0]
+    statement = next(process_statement(parsed))
+    query = tlist2str(statement)
+    assert query == u"INSERT INTO test (age, salary) VALUES (1, 2);"
+
+    parsed = parse("insert into test values (1, 2), (3, 4);")[0]
+    stiter = process_statement(parsed)
+    statement = next(stiter)
+    query = tlist2str(statement)
+    assert query == u"INSERT INTO test VALUES  (1, 2);\n"
+    statement = next(stiter)
+    query = tlist2str(statement)
+    assert query == u"INSERT INTO test VALUES  (3, 4);"
+
+    parsed = parse("insert into test (age, salary) values (1, 2), (3, 4)")[0]
+    stiter = process_statement(parsed)
+    statement = next(stiter)
+    query = tlist2str(statement)
+    assert query == u"INSERT INTO test (age, salary) VALUES  (1, 2)\n"
+    statement = next(stiter)
+    query = tlist2str(statement)
+    assert query == u"INSERT INTO test (age, salary) VALUES  (3, 4)"
+
+
 def test_process():
     parsed = parse("select /*! test */ * from /* test */ `T`")[0]
     statement = next(process_statement(parsed))