~ps-jenkins/ubuntu-download-manager/ubuntu-rtm-14.09-proposed

« back to all changes in this revision

Viewing changes to tests/downloads/qml/test_single_download.cpp

  • Committer: CI bot
  • Author(s): Manuel de la Peña
  • Date: 2014-07-07 08:57:46 UTC
  • mfrom: (299.3.18 add-qml-tests)
  • Revision ID: ps-jenkins@lists.canonical.com-20140707085746-4v51ja48v48e6j8t
Add missing tests for the qml code. 
Approved by: PS Jenkins bot, Manuel de la Peña

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 * Boston, MA 02110-1301, USA.
17
17
 */
18
18
 
 
19
#include <QScopedPointer>
 
20
 
 
21
#include <gmock/gmock.h>
 
22
 
 
23
#include <matchers.h>
 
24
#include "error.h"
 
25
#include "test_single_download.h"
 
26
 
 
27
using ::testing::_;
 
28
using ::testing::Mock;
 
29
using ::testing::Return;
 
30
 
19
31
TestSingleDownload::TestSingleDownload(QObject *parent)
20
 
    : LocalTreeTestCase("TestSingleDownload", parent) {
 
32
    : BaseTestCase("TestSingleDownload", parent) {
21
33
}
22
34
 
23
35
void
24
36
TestSingleDownload::init() {
25
 
    LocalTreeTestCase::init();
 
37
    BaseTestCase::init();
 
38
 
 
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";
 
44
 
 
45
    _down = new MockDownload();
 
46
    _man = new MockManager();
26
47
}
27
48
 
28
49
void
29
50
TestSingleDownload::cleanup() {
30
 
    LocalTreeTestCase::cleanup();
31
 
}
 
51
    BaseTestCase::cleanup();
 
52
    delete _down;
 
53
    delete _man;
 
54
}
 
55
 
 
56
void
 
57
TestSingleDownload::verifyMocks() {
 
58
    QVERIFY(Mock::VerifyAndClearExpectations(_down));
 
59
    QVERIFY(Mock::VerifyAndClearExpectations(_man));
 
60
}
 
61
 
 
62
void
 
63
TestSingleDownload::testCanceledSignalFwd() {
 
64
    QScopedPointer<TestableSingleDownload> singleDownload(
 
65
        new TestableSingleDownload(_down, _man));
 
66
 
 
67
    SignalBarrier spy(singleDownload.data(), SIGNAL(canceled(bool)));
 
68
    _down->canceled(true);
 
69
 
 
70
    QVERIFY(spy.ensureSignalEmitted());
 
71
 
 
72
    verifyMocks();
 
73
}
 
74
 
 
75
void
 
76
TestSingleDownload::testFinishedSingalFwd() {
 
77
    QScopedPointer<TestableSingleDownload> singleDownload(
 
78
        new TestableSingleDownload(_down, _man));
 
79
 
 
80
    SignalBarrier spy(singleDownload.data(), SIGNAL(finished(const QString&)));
 
81
    _down->finished(QString("TEST"));
 
82
 
 
83
    QVERIFY(spy.ensureSignalEmitted());
 
84
 
 
85
    verifyMocks();
 
86
}
 
87
 
 
88
void
 
89
TestSingleDownload::testPausedSignalFwd() {
 
90
    QScopedPointer<TestableSingleDownload> singleDownload(
 
91
        new TestableSingleDownload(_down, _man));
 
92
 
 
93
    SignalBarrier spy(singleDownload.data(), SIGNAL(paused(bool)));
 
94
    _down->paused(true);
 
95
 
 
96
    QVERIFY(spy.ensureSignalEmitted());
 
97
 
 
98
    verifyMocks();
 
99
}
 
100
 
 
101
void
 
102
TestSingleDownload::testProcessingSignalFwd() {
 
103
    QScopedPointer<TestableSingleDownload> singleDownload(
 
104
        new TestableSingleDownload(_down, _man));
 
105
 
 
106
    SignalBarrier spy(singleDownload.data(), SIGNAL(processing(const QString&)));
 
107
    _down->processing(QString("TEST"));
 
108
 
 
109
    QVERIFY(spy.ensureSignalEmitted());
 
110
 
 
111
    verifyMocks();
 
112
}
 
113
 
 
114
void
 
115
TestSingleDownload::testProgressSignalFwd() {
 
116
    QScopedPointer<TestableSingleDownload> singleDownload(
 
117
        new TestableSingleDownload(_down, _man));
 
118
 
 
119
    SignalBarrier spy(singleDownload.data(),
 
120
        SIGNAL(progressReceived(qulonglong, qulonglong)));
 
121
    _down->progress(30, 700);
 
122
 
 
123
    QVERIFY(spy.ensureSignalEmitted());
 
124
 
 
125
    verifyMocks();
 
126
}
 
127
 
 
128
void
 
129
TestSingleDownload::testResumedSignalFwd() {
 
130
    QScopedPointer<TestableSingleDownload> singleDownload(
 
131
        new TestableSingleDownload(_down, _man));
 
132
 
 
133
    SignalBarrier spy(singleDownload.data(), SIGNAL(resumed(bool)));
 
134
    _down->resumed(true);
 
135
 
 
136
    QVERIFY(spy.ensureSignalEmitted());
 
137
 
 
138
    verifyMocks();
 
139
}
 
140
 
 
141
void
 
142
TestSingleDownload::testStartedSignalFwd() {
 
143
    QScopedPointer<TestableSingleDownload> singleDownload(
 
144
        new TestableSingleDownload(_down, _man));
 
145
 
 
146
    SignalBarrier spy(singleDownload.data(), SIGNAL(started(bool)));
 
147
    _down->started(true);
 
148
 
 
149
    QVERIFY(spy.ensureSignalEmitted());
 
150
 
 
151
    verifyMocks();
 
152
}
 
153
 
 
154
void
 
155
TestSingleDownload::testSetAllowMobileDataNullptr() {
 
156
    QScopedPointer<TestableSingleDownload> singleDownload(
 
157
        new TestableSingleDownload(nullptr, _man));
 
158
 
 
159
    // ensure that the mocks are not called and we do not crash
 
160
    singleDownload->setAllowMobileDownload(true);
 
161
    verifyMocks();
 
162
}
 
163
 
 
164
void
 
165
TestSingleDownload::testSetAllowMobileDataError() {
 
166
    QScopedPointer<MockError> err(new MockError(Error::DBus));
 
167
    QScopedPointer<TestableSingleDownload> singleDownload(
 
168
        new TestableSingleDownload(_down, _man));
 
169
 
 
170
    EXPECT_CALL(*_down, allowMobileDownload(true))
 
171
        .Times(1);
 
172
 
 
173
    EXPECT_CALL(*_down, isError())
 
174
        .Times(1)
 
175
        .WillOnce(Return(true));
 
176
 
 
177
    EXPECT_CALL(*_down, error())
 
178
        .Times(1)
 
179
        .WillOnce(Return(err.data()));
 
180
 
 
181
    EXPECT_CALL(*err.data(), errorString())
 
182
        .Times(1)
 
183
        .WillOnce(Return(QString("My error")));
 
184
 
 
185
    // ensure that the diff signals are emitted
 
186
    SignalBarrier spy(singleDownload.data(), SIGNAL(errorChanged()));
 
187
 
 
188
    singleDownload->setAllowMobileDownload(true);
 
189
 
 
190
    QVERIFY(spy.ensureSignalEmitted());
 
191
    verifyMocks();
 
192
}
 
193
 
 
194
void
 
195
TestSingleDownload::testSetAllowMobileDataSuccess() {
 
196
    QScopedPointer<TestableSingleDownload> singleDownload(
 
197
        new TestableSingleDownload(_down, _man));
 
198
 
 
199
    EXPECT_CALL(*_down, allowMobileDownload(true))
 
200
        .Times(1);
 
201
 
 
202
    EXPECT_CALL(*_down, isError())
 
203
        .Times(1)
 
204
        .WillOnce(Return(false));
 
205
 
 
206
    // ensure that the diff signals are emitted
 
207
    SignalBarrier spy(singleDownload.data(), SIGNAL(allowMobileDownloadChanged()));
 
208
 
 
209
    singleDownload->setAllowMobileDownload(true);
 
210
 
 
211
    QVERIFY(spy.ensureSignalEmitted());
 
212
    verifyMocks();
 
213
}
 
214
 
 
215
void
 
216
TestSingleDownload::testSetThrottleNullptr() {
 
217
    QScopedPointer<TestableSingleDownload> singleDownload(
 
218
        new TestableSingleDownload(nullptr, _man));
 
219
 
 
220
    singleDownload->setThrottle(3);
 
221
    // ensure that the mocks are not called and we do not crash
 
222
    verifyMocks();
 
223
}
 
224
 
 
225
void
 
226
TestSingleDownload::testSetThrottleError() {
 
227
    QScopedPointer<MockError> err(new MockError(Error::DBus));
 
228
    QScopedPointer<TestableSingleDownload> singleDownload(
 
229
        new TestableSingleDownload(_down, _man));
 
230
 
 
231
    EXPECT_CALL(*_down, setThrottle(9))
 
232
        .Times(1);
 
233
 
 
234
    EXPECT_CALL(*_down, isError())
 
235
        .Times(1)
 
236
        .WillOnce(Return(true));
 
237
 
 
238
    EXPECT_CALL(*_down, error())
 
239
        .Times(1)
 
240
        .WillOnce(Return(err.data()));
 
241
 
 
242
    EXPECT_CALL(*err.data(), errorString())
 
243
        .Times(1)
 
244
        .WillOnce(Return(QString("My error")));
 
245
 
 
246
    // ensure that the diff signals are emitted
 
247
    SignalBarrier spy(singleDownload.data(), SIGNAL(errorChanged()));
 
248
 
 
249
    singleDownload->setThrottle(9);
 
250
 
 
251
    QVERIFY(spy.ensureSignalEmitted());
 
252
    verifyMocks();
 
253
}
 
254
 
 
255
void
 
256
TestSingleDownload::testSetThrottleSuccess() {
 
257
    QScopedPointer<TestableSingleDownload> singleDownload(
 
258
        new TestableSingleDownload(_down, _man));
 
259
 
 
260
    EXPECT_CALL(*_down, setThrottle(9))
 
261
        .Times(1);
 
262
 
 
263
    EXPECT_CALL(*_down, isError())
 
264
        .Times(1)
 
265
        .WillOnce(Return(false));
 
266
 
 
267
    // ensure that the diff signals are emitted
 
268
    SignalBarrier spy(singleDownload.data(), SIGNAL(throttleChanged()));
 
269
 
 
270
    singleDownload->setThrottle(9);
 
271
 
 
272
    QVERIFY(spy.ensureSignalEmitted());
 
273
    verifyMocks();
 
274
}
 
275
 
 
276
void
 
277
TestSingleDownload::testSetHeadersNullptr() {
 
278
    QScopedPointer<TestableSingleDownload> singleDownload(
 
279
        new TestableSingleDownload(nullptr, _man));
 
280
    QVariantMap map;
 
281
 
 
282
    // ensure we do not crash
 
283
    singleDownload->setHeaders(map);
 
284
    verifyMocks();
 
285
}
 
286
 
 
287
void
 
288
TestSingleDownload::testSetHeadersError() {
 
289
    QScopedPointer<MockError> err(new MockError(Error::DBus));
 
290
    QScopedPointer<TestableSingleDownload> singleDownload(
 
291
        new TestableSingleDownload(_down, _man));
 
292
 
 
293
    QVariantMap map;
 
294
 
 
295
    EXPECT_CALL(*_down, setHeaders(_))
 
296
        .Times(1);
 
297
 
 
298
    EXPECT_CALL(*_down, isError())
 
299
        .Times(1)
 
300
        .WillOnce(Return(true));
 
301
 
 
302
    EXPECT_CALL(*_down, error())
 
303
        .Times(1)
 
304
        .WillOnce(Return(err.data()));
 
305
 
 
306
    EXPECT_CALL(*err.data(), errorString())
 
307
        .Times(1)
 
308
        .WillOnce(Return(QString("My error")));
 
309
 
 
310
    // ensure that the diff signals are emitted
 
311
    SignalBarrier spy(singleDownload.data(), SIGNAL(errorChanged()));
 
312
 
 
313
    singleDownload->setHeaders(map);
 
314
 
 
315
    QVERIFY(spy.ensureSignalEmitted());
 
316
    verifyMocks();
 
317
}
 
318
 
 
319
void
 
320
TestSingleDownload::testSetHeadersSuccess() {
 
321
    QString header1, value1, header2, value2;
 
322
    header1 = "my-first-header";
 
323
    value1 = "first";
 
324
    header2 = "second-header";
 
325
    value2 = "second";
 
326
 
 
327
    QVariantMap map;
 
328
    map[header1] = value1;
 
329
    map[header2] = value2;
 
330
 
 
331
    QMap<QString, QString> headers;
 
332
    headers[header1] = value1;
 
333
    headers[header2] = value2;
 
334
 
 
335
    QScopedPointer<TestableSingleDownload> singleDownload(
 
336
        new TestableSingleDownload(_down, _man));
 
337
 
 
338
    EXPECT_CALL(*_down, setHeaders(QStringMapEq(headers)))
 
339
        .Times(1);
 
340
 
 
341
    EXPECT_CALL(*_down, isError())
 
342
        .Times(1)
 
343
        .WillOnce(Return(false));
 
344
 
 
345
    // ensure that the diff signals are emitted
 
346
    SignalBarrier spy(singleDownload.data(), SIGNAL(headersChanged()));
 
347
 
 
348
    singleDownload->setHeaders(map);
 
349
 
 
350
    QVERIFY(spy.ensureSignalEmitted());
 
351
    verifyMocks();
 
352
}
 
353
 
 
354
QTEST_MAIN(TestSingleDownload)
 
355
#include "moc_test_single_download.cpp"