mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 20:50:42 +02:00
154 lines
3.9 KiB
C++
154 lines
3.9 KiB
C++
#include <QtTest>
|
|
|
|
#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<Name>(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<Name>(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"
|