forked from ondra/server-sdk
unitest -> filteredJson ( maybe make universal )
This commit is contained in:
parent
1cf415820f
commit
7f369b075d
@ -64,6 +64,9 @@ namespace serversdk {
|
||||
*
|
||||
* @endcode
|
||||
*
|
||||
* ## Warning
|
||||
*
|
||||
* Derivation of derived class from DatabaseTable does not work ( missing properties )
|
||||
*
|
||||
* @code
|
||||
* in: TABLE_PROPERTY
|
||||
@ -96,7 +99,7 @@ public:
|
||||
* @brief Creates VariantMap from QMetaObject data ( Q_PROPERTY )
|
||||
* @return QVariantMap containing property with key/value pairs
|
||||
*/
|
||||
QVariantMap toVariantMap() const;
|
||||
virtual QVariantMap toVariantMap() const;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@ -10,12 +10,14 @@ class BookTable : public serversdk::DatabaseTable
|
||||
TABLE_PROPERTY(QString, uuid, setUuid, QString());
|
||||
TABLE_PROPERTY(int, id, setId, 0);
|
||||
TABLE_PROPERTY(QString, name, setName, "Test");
|
||||
};
|
||||
|
||||
class BookTableExt : public BookTable
|
||||
{
|
||||
Q_OBJECT
|
||||
TABLE_PROPERTY(QString, author, setAuthor, "Já");
|
||||
TABLE_PROPERTY(QString, author, setAuthor, "Me");
|
||||
public:
|
||||
QByteArray filteredJson() {
|
||||
auto variant = this->toVariantMap();
|
||||
variant.remove("author");
|
||||
QJsonDocument doc = QJsonDocument::fromVariant(variant);
|
||||
return doc.toJson(QJsonDocument::Compact);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -86,7 +88,7 @@ private slots:
|
||||
void json_test();
|
||||
void enum_test();
|
||||
|
||||
void subclass_test();
|
||||
void filter_json_test();
|
||||
|
||||
};
|
||||
|
||||
@ -109,7 +111,7 @@ void DatabaseTableTest::qvariant_test()
|
||||
{
|
||||
auto table = std::make_unique<BookTable>();
|
||||
QVariantMap map = table->toVariantMap();
|
||||
QCOMPARE(map.count(), 3);
|
||||
QCOMPARE(map.count(), 4);
|
||||
}
|
||||
|
||||
void DatabaseTableTest::json_test()
|
||||
@ -118,7 +120,7 @@ void DatabaseTableTest::json_test()
|
||||
QCOMPARE(table->id(), 0);
|
||||
QCOMPARE(table->name(), QStringLiteral("Test"));
|
||||
|
||||
QByteArray expected(R"({"id":0,"name":"Test","uuid":""})");
|
||||
QByteArray expected(R"({"author":"Me","id":0,"name":"Test","uuid":""})");
|
||||
QCOMPARE(table->jsonData(), expected);
|
||||
}
|
||||
|
||||
@ -144,24 +146,17 @@ void DatabaseTableTest::enum_test()
|
||||
}
|
||||
|
||||
/** Baseclass must not contain property of derived class ( extended class ) */
|
||||
void DatabaseTableTest::subclass_test()
|
||||
void DatabaseTableTest::filter_json_test()
|
||||
{
|
||||
auto book = std::make_shared<BookTable>();
|
||||
auto bookExt = std::make_shared<BookTableExt>();
|
||||
|
||||
book->fromVariantMap(bookExt->toVariantMap());
|
||||
|
||||
QCOMPARE(book->jsonData(), QByteArray("{\"id\":0,\"name\":\"\",\"uuid\":\"\"}"));
|
||||
QCOMPARE(book->jsonData(), QByteArray("{\"author\":\"Me\",\"id\":0,\"name\":\"Test\",\"uuid\":\"\"}"));
|
||||
QCOMPARE(book->filteredJson(), QByteArray("{\"id\":0,\"name\":\"Test\",\"uuid\":\"\"}"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
QTEST_APPLESS_MAIN(DatabaseTableTest)
|
||||
|
||||
#include "tst_databasetable.moc"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user