diff options
Diffstat (limited to 'tests/genericresourcetest.cpp')
-rw-r--r-- | tests/genericresourcetest.cpp | 107 |
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 | |||
14 | class TestResource : public Akonadi2::GenericResource | ||
15 | { | ||
16 | public: | ||
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 | |||
34 | static void removeFromDisk(const QString &name) | ||
35 | { | ||
36 | Akonadi2::Storage store(Akonadi2::Store::storageLocation(), name, Akonadi2::Storage::ReadWrite); | ||
37 | store.removeFromDisk(); | ||
38 | } | ||
39 | |||
40 | class GenericResourceTest : public QObject | ||
41 | { | ||
42 | Q_OBJECT | ||
43 | private 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 | |||
106 | QTEST_MAIN(GenericResourceTest) | ||
107 | #include "genericresourcetest.moc" | ||