summaryrefslogtreecommitdiffstats
path: root/tests/entitystoretest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/entitystoretest.cpp')
-rw-r--r--tests/entitystoretest.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/tests/entitystoretest.cpp b/tests/entitystoretest.cpp
new file mode 100644
index 0000000..90575a5
--- /dev/null
+++ b/tests/entitystoretest.cpp
@@ -0,0 +1,89 @@
1#include <QtTest>
2
3#include <QDebug>
4#include <QString>
5
6#include "common/storage/entitystore.h"
7#include "common/adaptorfactoryregistry.h"
8#include "common/definitions.h"
9#include "testimplementations.h"
10
11class EntityStoreTest : public QObject
12{
13 Q_OBJECT
14private:
15 QString resourceInstanceIdentifier{"resourceId"};
16
17private slots:
18 void initTestCase()
19 {
20 Sink::AdaptorFactoryRegistry::instance().registerFactory<Sink::ApplicationDomain::Mail, TestMailAdaptorFactory>("test");
21 }
22
23 void cleanup()
24 {
25 Sink::Storage::DataStore storage(Sink::storageLocation(), resourceInstanceIdentifier);
26 storage.removeFromDisk();
27 }
28
29 void testCleanup()
30 {
31 }
32
33 void readAll()
34 {
35 using namespace Sink;
36 ResourceContext resourceContext{resourceInstanceIdentifier.toUtf8(), "dummy", AdaptorFactoryRegistry::instance().getFactories("test")};
37 Storage::EntityStore store(resourceContext, {});
38
39 auto mail = ApplicationDomain::ApplicationDomainType::createEntity<ApplicationDomain::Mail>("res1");
40 mail.setExtractedMessageId("messageid");
41 mail.setExtractedSubject("boo");
42
43 auto mail2 = ApplicationDomain::ApplicationDomainType::createEntity<ApplicationDomain::Mail>("res1");
44 mail2.setExtractedMessageId("messageid2");
45 mail2.setExtractedSubject("foo");
46
47 auto mail3 = ApplicationDomain::ApplicationDomainType::createEntity<ApplicationDomain::Mail>("res1");
48 mail3.setExtractedMessageId("messageid2");
49 mail3.setExtractedSubject("foo");
50
51 store.startTransaction(Storage::DataStore::ReadWrite);
52 store.add("mail", mail, false);
53 store.add("mail", mail2, false);
54 store.add("mail", mail3, false);
55
56 mail.setExtractedSubject("foo");
57
58 store.modify("mail", mail, QByteArrayList{}, false);
59 store.remove("mail", mail3, false);
60 store.commitTransaction();
61
62 store.startTransaction(Storage::DataStore::ReadOnly);
63 {
64 //We get every uid once
65 QList<QByteArray> uids;
66 store.readAllUids("mail", [&] (const QByteArray &uid) {
67 uids << uid;
68 });
69 QCOMPARE(uids.size(), 2);
70 }
71
72 {
73 //We get the latest version of every entity once
74 QList<QByteArray> uids;
75 store.readAll("mail", [&] (const ApplicationDomain::ApplicationDomainType &entity) {
76 //The first revision should be superseeded by the modification
77 QCOMPARE(entity.getProperty(ApplicationDomain::Mail::Subject::name).toString(), QString::fromLatin1("foo"));
78 uids << entity.identifier();
79 });
80 QCOMPARE(uids.size(), 2);
81 }
82
83 store.abortTransaction();
84
85 }
86};
87
88QTEST_MAIN(EntityStoreTest)
89#include "entitystoretest.moc"