server-sdk/test/auto/database/tst_sqlite.cpp
2019-11-12 16:16:39 +01:00

104 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;
Q_ASSERT(dir.isValid());
QString dbpath = dir.path() + "/testdb.sqlite";
Q_ASSERT(!dbpath.isEmpty());
Q_ASSERT(!QFileInfo::exists(dbpath));
serversdk::DatabaseManager db;
db.openSQLite(dbpath);
Q_ASSERT(db.isValid());
Q_ASSERT(db.isOpen());
Q_ASSERT(QFileInfo::exists(dbpath));
// Closing database
db.close();
Q_ASSERT(!db.isOpen());
// Temporary dir cleanup
Q_ASSERT(dir.remove());
Q_ASSERT(!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);
Q_ASSERT(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 listVariantMap = utils.listMapFromQuery(selectSQL);
auto list = Names::fromListVariantMap(listVariantMap);
// ENSURE SAME
QCOMPARE(list.count(), 1);
QCOMPARE(list.first()->name(), QStringLiteral("Testname"));
QCOMPARE(list.first()->jsonData(), names.jsonData());
}
QTEST_APPLESS_MAIN(SqliteTest)
#include "tst_sqlite.moc"