aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2021-12-17 07:06:30 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2021-12-17 07:06:30 -0500
commit1fdc150116cad39aae5c5da407c3312b47a59e3a (patch)
tree123c79a4d7ad2d45781ba03ce939f7539fb428d8 /SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp
parentfeda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff)
New upstream version 3.3.3+dfsg1.upstream/3.3.3+dfsg1
Diffstat (limited to 'SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp')
-rw-r--r--SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp37
1 files changed, 36 insertions, 1 deletions
diff --git a/SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp b/SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp
index 7bb8c0e..a5e0ad1 100644
--- a/SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp
+++ b/SQLiteStudio3/Tests/TableModifierTest/tst_tablemodifiertest.cpp
@@ -33,6 +33,7 @@ class TableModifierTest : public QObject
void testCase4();
void testCase5();
void testCase6();
+ void testCase7();
};
TableModifierTest::TableModifierTest()
@@ -266,6 +267,39 @@ void TableModifierTest::testCase6()
verifyRe("PRAGMA foreign_keys = 1;", sqls[i++]);
}
+void TableModifierTest::testCase7()
+{
+ static_qstring(ddl, "CREATE TABLE abc (col1 text, col2 as (col1 || 'x'));");
+ db->exec(ddl);
+
+ Parser parser;
+ Q_ASSERT(parser.parse(ddl));
+ Q_ASSERT(parser.getQueries().size() > 0);
+ SqliteCreateTablePtr localCreateTable = parser.getQueries().first().dynamicCast<SqliteCreateTable>();
+ Q_ASSERT(!createTable.isNull());
+
+
+ TableModifier mod(db, "abc");
+ localCreateTable->table = "newTable";
+ mod.alterTable(localCreateTable);
+ QStringList sqls = mod.generateSqls();
+
+ /*
+ * 1. Disable FK.
+ * 2. Create new (with new name)
+ * 3. Copy data to new
+ * 4. Drop old table.
+ * 5. Enable FK.
+ */
+ QVERIFY(sqls.size() == 5);
+ int i = 0;
+ verifyRe("PRAGMA foreign_keys = 0;", sqls[i++]);
+ verifyRe("CREATE TABLE newTable \\(col1 text, col2 AS \\(col1 \\|\\| 'x'\\)\\);", sqls[i++]);
+ verifyRe("INSERT INTO newTable \\(col1\\) SELECT col1 FROM abc\\;", sqls[i++]);
+ verifyRe("DROP TABLE abc;", sqls[i++]);
+ verifyRe("PRAGMA foreign_keys = 1;", sqls[i++]);
+}
+
void TableModifierTest::initTestCase()
{
initKeywords();
@@ -275,12 +309,13 @@ void TableModifierTest::initTestCase()
void TableModifierTest::init()
{
initMocks();
+ initUtilsSql();
db = new DbSqlite3Mock("testdb");
db->open();
db->exec(mainTableDdl);
- Parser parser(db->getDialect());
+ Parser parser;
Q_ASSERT(parser.parse(mainTableDdl));
Q_ASSERT(parser.getQueries().size() > 0);
createTable = parser.getQueries().first().dynamicCast<SqliteCreateTable>();