#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 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"); // NOW UPDATING TABLE WITH name: NewName name_A.set_name("TestnameA-new"); utils.updateTable(&name_A, "names"); name_B.set_name("TestnameB-new"); utils.updateTable(&name_B, "names"); // SELECT FROM TABLE QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); auto list = utils.tableFromQuery(selectSQL); QCOMPARE(list.count(), 2); auto dbA = list.first(); auto dbB = list.last(); QCOMPARE(dbA->name(), name_A.name()); QCOMPARE(dbB->name(), name_B.name()); QCOMPARE(dbA->jsonData(), name_A.jsonData()); QCOMPARE(dbB->jsonData(), name_B.jsonData()); } QTEST_APPLESS_MAIN(SqliteTest) #include "tst_sqlite.moc"