summaryrefslogtreecommitdiffstats
path: root/tests/tst_qmailstore/tst_qmailstore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tst_qmailstore/tst_qmailstore.cpp')
-rw-r--r--tests/tst_qmailstore/tst_qmailstore.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/tst_qmailstore/tst_qmailstore.cpp b/tests/tst_qmailstore/tst_qmailstore.cpp
index d44fc565..363a34e2 100644
--- a/tests/tst_qmailstore/tst_qmailstore.cpp
+++ b/tests/tst_qmailstore/tst_qmailstore.cpp
@@ -852,6 +852,88 @@ void tst_QMailStore::updateFolder()
QCOMPARE(folder6.customFields(), folder5.customFields());
QCOMPARE(folder6.customField("answer"), QString("Fido"));
QVERIFY(folder6.customField("temporary").isNull());
+
+ // -------- Test QMailFolder::setParentId --------------
+ // Step 1: Setup the following hierarchy
+ // f0->f1->f2->f3->f4
+ // f5->f6
+ QMailFolder f0 = QMailFolder("f0", QMailFolderId());
+ QVERIFY(QMailStore::instance()->addFolder(&f0));
+ QCOMPARE(QMailStore::instance()->lastError(), QMailStore::NoError);
+
+ QMailFolder f1 = QMailFolder("f1", f0.id());
+ QVERIFY(QMailStore::instance()->addFolder(&f1));
+ QCOMPARE(QMailStore::instance()->lastError(), QMailStore::NoError);
+
+ QMailFolder f2 = QMailFolder("f2", f1.id());
+ QVERIFY(QMailStore::instance()->addFolder(&f2));
+ QCOMPARE(QMailStore::instance()->lastError(), QMailStore::NoError);
+
+ QMailFolder f3 = QMailFolder("f3", f2.id());
+ QVERIFY(QMailStore::instance()->addFolder(&f3));
+ QCOMPARE(QMailStore::instance()->lastError(), QMailStore::NoError);
+
+ QMailFolder f4 = QMailFolder("f4", f3.id());
+ QVERIFY(QMailStore::instance()->addFolder(&f4));
+ QCOMPARE(QMailStore::instance()->lastError(), QMailStore::NoError);
+
+ QMailFolder f5 = QMailFolder("f5", QMailFolderId());
+ QVERIFY(QMailStore::instance()->addFolder(&f5));
+ QCOMPARE(QMailStore::instance()->lastError(), QMailStore::NoError);
+
+ QMailFolder f6 = QMailFolder("f6", f5.id());
+ QVERIFY(QMailStore::instance()->addFolder(&f6));
+ QCOMPARE(QMailStore::instance()->lastError(), QMailStore::NoError);
+
+ //Step 2: Move f2 to f6. New folder hierarchy shall be the following
+ // f0->f1
+ // f5->f6->f2->f3->f4
+ f2.setParentFolderId(f6.id());
+ QMailStore::instance()->updateFolder(&f2);
+
+ //Verify ancestors->descendants connections
+ QMailFolderKey key;
+ QMailFolderIdList folderIds;
+
+ key = QMailFolderKey::ancestorFolderIds(f5.id(), QMailDataComparator::Includes);
+ folderIds = QMailStore::instance()->queryFolders(key);
+ QCOMPARE(folderIds.count(), 4);
+ QVERIFY(folderIds.contains(f6.id()) &&
+ folderIds.contains(f2.id()) &&
+ folderIds.contains(f3.id()) &&
+ folderIds.contains(f4.id()));
+
+ key = QMailFolderKey::ancestorFolderIds(f6.id(), QMailDataComparator::Includes);
+ folderIds = QMailStore::instance()->queryFolders(key);
+ QCOMPARE(folderIds.count(), 3);
+ QVERIFY(folderIds.contains(f2.id()) &&
+ folderIds.contains(f3.id()) &&
+ folderIds.contains(f4.id()));
+
+ key = QMailFolderKey::ancestorFolderIds(f2.id(), QMailDataComparator::Includes);
+ folderIds = QMailStore::instance()->queryFolders(key);
+ QCOMPARE(folderIds.count(), 2);
+ QVERIFY(folderIds.contains(f3.id()) &&
+ folderIds.contains(f4.id()));
+
+ key = QMailFolderKey::ancestorFolderIds(f3.id(), QMailDataComparator::Includes);
+ folderIds = QMailStore::instance()->queryFolders(key);
+ QCOMPARE(folderIds.count(), 1);
+ QVERIFY(folderIds.contains(f4.id()));
+
+ key = QMailFolderKey::ancestorFolderIds(f4.id(), QMailDataComparator::Includes);
+ folderIds = QMailStore::instance()->queryFolders(key);
+ QCOMPARE(folderIds.count(), 0);
+
+ key = QMailFolderKey::ancestorFolderIds(f0.id(), QMailDataComparator::Includes);
+ folderIds = QMailStore::instance()->queryFolders(key);
+ QCOMPARE(folderIds.count(), 1);
+ QVERIFY(folderIds.contains(f1.id()));
+
+ key = QMailFolderKey::ancestorFolderIds(f1.id(), QMailDataComparator::Includes);
+ folderIds = QMailStore::instance()->queryFolders(key);
+ QCOMPARE(folderIds.count(), 0);
+ // -------- End Test QMailFolder::setParentId --------------
}
void tst_QMailStore::updateMessage()