summaryrefslogtreecommitdiffstats
path: root/tests/genericresourcetest.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-07-24 12:51:58 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-07-27 23:22:10 +0200
commit4430eabdfeddf02c20424508a2a4207b6b4a764e (patch)
treee0eea7a4ba9e109fbc8e2baa774c3397e888757d /tests/genericresourcetest.cpp
parent71aace61b7b1c27ac9296a882b209fe966be5848 (diff)
downloadsink-4430eabdfeddf02c20424508a2a4207b6b4a764e.tar.gz
sink-4430eabdfeddf02c20424508a2a4207b6b4a764e.zip
Test generic stuff separately from the dummyresource
Diffstat (limited to 'tests/genericresourcetest.cpp')
-rw-r--r--tests/genericresourcetest.cpp107
1 files changed, 107 insertions, 0 deletions
diff --git a/tests/genericresourcetest.cpp b/tests/genericresourcetest.cpp
new file mode 100644
index 0000000..57fa458
--- /dev/null
+++ b/tests/genericresourcetest.cpp
@@ -0,0 +1,107 @@
1#include <QtTest>
2
3#include <QString>
4
5#include "event_generated.h"
6#include "entity_generated.h"
7#include "metadata_generated.h"
8#include "createentity_generated.h"
9#include "commands.h"
10#include "entitybuffer.h"
11#include "pipeline.h"
12#include "genericresource.h"
13
14class TestResource : public Akonadi2::GenericResource
15{
16public:
17 TestResource(const QByteArray &instanceIdentifier)
18 : Akonadi2::GenericResource(instanceIdentifier)
19 {
20 }
21
22 KAsync::Job<void> synchronizeWithSource(Akonadi2::Pipeline *pipeline) Q_DECL_OVERRIDE
23 {
24 return KAsync::null<void>();
25 }
26
27 void configurePipeline(Akonadi2::Pipeline *pipeline) Q_DECL_OVERRIDE
28 {
29 GenericResource::configurePipeline(pipeline);
30 }
31};
32
33
34static void removeFromDisk(const QString &name)
35{
36 Akonadi2::Storage store(Akonadi2::Store::storageLocation(), name, Akonadi2::Storage::ReadWrite);
37 store.removeFromDisk();
38}
39
40class GenericResourceTest : public QObject
41{
42 Q_OBJECT
43private Q_SLOTS:
44
45 void init()
46 {
47 qDebug();
48 qDebug() << "-----------------------------------------";
49 qDebug();
50 }
51
52 void testProcessCommand()
53 {
54 flatbuffers::FlatBufferBuilder eventFbb;
55 eventFbb.Clear();
56 {
57 auto summary = eventFbb.CreateString("summary");
58 Akonadi2::ApplicationDomain::Buffer::EventBuilder eventBuilder(eventFbb);
59 eventBuilder.add_summary(summary);
60 auto eventLocation = eventBuilder.Finish();
61 Akonadi2::ApplicationDomain::Buffer::FinishEventBuffer(eventFbb, eventLocation);
62 }
63
64 flatbuffers::FlatBufferBuilder localFbb;
65 {
66 auto uid = localFbb.CreateString("testuid");
67 auto localBuilder = Akonadi2::ApplicationDomain::Buffer::EventBuilder(localFbb);
68 localBuilder.add_uid(uid);
69 auto location = localBuilder.Finish();
70 Akonadi2::ApplicationDomain::Buffer::FinishEventBuffer(localFbb, location);
71 }
72
73 flatbuffers::FlatBufferBuilder entityFbb;
74 Akonadi2::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, eventFbb.GetBufferPointer(), eventFbb.GetSize(), localFbb.GetBufferPointer(), localFbb.GetSize());
75
76 flatbuffers::FlatBufferBuilder fbb;
77 auto type = fbb.CreateString(Akonadi2::ApplicationDomain::getTypeName<Akonadi2::ApplicationDomain::Event>().toStdString().data());
78 auto delta = fbb.CreateVector<uint8_t>(entityFbb.GetBufferPointer(), entityFbb.GetSize());
79 Akonadi2::Commands::CreateEntityBuilder builder(fbb);
80 builder.add_domainType(type);
81 builder.add_delta(delta);
82 auto location = builder.Finish();
83 Akonadi2::Commands::FinishCreateEntityBuffer(fbb, location);
84
85 const QByteArray command(reinterpret_cast<const char *>(fbb.GetBufferPointer()), fbb.GetSize());
86 {
87 flatbuffers::Verifier verifyer(reinterpret_cast<const uint8_t *>(command.data()), command.size());
88 QVERIFY(Akonadi2::Commands::VerifyCreateEntityBuffer(verifyer));
89 }
90
91 //Actual test
92 Akonadi2::Pipeline pipeline("org.kde.test.instance1");
93 QSignalSpy revisionSpy(&pipeline, SIGNAL(revisionUpdated()));
94 TestResource resource("org.kde.test.instance1");
95 resource.configurePipeline(&pipeline);
96 resource.processCommand(Akonadi2::Commands::CreateEntityCommand, command, &pipeline);
97 resource.processCommand(Akonadi2::Commands::CreateEntityCommand, command, &pipeline);
98
99 QVERIFY(revisionSpy.isValid());
100 QTRY_COMPARE(revisionSpy.count(), 2);
101 QTest::qWait(100);
102 QCOMPARE(revisionSpy.count(), 2);
103 }
104};
105
106QTEST_MAIN(GenericResourceTest)
107#include "genericresourcetest.moc"