summaryrefslogtreecommitdiffstats
path: root/examples/caldavresource/tests/caldavtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/caldavresource/tests/caldavtest.cpp')
-rw-r--r--examples/caldavresource/tests/caldavtest.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/examples/caldavresource/tests/caldavtest.cpp b/examples/caldavresource/tests/caldavtest.cpp
new file mode 100644
index 0000000..f999590
--- /dev/null
+++ b/examples/caldavresource/tests/caldavtest.cpp
@@ -0,0 +1,93 @@
1#include <QtTest>
2
3#include "../caldavresource.h"
4
5#include "common/resourcecontrol.h"
6#include "common/secretstore.h"
7#include "common/store.h"
8#include "common/test.h"
9#include "tests/testutils.h"
10
11using Sink::ApplicationDomain::Calendar;
12using Sink::ApplicationDomain::DummyResource;
13using Sink::ApplicationDomain::Event;
14using Sink::ApplicationDomain::SinkResource;
15
16class CalDavTest : public QObject
17{
18 Q_OBJECT
19
20 SinkResource createResource()
21 {
22 auto resource = Sink::ApplicationDomain::CalDavResource::create("account1");
23 resource.setProperty("server", "http://localhost/dav/calendars/users/doe");
24 resource.setProperty("username", "doe");
25 Sink::SecretStore::instance().insert(resource.identifier(), "doe");
26 resource.setProperty("testmode", true);
27 return resource;
28 }
29
30
31 QByteArray mResourceInstanceIdentifier;
32 QByteArray mStorageResource;
33
34private slots:
35
36 void initTestCase()
37 {
38 Sink::Test::initTest();
39 auto resource = createResource();
40 QVERIFY(!resource.identifier().isEmpty());
41 VERIFYEXEC(Sink::Store::create(resource));
42 mResourceInstanceIdentifier = resource.identifier();
43
44 auto dummyResource = DummyResource::create("account1");
45 VERIFYEXEC(Sink::Store::create(dummyResource));
46 mStorageResource = dummyResource.identifier();
47 QVERIFY(!mStorageResource.isEmpty());
48 }
49
50 void cleanup()
51 {
52 VERIFYEXEC(Sink::Store::removeDataFromDisk(mResourceInstanceIdentifier));
53 VERIFYEXEC(Sink::Store::removeDataFromDisk(mStorageResource));
54 }
55
56 void init()
57 {
58 VERIFYEXEC(Sink::ResourceControl::start(mResourceInstanceIdentifier));
59 }
60
61 void testSyncCal()
62 {
63 VERIFYEXEC(Sink::Store::synchronize(Sink::Query().resourceFilter(mResourceInstanceIdentifier)));
64 // Check in the logs that it doesn't synchronize events again because same CTag
65 VERIFYEXEC(Sink::Store::synchronize(Sink::Query().resourceFilter(mResourceInstanceIdentifier)));
66 }
67
68 void testSyncCalEmpty()
69 {
70 VERIFYEXEC(Sink::Store::synchronize(Sink::Query().resourceFilter(mResourceInstanceIdentifier)));
71
72 auto eventJob =
73 Sink::Store::fetchAll<Event>(Sink::Query().request<Event::Uid>()).then([](const QList<Event::Ptr> &events) {
74 QCOMPARE(events.size(), 14);
75 });
76 VERIFYEXEC(eventJob);
77
78 auto calendarJob =
79 Sink::Store::fetchAll<Calendar>(Sink::Query().request<Calendar::Name>()).then([](const QList<Calendar::Ptr> &calendars) {
80 QCOMPARE(calendars.size(), 2);
81 for (const auto &calendar : calendars) {
82 QVERIFY(calendar->getName() == "Calendar" || calendar->getName() == "Tasks");
83 }
84 });
85 VERIFYEXEC(calendarJob);
86
87 SinkLog() << "Finished";
88 }
89};
90
91QTEST_MAIN(CalDavTest)
92
93#include "caldavtest.moc"