#include #include "serversdk/databasemanager.h" #include "serversdk/databaseutils.h" #include "serversdk/core.h" // add necessary includes here class Name : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(QString, uuid, set_uuid, QString()); TABLE_PROPERTY(int, id, set_id, 0); TABLE_PROPERTY(QString, name, set_name, ""); TABLE_PROPERTY(QString, vehicleName, set_vehicle_name, "Škodouliňkaťoučký"); }; class SqliteTest : public QObject { Q_OBJECT public: SqliteTest() = default; private slots: void createDb_test(); void createTable_test(); void updateTable_test(); }; void SqliteTest::createDb_test() { // Prepare temporary path for database QTemporaryDir dir; QVERIFY(dir.isValid()); QString dbpath = dir.path() + "/testdb.sqlite"; QVERIFY(!dbpath.isEmpty()); QVERIFY(!QFileInfo::exists(dbpath)); serversdk::DatabaseManager db; db.openSQLite(dbpath); QVERIFY(db.isValid()); QVERIFY(db.isOpen()); QVERIFY(QFileInfo::exists(dbpath)); // Closing database db.close(); QVERIFY(!db.isOpen()); // Temporary dir cleanup QVERIFY(dir.remove()); QVERIFY(!QFileInfo::exists(dbpath)); } void SqliteTest::createTable_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"; const QString uuidB = "d70143ab-8c14-4ee0-85cb-f0d1b72df104"; name_A.set_uuid(uuidA); name_A.set_id(2); name_A.set_name("TestnameA"); name_B.set_uuid(uuidB); name_B.set_id(2); name_B.set_name("TestnameB"); utils.insertIntoTable(&name_A, "names"); utils.insertIntoTable(&name_B, "names"); // SELECT FROM TABLE QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); auto list = utils.tableFromQuery(selectSQL); // ENSURE SAME QCOMPARE(list.count(), 2); auto names_tab = list.first(); qDebug() << "Uuid" << names_tab->uuid(); QVERIFY(names_tab); QCOMPARE(names_tab->name(), QStringLiteral("TestnameA")); QCOMPARE(list.first()->jsonData(), name_A.jsonData()); } void SqliteTest::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 names; // CREATE TABLE serversdk::DatabaseUtils utils(&db); QSqlQuery query = utils.createTable(&names, "names"); // INSERT INTO TABLE const QString uuidA = "48f64fab-ba2a-40b5-8fbb-75361099dfb6"; names.set_uuid(uuidA); names.set_id(2); names.set_name("Testname"); utils.insertIntoTable(&names, "names"); // NOW UPDATING TABLE WITH name: NewName names.set_name("NewName"); utils.updateTable(&names, "names"); // SELECT FROM TABLE QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); auto list = utils.tableFromQuery(selectSQL); // ENSURE SAME QCOMPARE(list.count(), 1); auto names_tab = list.first(); QVERIFY(names_tab); QCOMPARE(names_tab->name(), QStringLiteral("NewName")); QCOMPARE(list.first()->jsonData(), names.jsonData()); } QTEST_APPLESS_MAIN(SqliteTest) #include "tst_sqlite.moc"