void Repository::requestLibraryList(const QUrl& url) const noexcept { NetworkRequest* request = new NetworkRequest(url); request->setHeaderField("Accept", "application/json;charset=UTF-8"); request->setHeaderField("Accept-Charset", "UTF-8"); connect(request, &NetworkRequest::errored, this, &Repository::errorWhileFetchingLibraryList, Qt::QueuedConnection); connect(request, &NetworkRequest::dataReceived, this, &Repository::requestedDataReceived, Qt::QueuedConnection); request->start(); }
TEST_P(NetworkRequestTest, testDownload) { const NetworkRequestTestData& data = GetParam(); // start the request NetworkRequest* request = new NetworkRequest(data.url); if (!data.accept.isEmpty()) { request->setHeaderField("Accept", data.accept); } QObject::connect(request, &NetworkRequest::progressState, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::progressState); QObject::connect(request, &NetworkRequest::progressPercent, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::progressPercent); QObject::connect(request, &NetworkRequest::progress, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::progress); QObject::connect(request, &NetworkRequest::aborted, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::aborted); QObject::connect(request, &NetworkRequest::succeeded, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::succeeded); QObject::connect(request, &NetworkRequest::errored, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::errored); QObject::connect(request, &NetworkRequest::finished, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::finished); QObject::connect(request, &NetworkRequest::dataReceived, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::dataReceived); QObject::connect(request, &NetworkRequest::destroyed, &mSignalReceiver, &NetworkRequestBaseSignalReceiver::destroyed); request->start(); // wait until request finished (with timeout) qint64 start = QDateTime::currentDateTime().toMSecsSinceEpoch(); auto currentTime = []() { return QDateTime::currentDateTime().toMSecsSinceEpoch(); }; while ((!mSignalReceiver.mDestroyed) && (currentTime() - start < 30000)) { QThread::msleep(100); qApp->processEvents(); } // check count and parameters of emited signals EXPECT_TRUE(mSignalReceiver.mDestroyed) << "Request timed out!"; EXPECT_GT(mSignalReceiver.mProgressStateCallCount, 0); EXPECT_EQ(mSignalReceiver.mAdvancedProgressCallCount, mSignalReceiver.mSimpleProgressCallCount); EXPECT_EQ(0, mSignalReceiver.mAbortedCallCount); EXPECT_EQ(1, mSignalReceiver.mFinishedCallCount); EXPECT_EQ(0, mSignalReceiver.mFileDownloadedCallCount); EXPECT_EQ(0, mSignalReceiver.mZipFileExtractedCallCount); if (data.success) { EXPECT_GE(mSignalReceiver.mSimpleProgressCallCount, 1); EXPECT_EQ(1, mSignalReceiver.mSucceededCallCount); EXPECT_EQ(0, mSignalReceiver.mErroredCallCount); EXPECT_EQ(1, mSignalReceiver.mDataReceivedCallCount); EXPECT_TRUE(mSignalReceiver.mErrorMessage.isNull()) << qPrintable(mSignalReceiver.mErrorMessage); EXPECT_TRUE(mSignalReceiver.mFinishedSuccess); EXPECT_FALSE(mSignalReceiver.mReceivedData.isEmpty()); } else { EXPECT_GE(mSignalReceiver.mSimpleProgressCallCount, 0); EXPECT_EQ(0, mSignalReceiver.mSucceededCallCount); EXPECT_EQ(1, mSignalReceiver.mErroredCallCount); EXPECT_EQ(0, mSignalReceiver.mDataReceivedCallCount); EXPECT_FALSE(mSignalReceiver.mErrorMessage.isEmpty()) << qPrintable(mSignalReceiver.mErrorMessage); EXPECT_FALSE(mSignalReceiver.mFinishedSuccess); EXPECT_TRUE(mSignalReceiver.mReceivedData.isEmpty()); } EXPECT_TRUE( mSignalReceiver.mReceivedData.trimmed().startsWith(data.contentStart)) << qPrintable(mSignalReceiver.mReceivedData); }