From 7f369b075d52319b6f8e5a900379121dcc262f2a Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Tue, 19 Nov 2019 13:40:19 +0100 Subject: [PATCH] unitest -> filteredJson ( maybe make universal ) --- src/serversdk/databasetable.h | 5 +++- test/auto/database/tst_databasetable.cpp | 33 ++++++++++-------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/serversdk/databasetable.h b/src/serversdk/databasetable.h index 018ea98..01a5fc8 100644 --- a/src/serversdk/databasetable.h +++ b/src/serversdk/databasetable.h @@ -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; /** diff --git a/test/auto/database/tst_databasetable.cpp b/test/auto/database/tst_databasetable.cpp index b2084c0..7949a83 100644 --- a/test/auto/database/tst_databasetable.cpp +++ b/test/auto/database/tst_databasetable.cpp @@ -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(); 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(); - auto bookExt = std::make_shared(); - - 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"