From 3e443520eaa3559c9f74134007f407b569f22443 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 24 May 2016 11:10:07 +0200 Subject: Adapt mailtest for the maildirresource --- examples/maildirresource/CMakeLists.txt | 1 + examples/maildirresource/tests/CMakeLists.txt | 11 ++++++ examples/maildirresource/tests/maildirmailtest.cpp | 45 ++++++++++++++++++++++ tests/mailtest.cpp | 30 ++++++++++++--- 4 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 examples/maildirresource/tests/CMakeLists.txt create mode 100644 examples/maildirresource/tests/maildirmailtest.cpp diff --git a/examples/maildirresource/CMakeLists.txt b/examples/maildirresource/CMakeLists.txt index efaa266..e5bfdb6 100644 --- a/examples/maildirresource/CMakeLists.txt +++ b/examples/maildirresource/CMakeLists.txt @@ -13,3 +13,4 @@ target_link_libraries(${PROJECT_NAME} sink maildir KF5::Mime) install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${SINK_RESOURCE_PLUGINS_PATH}) add_subdirectory(libmaildir) +add_subdirectory(tests) diff --git a/examples/maildirresource/tests/CMakeLists.txt b/examples/maildirresource/tests/CMakeLists.txt new file mode 100644 index 0000000..ffe9286 --- /dev/null +++ b/examples/maildirresource/tests/CMakeLists.txt @@ -0,0 +1,11 @@ +set(CMAKE_AUTOMOC ON) +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} +) + +include(SinkTest) + +auto_tests ( + maildirmailtest +) +target_link_libraries(maildirmailtest sink_resource_maildir) diff --git a/examples/maildirresource/tests/maildirmailtest.cpp b/examples/maildirresource/tests/maildirmailtest.cpp new file mode 100644 index 0000000..caaf552 --- /dev/null +++ b/examples/maildirresource/tests/maildirmailtest.cpp @@ -0,0 +1,45 @@ +#include + +#include +#include "../maildirresource.h" + +#include "common/test.h" +#include "common/domain/applicationdomaintype.h" + +using namespace Sink; +using namespace Sink::ApplicationDomain; + +/** + * Test of complete system using the maildir resource. + * + * This test requires the maildir resource installed. + */ +class MaildirMailTest : public Sink::MailTest +{ + Q_OBJECT + + QTemporaryDir tempDir; + QString targetPath; + +protected: + void resetTestEnvironment() Q_DECL_OVERRIDE + { + targetPath = tempDir.path() + "/maildir1/"; + } + + Sink::ApplicationDomain::SinkResource createResource() Q_DECL_OVERRIDE + { + auto resource = ApplicationDomain::MaildirResource::create("account1"); + resource.setProperty("path", targetPath); + return resource; + } + + void removeResourceFromDisk(const QByteArray &identifier) Q_DECL_OVERRIDE + { + ::MaildirResource::removeFromDisk(identifier); + } +}; + +QTEST_MAIN(MaildirMailTest) + +#include "maildirmailtest.moc" diff --git a/tests/mailtest.cpp b/tests/mailtest.cpp index 79a077c..c3b33bc 100644 --- a/tests/mailtest.cpp +++ b/tests/mailtest.cpp @@ -60,6 +60,16 @@ void MailTest::init() void MailTest::testCreateModifyDeleteFolder() { + int baseCount = 0; + //First figure out how many folders we have by default + { + auto job = Store::fetchAll(Query()) + .then>([&](const QList &folders) { + baseCount = folders.size(); + }); + VERIFYEXEC(job); + } + QString name = "name"; QByteArray icon = "icon"; @@ -72,8 +82,13 @@ void MailTest::testCreateModifyDeleteFolder() { auto job = Store::fetchAll(Query::RequestedProperties(QByteArrayList() << Folder::Name::name << Folder::Icon::name)) .then>([=](const QList &folders) { - QCOMPARE(folders.size(), 1); - auto folder = *folders.first(); + QCOMPARE(folders.size(), baseCount + 1); + QHash foldersByName; + for (const auto &folder : folders) { + foldersByName.insert(folder->getName(), folder); + } + QVERIFY(foldersByName.contains(name)); + auto folder = *foldersByName.value(name); QCOMPARE(folder.getName(), name); QCOMPARE(folder.getIcon(), icon); }); @@ -90,8 +105,13 @@ void MailTest::testCreateModifyDeleteFolder() { auto job = Store::fetchAll(Query::RequestedProperties(QByteArrayList() << Folder::Name::name << Folder::Icon::name)) .then>([=](const QList &folders) { - QCOMPARE(folders.size(), 1); - auto folder = *folders.first(); + QCOMPARE(folders.size(), baseCount + 1); + QHash foldersByName; + for (const auto &folder : folders) { + foldersByName.insert(folder->getName(), folder); + } + QVERIFY(foldersByName.contains(name2)); + auto folder = *foldersByName.value(name2); QCOMPARE(folder.getName(), name2); QCOMPARE(folder.getIcon(), icon2); }); @@ -103,7 +123,7 @@ void MailTest::testCreateModifyDeleteFolder() { auto job = Store::fetchAll(Query::RequestedProperties(QByteArrayList() << Folder::Name::name << Folder::Icon::name)) .then>([=](const QList &folders) { - QCOMPARE(folders.size(), 0); + QCOMPARE(folders.size(), baseCount); }); VERIFYEXEC(job); } -- cgit v1.2.3