From 99089d1b128bdf87b9a76af803e0e0594e2f5e6c Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Mon, 25 Nov 2019 16:24:33 +0100 Subject: [PATCH] emitting error when SQL error --- src/serversdk/databasemanager.cpp | 1 + src/serversdk/databasemanager.h | 2 +- test/auto/database/tst_sqlite.cpp | 35 ++++++++++++++++++++++++++++--- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/serversdk/databasemanager.cpp b/src/serversdk/databasemanager.cpp index 628fa8d..7c99e2e 100644 --- a/src/serversdk/databasemanager.cpp +++ b/src/serversdk/databasemanager.cpp @@ -128,6 +128,7 @@ QSqlQuery DatabaseManager::processResult(int res, const QSqlQuery &query) const QString msg = QString("Source: Database Manager \nError --------\n%1\nSQL-------\n%2\n--------") .arg(query.lastError().text(), query.lastQuery()); qCDebug(sdkdb).noquote() << msg; + emit sqlError(query); log(msg); } return query; diff --git a/src/serversdk/databasemanager.h b/src/serversdk/databasemanager.h index 1e4139c..80a873a 100644 --- a/src/serversdk/databasemanager.h +++ b/src/serversdk/databasemanager.h @@ -45,7 +45,7 @@ private: void log(const QString &msg) const; signals: - void error(); + void sqlError(const QSqlQuery &query); private: QString mConnectionName; diff --git a/test/auto/database/tst_sqlite.cpp b/test/auto/database/tst_sqlite.cpp index 9208183..86ede65 100644 --- a/test/auto/database/tst_sqlite.cpp +++ b/test/auto/database/tst_sqlite.cpp @@ -5,7 +5,6 @@ #include "serversdk/core.h" // add necessary includes here - class Name : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QString, uuid, set_uuid, QString()); @@ -26,6 +25,7 @@ private slots: void createDb_test(); void createTable_test(); void updateTable_test(); + void fail_updateTable_test(); }; @@ -124,8 +124,8 @@ void SqliteTest::updateTable_test() name_B.set_name("TestnameB"); - utils.insertIntoTable(&name_A, "names"); - utils.insertIntoTable(&name_B, "names"); + QVERIFY2(utils.insertIntoTable(&name_A, "names").isActive(), "Successfull insert must return isActive sqlQuery"); + QVERIFY2(utils.insertIntoTable(&name_B, "names").isActive(), "Successfull insert must return isActive sqlQuery"); // NOW UPDATING TABLE WITH name: NewName @@ -148,6 +148,35 @@ void SqliteTest::updateTable_test() QCOMPARE(dbB->jsonData(), name_B.jsonData()); } +/** # Fail Update test + * + * Test isActive must be FALSE when not possible to update database table + */ +void SqliteTest::fail_updateTable_test() +{ + // Prepare temporary path for database + QTemporaryDir dir; + QString dbpath = dir.path() + "/testdb.sqlite"; + serversdk::DatabaseManager db; + db.openSQLite(dbpath); + QVERIFY(db.isOpen()); + + Name name_A, name_B; + + // CREATE TABLE + serversdk::DatabaseUtils utils(&db); + QSqlQuery query = utils.createTable(&name_A, "names"); + + // INSERT INTO TABLE + const QString uuidA = "48f64fab-ba2a-40b5-8fbb-75361099dfb6"; + name_A.set_uuid(uuidA); + name_A.set_id(2); + name_A.set_name("TestnameA"); + + + QVERIFY2(!utils.insertIntoTable(&name_A, "nonexistenttable").isActive(), "Successfull insert must return isActive sqlQuery"); +} + QTEST_APPLESS_MAIN(SqliteTest) #include "tst_sqlite.moc"