mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 16:20:41 +02:00
149 lines
3.6 KiB
C++
149 lines
3.6 KiB
C++
#include "serversdk/databasetable.h"
|
|
|
|
#include <QtTest>
|
|
|
|
#include <memory>
|
|
|
|
class BookTable : public serversdk::DatabaseTable
|
|
{
|
|
Q_OBJECT
|
|
TABLE_PROPERTY(QUuid, uuid, setUuid, QUuid());
|
|
TABLE_PROPERTY(int, id, setId, 0);
|
|
TABLE_PROPERTY(QString, name, setName, "Test");
|
|
};
|
|
|
|
|
|
QString enumjson = R"({"authErrors":255,"flags":["Enabled","NoValidity"],"subjectId":"1438aade-3aa6-4885-8e0f-138dedae727a"})";
|
|
|
|
|
|
class EnumTest : public serversdk::DatabaseTable
|
|
{
|
|
Q_OBJECT
|
|
TABLE_PROPERTY(int, authErrors, setAuthErrors, 0);
|
|
TABLE_PROPERTY(bool, enabled, setEnabled, false);
|
|
TABLE_PROPERTY(bool, noValidity, setNoValidity, false);
|
|
TABLE_PROPERTY(QString, subjectId, setSubjectId, QString());
|
|
public:
|
|
QByteArray jsonData() const override
|
|
{
|
|
auto variantMap = this->toVariantMap();
|
|
auto enabled = variantMap["enabled"].toBool();
|
|
auto noValidity = variantMap["noValidity"].toBool();
|
|
variantMap.remove("enabled");
|
|
variantMap.remove("noValidity");
|
|
QVariantList flags;
|
|
if ( enabled ) {
|
|
flags << "Enabled";
|
|
}
|
|
if ( noValidity ) {
|
|
flags << "NoValidity";
|
|
}
|
|
variantMap.insert("flags", flags);
|
|
|
|
QJsonDocument doc = QJsonDocument::fromVariant(variantMap);
|
|
return doc.toJson(QJsonDocument::Compact);
|
|
}
|
|
bool fromJson(const QByteArray &data) override
|
|
{
|
|
QJsonDocument doc = QJsonDocument::fromJson(data);
|
|
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
|
|
|
|
QVariantList flags = variant["flags"].toList();
|
|
for (auto value : flags) {
|
|
if ( value.toString() == "Enabled") {
|
|
variant.insert("enabled", true);
|
|
}
|
|
if ( value.toString() == "NoValidity") {
|
|
variant.insert("noValidity", true);
|
|
}
|
|
}
|
|
variant.remove("flags");
|
|
|
|
// Populate this object data
|
|
bool res = fromVariantMap(variant);
|
|
return res;
|
|
}
|
|
};
|
|
|
|
|
|
class DatabaseTableTest : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
DatabaseTableTest();
|
|
~DatabaseTableTest();
|
|
|
|
private slots:
|
|
void constructor_test();
|
|
void qvariant_test();
|
|
void json_test();
|
|
void enum_test();
|
|
|
|
};
|
|
|
|
DatabaseTableTest::DatabaseTableTest()
|
|
{
|
|
}
|
|
|
|
DatabaseTableTest::~DatabaseTableTest()
|
|
{
|
|
}
|
|
|
|
void DatabaseTableTest::constructor_test()
|
|
{
|
|
auto table = std::make_unique<BookTable>();
|
|
QCOMPARE(table->id(), 0);
|
|
QCOMPARE(table->name(), QStringLiteral("Test"));
|
|
}
|
|
|
|
void DatabaseTableTest::qvariant_test()
|
|
{
|
|
auto table = std::make_unique<BookTable>();
|
|
QVariantMap map = table->toVariantMap();
|
|
QCOMPARE(map.count(), 3);
|
|
}
|
|
|
|
void DatabaseTableTest::json_test()
|
|
{
|
|
auto table = std::make_unique<BookTable>();
|
|
QCOMPARE(table->id(), 0);
|
|
QCOMPARE(table->name(), QStringLiteral("Test"));
|
|
|
|
QByteArray expected(R"({"id":0,"name":"Test","uuid":"{00000000-0000-0000-0000-000000000000}"})");
|
|
QCOMPARE(table->jsonData(), expected);
|
|
}
|
|
|
|
void DatabaseTableTest::enum_test()
|
|
{
|
|
auto table = std::make_unique<EnumTest>();
|
|
table->setAuthErrors(255);
|
|
table->setNoValidity(true);
|
|
table->setEnabled(true);
|
|
table->setSubjectId("1438aade-3aa6-4885-8e0f-138dedae727a");
|
|
|
|
QCOMPARE(table->jsonData(), enumjson.toUtf8());
|
|
|
|
EnumTest jsonTest;
|
|
|
|
jsonTest.fromJson(enumjson.toUtf8());
|
|
|
|
QCOMPARE(jsonTest.authErrors(), 255);
|
|
QCOMPARE(jsonTest.noValidity(), true);
|
|
QCOMPARE(jsonTest.enabled(), true);
|
|
QCOMPARE(jsonTest.subjectId(), QStringLiteral("1438aade-3aa6-4885-8e0f-138dedae727a"));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QTEST_APPLESS_MAIN(DatabaseTableTest)
|
|
|
|
#include "tst_databasetable.moc"
|