forked from ondra/server-sdk
104 lines
2.0 KiB
C++
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"
|