48
49
QTest::addColumn<QString>( "expectedMailBox" );
49
50
QTest::addColumn< QList<int> >( "expectedMessageCounts" );
50
51
QTest::addColumn< QList<int> >( "expectedRecentCounts" );
52
QTest::addColumn< QList<qint64> >( "expectedFlagsNotifications" );
52
54
QList<QByteArray> scenario;
53
55
QString expectedMailBox;
54
56
QList<int> expectedMessageCounts;
55
57
QList<int> expectedRecentCounts;
58
QList<qint64> expectedFlagsNotifications;
58
61
scenario << FakeServer::preauth()
74
77
expectedMessageCounts << 1 << 2;
75
78
expectedRecentCounts << 0 << 1;
77
QTest::newRow( "normal" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts;
80
QTest::newRow( "normal" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts << expectedFlagsNotifications;
80
83
scenario << FakeServer::preauth()
94
97
expectedMessageCounts << -1 << -1;
95
98
expectedRecentCounts << 0 << 1;
97
QTest::newRow( "only RECENT" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts;
100
QTest::newRow( "only RECENT" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts << expectedFlagsNotifications;
100
103
scenario << FakeServer::preauth()
114
117
expectedMessageCounts << 1 << 2;
115
118
expectedRecentCounts << -1 << -1;
117
QTest::newRow( "only EXISTS" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts;
120
QTest::newRow( "only EXISTS" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts << expectedFlagsNotifications;
119
122
scenario.clear();
120
123
scenario << FakeServer::preauth()
135
138
expectedMessageCounts << 2;
136
139
expectedRecentCounts << 1;
138
QTest::newRow( "under 200ms, same notification" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts;
141
QTest::newRow( "under 200ms, same notification" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts << expectedFlagsNotifications;
140
143
scenario.clear();
141
144
scenario << FakeServer::preauth()
156
159
expectedMessageCounts << 2 << -1;
157
160
expectedRecentCounts << -1 << 1;
159
QTest::newRow( "above 200ms, two notifications" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts;
162
QTest::newRow( "above 200ms, two notifications" ) << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts << expectedFlagsNotifications;
165
scenario << FakeServer::preauth()
166
<< "C: A000001 SELECT \"INBOX/Foo\""
167
<< "S: A000001 OK SELECT done"
170
<< "S: * 1 FETCH (FLAGS ())"
172
<< "S: * 2 FETCH (FLAGS (\\Seen))"
173
<< "S: A000002 OK done idling";
175
expectedMailBox = "INBOX/Foo";
177
expectedMessageCounts.clear();
178
expectedRecentCounts.clear();
179
expectedFlagsNotifications << 1 << 2;
181
QTest::newRow("2 flags change notifications") << scenario << expectedMailBox << expectedMessageCounts << expectedRecentCounts << expectedFlagsNotifications;
162
184
void shouldReactToIdle()
165
187
QFETCH( QString, expectedMailBox );
166
188
QFETCH( QList<int>, expectedMessageCounts );
167
189
QFETCH( QList<int>, expectedRecentCounts );
190
QFETCH( QList<qint64>, expectedFlagsNotifications );
169
192
QVERIFY( expectedMessageCounts.size() == expectedRecentCounts.size() );
181
204
KIMAP::IdleJob *idle = new KIMAP::IdleJob( &session );
183
QSignalSpy spy( idle, SIGNAL(mailBoxStats(KIMAP::IdleJob*,QString,int,int)) );
206
QSignalSpy statsSpy( idle, SIGNAL(mailBoxStats(KIMAP::IdleJob*,QString,int,int)) );
207
QSignalSpy flagsSpy( idle, SIGNAL(mailBoxMessageFlagsChanged(KIMAP::IdleJob*,qint64)) );
185
209
bool result = idle->exec();
188
QCOMPARE( spy.count(), expectedMessageCounts.size() );
212
QCOMPARE( statsSpy.count(), expectedMessageCounts.size() );
213
QCOMPARE( flagsSpy.count(), expectedFlagsNotifications.size() );
190
for ( int i=0; i<spy.count(); i++ ) {
191
const KIMAP::IdleJob *job = spy.at( i ).at( 0 ).value<KIMAP::IdleJob*>();
192
const QString mailBox = spy.at( i ).at( 1 ).toString();
193
const int messageCount = spy.at( i ).at( 2 ).toInt();
194
const int recentCount = spy.at( i ).at( 3 ).toInt();
215
for ( int i = 0 ; i < statsSpy.count(); i++ ) {
216
const KIMAP::IdleJob *job = statsSpy.at( i ).at( 0 ).value<KIMAP::IdleJob*>();
217
const QString mailBox = statsSpy.at( i ).at( 1 ).toString();
218
const int messageCount = statsSpy.at( i ).at( 2 ).toInt();
219
const int recentCount = statsSpy.at( i ).at( 3 ).toInt();
196
221
QCOMPARE( job, idle );
197
222
QCOMPARE( mailBox, expectedMailBox );
198
223
QCOMPARE( messageCount, expectedMessageCounts.at( i ) );
199
224
QCOMPARE( recentCount, expectedRecentCounts.at( i ) );
227
for ( int i = 0; i < flagsSpy.count(); i++ ) {
228
const KIMAP::IdleJob *job = flagsSpy.at( i ).at( 0 ).value<KIMAP::IdleJob*>();
229
const qint64 uid = flagsSpy.at( i ).at( 1 ).toLongLong();
231
QCOMPARE( job, idle );
232
QCOMPARE( uid, expectedFlagsNotifications.at( i ) );
203
236
fakeServer.quit();