From 88a0c750a80e6efb207877cac73144266e62d5ff Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 7 Mar 2017 00:01:54 +0100 Subject: Move blob files on move to the same location like when a client moves. Otherwise if the source resource manages to clean up the revision before the target resource gets to process the new entity, then the blob file is gone already. --- tests/interresourcemovetest.cpp | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) (limited to 'tests') diff --git a/tests/interresourcemovetest.cpp b/tests/interresourcemovetest.cpp index 7561c5b..3ac6ad4 100644 --- a/tests/interresourcemovetest.cpp +++ b/tests/interresourcemovetest.cpp @@ -28,6 +28,7 @@ #include "log.h" #include "test.h" #include "testutils.h" +#include using namespace Sink; using namespace Sink::ApplicationDomain; @@ -41,6 +42,15 @@ class InterResourceMoveTest : public QObject { Q_OBJECT + QByteArray message(const QByteArray &uid, const QString &subject) + { + KMime::Message m; + m.subject(true)->fromUnicodeString(subject, "utf8"); + m.messageID(true)->setIdentifier(uid); + m.assemble(); + return m.encodedContent(); + } + private slots: void initTestCase() { @@ -65,24 +75,25 @@ private slots: void testMove() { - Event event("instance1"); - event.setProperty("uid", "testuid"); - QCOMPARE(event.getProperty("uid").toByteArray(), QByteArray("testuid")); - event.setProperty("summary", "summaryValue"); - VERIFYEXEC(Sink::Store::create(event)); + QByteArray testuid = "testuid@test.test"; + QString subject = "summaryValue"; + auto mimeMessage = message(testuid, subject); + Mail mail("instance1"); + mail.setMimeMessage(mimeMessage); + VERIFYEXEC(Sink::Store::create(mail)); - Event createdEvent; + Mail createdmail; // Ensure all local data is processed VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "instance1")); { auto query = Query().resourceFilter("instance1") ; - auto list = Sink::Store::read(query.filter("testuid")); + auto list = Sink::Store::read(query.filter(testuid)); QCOMPARE(list.size(), 1); - createdEvent = list.first(); + createdmail = list.first(); } - VERIFYEXEC(Sink::Store::move(createdEvent, "instance2")); + VERIFYEXEC(Sink::Store::move(createdmail, "instance2")); //FIXME we can't guarantee that that the create command arrives at instance2 before the flush command, so we'll just wait for a little bit. QTest::qWait(1000); @@ -92,14 +103,18 @@ private slots: VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "instance2")); { auto query = Query().resourceFilter("instance2") ; - auto list = Sink::Store::read(query.filter("testuid")); + auto list = Sink::Store::read(query.filter(testuid)); QCOMPARE(list.size(), 1); + const auto mail = list.first(); + QVERIFY(!mail.getMimeMessagePath().isEmpty()); + QCOMPARE(mail.getSubject(), subject); + QCOMPARE(mail.getMimeMessage(), mimeMessage); } VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "instance1")); { auto query = Query().resourceFilter("instance1") ; - auto list = Sink::Store::read(query.filter("testuid")); + auto list = Sink::Store::read(query.filter(testuid)); QCOMPARE(list.size(), 0); } } -- cgit v1.2.3