server-sdk/test/auto/database/tst_sqlite.cpp
2019-11-18 10:41:24 +01:00

103 lines
2.0 KiB
C++

#include <QtTest>
#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<Names>(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"