summaryrefslogtreecommitdiffstats
path: root/tests/querytest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/querytest.cpp')
-rw-r--r--tests/querytest.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index afa8e33..6011a99 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -492,6 +492,42 @@ private slots:
492 QCOMPARE(folders.size(), 1); 492 QCOMPARE(folders.size(), 1);
493 } 493 }
494 494
495 void testSubquery()
496 {
497 // Setup
498 auto folder1 = Folder::createEntity<Folder>("sink.dummy.instance1");
499 folder1.setSpecialPurpose(QByteArrayList() << "purpose1");
500 VERIFYEXEC(Sink::Store::create<Folder>(folder1));
501
502 auto folder2 = Folder::createEntity<Folder>("sink.dummy.instance1");
503 folder2.setSpecialPurpose(QByteArrayList() << "purpose2");
504 VERIFYEXEC(Sink::Store::create<Folder>(folder2));
505
506 {
507 auto mail = Mail::createEntity<Mail>("sink.dummy.instance1");
508 mail.setUid("mail1");
509 mail.setFolder(folder1);
510 VERIFYEXEC(Sink::Store::create(mail));
511 }
512 {
513 auto mail = Mail::createEntity<Mail>("sink.dummy.instance1");
514 mail.setUid("mail2");
515 mail.setFolder(folder2);
516 VERIFYEXEC(Sink::Store::create(mail));
517 }
518
519 // Ensure all local data is processed
520 Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "sink.dummy.instance1").exec().waitForFinished();
521
522 //Setup two folders with a mail each, ensure we only get the mail from the folder that matches the folder filter.
523 Query query;
524 query.filter<Mail::Folder>(Sink::Query().containsFilter<Folder::SpecialPurpose>("purpose1"));
525 query.request<Mail::Uid>();
526
527 auto mails = Sink::Store::read<Mail>(query);
528 QCOMPARE(mails.size(), 1);
529 QCOMPARE(mails.first().getUid().toLatin1(), QByteArray("mail1"));
530 }
495}; 531};
496 532
497QTEST_MAIN(QueryTest) 533QTEST_MAIN(QueryTest)