#include #include "serversdk/databasemanager.h" #include "serversdk/databaseutils.h" #include "serversdk/core.h" // add necessary includes here class Names : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(int, id, set_id, 0); TABLE_PROPERTY(QString, name, set_name, 0); }; class SqliteTest : public QObject { Q_OBJECT public: SqliteTest(); ~SqliteTest(); private slots: void createDb_test(); void createTable_test(); }; SqliteTest::SqliteTest() { } SqliteTest::~SqliteTest() { } 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()); Names names; // CREATE TABLE serversdk::DatabaseUtils utils(&db); QSqlQuery query = utils.createTable(&names, "names"); // INSERT INTO TABLE names.set_id(2); names.set_name("Testname"); utils.insertIntoTable(&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("Testname")); QCOMPARE(list.first()->jsonData(), names.jsonData()); } QTEST_APPLESS_MAIN(SqliteTest) #include "tst_sqlite.moc"