From 1c16728cb043b176057acd9950b1f828d2ca8127 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Tue, 28 Feb 2023 23:59:27 +0100 Subject: [PATCH] Move TestingALM to activitylistmodeltestutils Signed-off-by: Claudio Cambra --- test/CMakeLists.txt | 2 +- test/activitylistmodeltestutils.cpp | 47 +++++++++++++++++++++ test/activitylistmodeltestutils.h | 25 +++++++++++ test/testactivitylistmodel.cpp | 65 ----------------------------- 4 files changed, 73 insertions(+), 66 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a8ccda7ed..8a9d245b4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -6,13 +6,13 @@ set(CMAKE_AUTOMOC TRUE) add_library(testutils STATIC - activitylistmodeltestutils.cpp syncenginetestutils.cpp pushnotificationstestutils.cpp themeutils.cpp testhelper.cpp sharetestutils.cpp endtoendtestutils.cpp + activitylistmodeltestutils.cpp ) target_link_libraries(testutils PUBLIC Nextcloud::sync Qt5::Test) diff --git a/test/activitylistmodeltestutils.cpp b/test/activitylistmodeltestutils.cpp index 72d40b15d..348cd7cb6 100644 --- a/test/activitylistmodeltestutils.cpp +++ b/test/activitylistmodeltestutils.cpp @@ -323,3 +323,50 @@ int FakeRemoteActivityStorage::startingIdLast() const { return _startingId; } + + +void TestingALM::startFetchJob() +{ + auto *job = new OCC::JsonApiJob( + accountState()->account(), QLatin1String("ocs/v2.php/apps/activity/api/v2/activity"), this); + QObject::connect(this, &TestingALM::activityJobStatusCode, this, &TestingALM::slotProcessReceivedActivities); + QObject::connect(job, &OCC::JsonApiJob::jsonReceived, this, &TestingALM::activitiesReceived); + + QUrlQuery params; + params.addQueryItem(QLatin1String("since"), QString::number(currentItem())); + params.addQueryItem(QLatin1String("limit"), QString::number(50)); + job->addQueryParams(params); + + setAndRefreshCurrentlyFetching(true); + job->start(); +} + +void TestingALM::slotProcessReceivedActivities() +{ + if (rowCount() > _numRowsPrev) { + auto finalListCopy = finalList(); + for (int i = _numRowsPrev; i < rowCount(); ++i) { + const auto modelIndex = index(i, 0); + auto activity = finalListCopy.at(modelIndex.row()); + if (activity._links.isEmpty()) { + const auto activityJsonObject = FakeRemoteActivityStorage::instance()->activityById(activity._id); + + if (!activityJsonObject.isNull()) { + // because "_links" are normally populated within the notificationhandler.cpp, which we don't run as part of this unit test, we have to fill them here + // TODO: move the logic to populate "_links" to "activitylistmodel.cpp" + auto actions = activityJsonObject.toObject().value("actions").toArray(); + foreach (auto action, actions) { + activity._links.append(OCC::ActivityLink::createFomJsonObject(action.toObject())); + } + + finalListCopy[modelIndex.row()] = activity; + } + } + } + + setFinalList(finalListCopy); + } + _numRowsPrev = rowCount(); + setAndRefreshCurrentlyFetching(false); + emit activitiesProcessed(); +} diff --git a/test/activitylistmodeltestutils.h b/test/activitylistmodeltestutils.h index d6dc042b3..91dc030fe 100644 --- a/test/activitylistmodeltestutils.h +++ b/test/activitylistmodeltestutils.h @@ -15,6 +15,12 @@ #include #include +#include "gui/tray/activitylistmodel.h" + +#include "libsync/account.h" +#include "gui/accountstate.h" +#include "gui/accountmanager.h" + #pragma once class QByteArray; @@ -46,3 +52,22 @@ private: static FakeRemoteActivityStorage *_instance; }; + +class TestingALM : public OCC::ActivityListModel +{ + Q_OBJECT + +public: + TestingALM() = default; + + void startFetchJob() override; + +public slots: + void slotProcessReceivedActivities(); + +signals: + void activitiesProcessed(); + +private: + int _numRowsPrev = 0; +}; diff --git a/test/testactivitylistmodel.cpp b/test/testactivitylistmodel.cpp index b28011907..cacc1364c 100644 --- a/test/testactivitylistmodel.cpp +++ b/test/testactivitylistmodel.cpp @@ -12,11 +12,6 @@ * for more details. */ -#include "gui/tray/activitylistmodel.h" - -#include "account.h" -#include "accountstate.h" -#include "accountmanager.h" #include "activitylistmodeltestutils.h" #include "syncenginetestutils.h" #include "syncresult.h" @@ -38,66 +33,6 @@ static QByteArray fake500Response = R"( {"ocs":{"meta":{"status":"failure","statuscode":500,"message":"Internal Server Error.\n"},"data":[]}} )"; -class TestingALM : public OCC::ActivityListModel -{ - Q_OBJECT - -public: - TestingALM() = default; - - void startFetchJob() override - { - auto *job = new OCC::JsonApiJob( - accountState()->account(), QLatin1String("ocs/v2.php/apps/activity/api/v2/activity"), this); - QObject::connect(this, &TestingALM::activityJobStatusCode, this, &TestingALM::slotProcessReceivedActivities); - QObject::connect(job, &OCC::JsonApiJob::jsonReceived, this, &TestingALM::activitiesReceived); - - QUrlQuery params; - params.addQueryItem(QLatin1String("since"), QString::number(currentItem())); - params.addQueryItem(QLatin1String("limit"), QString::number(50)); - job->addQueryParams(params); - - setAndRefreshCurrentlyFetching(true); - job->start(); - } - -public slots: - void slotProcessReceivedActivities() - { - if (rowCount() > _numRowsPrev) { - auto finalListCopy = finalList(); - for (int i = _numRowsPrev; i < rowCount(); ++i) { - const auto modelIndex = index(i, 0); - auto activity = finalListCopy.at(modelIndex.row()); - if (activity._links.isEmpty()) { - const auto activityJsonObject = FakeRemoteActivityStorage::instance()->activityById(activity._id); - - if (!activityJsonObject.isNull()) { - // because "_links" are normally populated within the notificationhandler.cpp, which we don't run as part of this unit test, we have to fill them here - // TODO: move the logic to populate "_links" to "activitylistmodel.cpp" - auto actions = activityJsonObject.toObject().value("actions").toArray(); - foreach (auto action, actions) { - activity._links.append(OCC::ActivityLink::createFomJsonObject(action.toObject())); - } - - finalListCopy[modelIndex.row()] = activity; - } - } - } - - setFinalList(finalListCopy); - } - _numRowsPrev = rowCount(); - setAndRefreshCurrentlyFetching(false); - emit activitiesProcessed(); - } -signals: - void activitiesProcessed(); - -private: - int _numRowsPrev = 0; -}; - class TestActivityListModel : public QObject { Q_OBJECT -- 2.30.2