From 5cc57ac9e7624221401a78cbf316887eed4779a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Fischer?= Date: Thu, 28 Nov 2019 10:18:08 +0100 Subject: [PATCH] Changes because of tests --- src/colnod/colnodapi.cpp | 71 +++++++++++++++--------------- src/colnod/colnodapi.h | 22 ++++++--- test/auto/colnod/tst_colnodapi.cpp | 7 ++- 3 files changed, 57 insertions(+), 43 deletions(-) diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index eadb3b9..85f722d 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -20,7 +20,7 @@ void ColnodAPI::downloadData() auto login = requestLogin(); connect(login.get(), &serversdk::Request::finished, this, [=](){ // Get login token - if (login->status() != 200) { + if (checkRequest(login)) { emit error(); } @@ -28,12 +28,35 @@ void ColnodAPI::downloadData() token.fromJson(login->responseData()); authToken = token.id(); + std::shared_ptr data; + + auto errorHandler = [=](std::shared_ptr request){ + if (!checkRequest(request)) { + qWarning(colnod) << "ERROR during calling" << request->url() << ", request unsuccessful"; + mValid = false; + } + else if (!checkResponse(request->responseData())) { + qWarning(colnod) << "Data from" << request->url() << "are invalid"; + mValid = false; + } + saveUpdatedTokens(request->responseData()); + emit partOfDataReady(data); + }; + // if I have all data emit downloadDataFinished connect(this, &ColnodAPI::partOfDataReady, this, &ColnodAPI::areDataReady); - getTokensUpdated(mLastSync); - getTokensDeleted(mLastSync); - getSubjectsUpdated(mLastSync); - getSubjectsDeleted(mLastSync); + + auto tokensRequest = getTokensUpdated(mLastSync); + connect(tokensRequest.get(), &serversdk::Request::finished, errorHandler); + + auto deletedTokensRequest = getTokensDeleted(mLastSync); + connect(deletedTokensRequest.get(), &serversdk::Request::finished, errorHandler); + + auto subjectsRequest = getSubjectsUpdated(mLastSync); + connect(subjectsRequest.get(), &serversdk::Request::finished, errorHandler); + + auto deletedSubjectsRequest = getSubjectsDeleted(mLastSync); + connect(deletedSubjectsRequest.get(), &serversdk::Request::finished, errorHandler); }); } @@ -88,45 +111,23 @@ std::shared_ptr ColnodAPI::requestLogin() return loginRequest; } -void ColnodAPI::getTokensUpdated(const Timestamp &time) +std::shared_ptr ColnodAPI::getTokensUpdated(const Timestamp &time) { auto request = composeRequest("/TokenManager/getTokensUpdated", time.jsonData()); request->setUserName(authToken); mReqMan->processRequest(request); - connect(request.get(), &serversdk::Request::finished, [=](){ - if (!checkRequest(request)) { - qWarning(colnod) << "ERROR during calling /TokenManager/getTokensUpdated, request unsuccessful"; - mValid = false; - } - else if (!checkResponse(request->responseData())) { - qWarning(colnod) << "Data from /TokenManager/getTokensUpdated are invalid"; - mValid = false; - } - saveUpdatedTokens(request->responseData()); - emit partOfDataReady(mData); - }); + return request; } -void ColnodAPI::getTokensDeleted(const Timestamp &time) +std::shared_ptr ColnodAPI::getTokensDeleted(const Timestamp &time) { auto request = composeRequest("/TokenManager/getTokensDeleted", time.jsonData()); request->setUserName(authToken); mReqMan->processRequest(request); - connect(request.get(), &serversdk::Request::finished, [=](){ - if (!checkRequest(request)) { - qWarning(colnod) << "ERROR during calling /TokenManager/getTokensDeleted, request unsuccessful"; - mValid = false; - } - else if (!checkResponse(request->responseData())) { - qWarning(colnod) << "Data from /TokenManager/getTokensDeleted are invalid"; - mValid = false; - } - saveDeletedTokens(request->responseData()); - emit partOfDataReady(); - }); + return request; } -void ColnodAPI::getSubjectsUpdated(const Timestamp &time) +std::shared_ptr ColnodAPI::getSubjectsUpdated(const Timestamp &time) { auto request = composeRequest("/SubjectManager/getSubjectsUpdated", time.jsonData()); request->setUserName(authToken); @@ -145,7 +146,7 @@ void ColnodAPI::getSubjectsUpdated(const Timestamp &time) }); } -void ColnodAPI::getSubjectsDeleted(const Timestamp &time) +std::shared_ptr ColnodAPI::getSubjectsDeleted(const Timestamp &time) { auto request = composeRequest("/SubjectManager/getSubjectsDeleted", time.jsonData()); request->setUserName(authToken); @@ -164,7 +165,7 @@ void ColnodAPI::getSubjectsDeleted(const Timestamp &time) }); } -void ColnodAPI::setTokens(const QHash> &tokens) +std::shared_ptr ColnodAPI::setTokens(const QHash> &tokens) { auto request = composeRequest("/TokenManager/setTokens", Token::tokensToColnodJson(tokens)); request->setUserName(authToken); @@ -185,7 +186,7 @@ void ColnodAPI::setTokens(const QHash> &tokens) }); } -void ColnodAPI::deleteTokens(const QList &ids) +std::shared_ptr ColnodAPI::deleteTokens(const QList &ids) { auto request = composeRequest("/TokenManager/deleteTokens", Token::idsToJSON(ids)); request->setUserName(authToken); diff --git a/src/colnod/colnodapi.h b/src/colnod/colnodapi.h index f75abbe..5796b27 100644 --- a/src/colnod/colnodapi.h +++ b/src/colnod/colnodapi.h @@ -23,6 +23,16 @@ class Timestamp : public serversdk::DatabaseTable { Q_OBJECT TABLE_PROPERTY(qint64, timestamp, set_timestamp, 0) public: + Timestamp() = default; + explicit Timestamp(qint64 time) + { + set_timestamp(time); + } + explicit Timestamp(QDateTime time) + { + set_timestamp(time.toMSecsSinceEpoch()); + } + QString toDateString() { return QDateTime::fromMSecsSinceEpoch(a_timestamp).toString("yyyy-MM-dd hh:mm:ss.zzz"); @@ -43,13 +53,13 @@ public: std::shared_ptr requestLogin(); - void getTokensUpdated(const Timestamp &time); - void getTokensDeleted(const Timestamp &time); - void getSubjectsUpdated(const Timestamp &time); - void getSubjectsDeleted(const Timestamp &time); + std::shared_ptr getTokensUpdated(const Timestamp &time); + std::shared_ptr getTokensDeleted(const Timestamp &time); + std::shared_ptr getSubjectsUpdated(const Timestamp &time); + std::shared_ptr getSubjectsDeleted(const Timestamp &time); - void setTokens(const QHash> &tokens); - void deleteTokens(const QList &tokenIds); + std::shared_ptr setTokens(const QHash> &tokens); + std::shared_ptr deleteTokens(const QList &tokenIds); // Attributes QString userName() const; diff --git a/test/auto/colnod/tst_colnodapi.cpp b/test/auto/colnod/tst_colnodapi.cpp index 009793f..e11c9fa 100644 --- a/test/auto/colnod/tst_colnodapi.cpp +++ b/test/auto/colnod/tst_colnodapi.cpp @@ -6,7 +6,6 @@ class ColnodTest : public QObject { Q_OBJECT - friend class ColnodAPI; private slots: void login(); void getTokens(); @@ -31,10 +30,14 @@ void ColnodTest::getTokens() { serversdk::RequestManager reqMan; ColnodAPI colnod(&reqMan); + + // get login token auto login = colnod.requestLogin(); QSignalSpy spy(login.get(), &serversdk::Request::finished); spy.wait(); - qDebug().noquote() << login->responseData().mid(7,36); + QString token = login->responseData().mid(7,36); + Timestamp time(QDateTime::currentMSecsSinceEpoch()); + colnod.getTokensUpdated(time); } QTEST_GUILESS_MAIN(ColnodTest)