unitest -> filteredJson ( maybe make universal )

This commit is contained in:
Filip Bucek 2019-11-19 13:40:19 +01:00
parent 1cf415820f
commit 7f369b075d
2 changed files with 18 additions and 20 deletions

View File

@ -64,6 +64,9 @@ namespace serversdk {
* *
* @endcode * @endcode
* *
* ## Warning
*
* Derivation of derived class from DatabaseTable does not work ( missing properties )
* *
* @code * @code
* in: TABLE_PROPERTY * in: TABLE_PROPERTY
@ -96,7 +99,7 @@ public:
* @brief Creates VariantMap from QMetaObject data ( Q_PROPERTY ) * @brief Creates VariantMap from QMetaObject data ( Q_PROPERTY )
* @return QVariantMap containing property with key/value pairs * @return QVariantMap containing property with key/value pairs
*/ */
QVariantMap toVariantMap() const; virtual QVariantMap toVariantMap() const;
/** /**

View File

@ -10,12 +10,14 @@ class BookTable : public serversdk::DatabaseTable
TABLE_PROPERTY(QString, uuid, setUuid, QString()); TABLE_PROPERTY(QString, uuid, setUuid, QString());
TABLE_PROPERTY(int, id, setId, 0); TABLE_PROPERTY(int, id, setId, 0);
TABLE_PROPERTY(QString, name, setName, "Test"); TABLE_PROPERTY(QString, name, setName, "Test");
}; TABLE_PROPERTY(QString, author, setAuthor, "Me");
public:
class BookTableExt : public BookTable QByteArray filteredJson() {
{ auto variant = this->toVariantMap();
Q_OBJECT variant.remove("author");
TABLE_PROPERTY(QString, author, setAuthor, ""); QJsonDocument doc = QJsonDocument::fromVariant(variant);
return doc.toJson(QJsonDocument::Compact);
}
}; };
@ -86,7 +88,7 @@ private slots:
void json_test(); void json_test();
void enum_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>(); auto table = std::make_unique<BookTable>();
QVariantMap map = table->toVariantMap(); QVariantMap map = table->toVariantMap();
QCOMPARE(map.count(), 3); QCOMPARE(map.count(), 4);
} }
void DatabaseTableTest::json_test() void DatabaseTableTest::json_test()
@ -118,7 +120,7 @@ void DatabaseTableTest::json_test()
QCOMPARE(table->id(), 0); QCOMPARE(table->id(), 0);
QCOMPARE(table->name(), QStringLiteral("Test")); 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); QCOMPARE(table->jsonData(), expected);
} }
@ -144,24 +146,17 @@ void DatabaseTableTest::enum_test()
} }
/** Baseclass must not contain property of derived class ( extended class ) */ /** 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 book = std::make_shared<BookTable>();
auto bookExt = std::make_shared<BookTableExt>(); QCOMPARE(book->jsonData(), QByteArray("{\"author\":\"Me\",\"id\":0,\"name\":\"Test\",\"uuid\":\"\"}"));
QCOMPARE(book->filteredJson(), QByteArray("{\"id\":0,\"name\":\"Test\",\"uuid\":\"\"}"));
book->fromVariantMap(bookExt->toVariantMap());
QCOMPARE(book->jsonData(), QByteArray("{\"id\":0,\"name\":\"\",\"uuid\":\"\"}"));
} }
QTEST_APPLESS_MAIN(DatabaseTableTest) QTEST_APPLESS_MAIN(DatabaseTableTest)
#include "tst_databasetable.moc" #include "tst_databasetable.moc"