16
16
* Boston, MA 02110-1301, USA.
19
#include <QScopedPointer>
21
#include <gmock/gmock.h>
25
#include "test_single_download.h"
28
using ::testing::Mock;
29
using ::testing::Return;
19
31
TestSingleDownload::TestSingleDownload(QObject *parent)
20
: LocalTreeTestCase("TestSingleDownload", parent) {
32
: BaseTestCase("TestSingleDownload", parent) {
24
36
TestSingleDownload::init() {
25
LocalTreeTestCase::init();
39
_metadata["my-string"] = "canonical";
40
_metadata["your-string"] = "developer";
41
_headers["test"] = "test";
42
_headers["my test"] = "my test";
43
_url = "http://example.com";
45
_down = new MockDownload();
46
_man = new MockManager();
29
50
TestSingleDownload::cleanup() {
30
LocalTreeTestCase::cleanup();
51
BaseTestCase::cleanup();
57
TestSingleDownload::verifyMocks() {
58
QVERIFY(Mock::VerifyAndClearExpectations(_down));
59
QVERIFY(Mock::VerifyAndClearExpectations(_man));
63
TestSingleDownload::testCanceledSignalFwd() {
64
QScopedPointer<TestableSingleDownload> singleDownload(
65
new TestableSingleDownload(_down, _man));
67
SignalBarrier spy(singleDownload.data(), SIGNAL(canceled(bool)));
68
_down->canceled(true);
70
QVERIFY(spy.ensureSignalEmitted());
76
TestSingleDownload::testFinishedSingalFwd() {
77
QScopedPointer<TestableSingleDownload> singleDownload(
78
new TestableSingleDownload(_down, _man));
80
SignalBarrier spy(singleDownload.data(), SIGNAL(finished(const QString&)));
81
_down->finished(QString("TEST"));
83
QVERIFY(spy.ensureSignalEmitted());
89
TestSingleDownload::testPausedSignalFwd() {
90
QScopedPointer<TestableSingleDownload> singleDownload(
91
new TestableSingleDownload(_down, _man));
93
SignalBarrier spy(singleDownload.data(), SIGNAL(paused(bool)));
96
QVERIFY(spy.ensureSignalEmitted());
102
TestSingleDownload::testProcessingSignalFwd() {
103
QScopedPointer<TestableSingleDownload> singleDownload(
104
new TestableSingleDownload(_down, _man));
106
SignalBarrier spy(singleDownload.data(), SIGNAL(processing(const QString&)));
107
_down->processing(QString("TEST"));
109
QVERIFY(spy.ensureSignalEmitted());
115
TestSingleDownload::testProgressSignalFwd() {
116
QScopedPointer<TestableSingleDownload> singleDownload(
117
new TestableSingleDownload(_down, _man));
119
SignalBarrier spy(singleDownload.data(),
120
SIGNAL(progressReceived(qulonglong, qulonglong)));
121
_down->progress(30, 700);
123
QVERIFY(spy.ensureSignalEmitted());
129
TestSingleDownload::testResumedSignalFwd() {
130
QScopedPointer<TestableSingleDownload> singleDownload(
131
new TestableSingleDownload(_down, _man));
133
SignalBarrier spy(singleDownload.data(), SIGNAL(resumed(bool)));
134
_down->resumed(true);
136
QVERIFY(spy.ensureSignalEmitted());
142
TestSingleDownload::testStartedSignalFwd() {
143
QScopedPointer<TestableSingleDownload> singleDownload(
144
new TestableSingleDownload(_down, _man));
146
SignalBarrier spy(singleDownload.data(), SIGNAL(started(bool)));
147
_down->started(true);
149
QVERIFY(spy.ensureSignalEmitted());
155
TestSingleDownload::testSetAllowMobileDataNullptr() {
156
QScopedPointer<TestableSingleDownload> singleDownload(
157
new TestableSingleDownload(nullptr, _man));
159
// ensure that the mocks are not called and we do not crash
160
singleDownload->setAllowMobileDownload(true);
165
TestSingleDownload::testSetAllowMobileDataError() {
166
QScopedPointer<MockError> err(new MockError(Error::DBus));
167
QScopedPointer<TestableSingleDownload> singleDownload(
168
new TestableSingleDownload(_down, _man));
170
EXPECT_CALL(*_down, allowMobileDownload(true))
173
EXPECT_CALL(*_down, isError())
175
.WillOnce(Return(true));
177
EXPECT_CALL(*_down, error())
179
.WillOnce(Return(err.data()));
181
EXPECT_CALL(*err.data(), errorString())
183
.WillOnce(Return(QString("My error")));
185
// ensure that the diff signals are emitted
186
SignalBarrier spy(singleDownload.data(), SIGNAL(errorChanged()));
188
singleDownload->setAllowMobileDownload(true);
190
QVERIFY(spy.ensureSignalEmitted());
195
TestSingleDownload::testSetAllowMobileDataSuccess() {
196
QScopedPointer<TestableSingleDownload> singleDownload(
197
new TestableSingleDownload(_down, _man));
199
EXPECT_CALL(*_down, allowMobileDownload(true))
202
EXPECT_CALL(*_down, isError())
204
.WillOnce(Return(false));
206
// ensure that the diff signals are emitted
207
SignalBarrier spy(singleDownload.data(), SIGNAL(allowMobileDownloadChanged()));
209
singleDownload->setAllowMobileDownload(true);
211
QVERIFY(spy.ensureSignalEmitted());
216
TestSingleDownload::testSetThrottleNullptr() {
217
QScopedPointer<TestableSingleDownload> singleDownload(
218
new TestableSingleDownload(nullptr, _man));
220
singleDownload->setThrottle(3);
221
// ensure that the mocks are not called and we do not crash
226
TestSingleDownload::testSetThrottleError() {
227
QScopedPointer<MockError> err(new MockError(Error::DBus));
228
QScopedPointer<TestableSingleDownload> singleDownload(
229
new TestableSingleDownload(_down, _man));
231
EXPECT_CALL(*_down, setThrottle(9))
234
EXPECT_CALL(*_down, isError())
236
.WillOnce(Return(true));
238
EXPECT_CALL(*_down, error())
240
.WillOnce(Return(err.data()));
242
EXPECT_CALL(*err.data(), errorString())
244
.WillOnce(Return(QString("My error")));
246
// ensure that the diff signals are emitted
247
SignalBarrier spy(singleDownload.data(), SIGNAL(errorChanged()));
249
singleDownload->setThrottle(9);
251
QVERIFY(spy.ensureSignalEmitted());
256
TestSingleDownload::testSetThrottleSuccess() {
257
QScopedPointer<TestableSingleDownload> singleDownload(
258
new TestableSingleDownload(_down, _man));
260
EXPECT_CALL(*_down, setThrottle(9))
263
EXPECT_CALL(*_down, isError())
265
.WillOnce(Return(false));
267
// ensure that the diff signals are emitted
268
SignalBarrier spy(singleDownload.data(), SIGNAL(throttleChanged()));
270
singleDownload->setThrottle(9);
272
QVERIFY(spy.ensureSignalEmitted());
277
TestSingleDownload::testSetHeadersNullptr() {
278
QScopedPointer<TestableSingleDownload> singleDownload(
279
new TestableSingleDownload(nullptr, _man));
282
// ensure we do not crash
283
singleDownload->setHeaders(map);
288
TestSingleDownload::testSetHeadersError() {
289
QScopedPointer<MockError> err(new MockError(Error::DBus));
290
QScopedPointer<TestableSingleDownload> singleDownload(
291
new TestableSingleDownload(_down, _man));
295
EXPECT_CALL(*_down, setHeaders(_))
298
EXPECT_CALL(*_down, isError())
300
.WillOnce(Return(true));
302
EXPECT_CALL(*_down, error())
304
.WillOnce(Return(err.data()));
306
EXPECT_CALL(*err.data(), errorString())
308
.WillOnce(Return(QString("My error")));
310
// ensure that the diff signals are emitted
311
SignalBarrier spy(singleDownload.data(), SIGNAL(errorChanged()));
313
singleDownload->setHeaders(map);
315
QVERIFY(spy.ensureSignalEmitted());
320
TestSingleDownload::testSetHeadersSuccess() {
321
QString header1, value1, header2, value2;
322
header1 = "my-first-header";
324
header2 = "second-header";
328
map[header1] = value1;
329
map[header2] = value2;
331
QMap<QString, QString> headers;
332
headers[header1] = value1;
333
headers[header2] = value2;
335
QScopedPointer<TestableSingleDownload> singleDownload(
336
new TestableSingleDownload(_down, _man));
338
EXPECT_CALL(*_down, setHeaders(QStringMapEq(headers)))
341
EXPECT_CALL(*_down, isError())
343
.WillOnce(Return(false));
345
// ensure that the diff signals are emitted
346
SignalBarrier spy(singleDownload.data(), SIGNAL(headersChanged()));
348
singleDownload->setHeaders(map);
350
QVERIFY(spy.ensureSignalEmitted());
354
QTEST_MAIN(TestSingleDownload)
355
#include "moc_test_single_download.cpp"