diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-10 12:17:32 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-10 12:17:32 +0200 |
commit | 1319b45f5f389c94877ef58458bb60795042129e (patch) | |
tree | e1fa4fec269ab32b5814e5914da4fddb48c3ae6f /tests/entitystoretest.cpp | |
parent | 0d210e00c5beb8f83dbaea07cab408470c5ac215 (diff) | |
download | sink-1319b45f5f389c94877ef58458bb60795042129e.tar.gz sink-1319b45f5f389c94877ef58458bb60795042129e.zip |
Fixed readAllUids and readAll
Diffstat (limited to 'tests/entitystoretest.cpp')
-rw-r--r-- | tests/entitystoretest.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/entitystoretest.cpp b/tests/entitystoretest.cpp new file mode 100644 index 0000000..0faf500 --- /dev/null +++ b/tests/entitystoretest.cpp | |||
@@ -0,0 +1,83 @@ | |||
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 | |||
11 | class EntityStoreTest : public QObject | ||
12 | { | ||
13 | Q_OBJECT | ||
14 | private: | ||
15 | QString resourceInstanceIdentifier{"resourceId"}; | ||
16 | |||
17 | private 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 | store.startTransaction(Storage::DataStore::ReadWrite); | ||
48 | store.add("mail", mail, false, [] (const ApplicationDomain::ApplicationDomainType &) {}); | ||
49 | store.add("mail", mail2, false, [] (const ApplicationDomain::ApplicationDomainType &) {}); | ||
50 | |||
51 | mail.setExtractedSubject("foo"); | ||
52 | |||
53 | store.modify("mail", mail, {}, false, [] (const ApplicationDomain::ApplicationDomainType &, ApplicationDomain::ApplicationDomainType &) {}); | ||
54 | store.commitTransaction(); | ||
55 | |||
56 | store.startTransaction(Storage::DataStore::ReadOnly); | ||
57 | { | ||
58 | //We get every uid once | ||
59 | QList<QByteArray> uids; | ||
60 | store.readAllUids("mail", [&] (const QByteArray &uid) { | ||
61 | uids << uid; | ||
62 | }); | ||
63 | QCOMPARE(uids.size(), 2); | ||
64 | } | ||
65 | |||
66 | { | ||
67 | //We get the latest version of every entity once | ||
68 | QList<QByteArray> uids; | ||
69 | store.readAll("mail", [&] (const ApplicationDomain::ApplicationDomainType &entity) { | ||
70 | //The first revision should be superseeded by the modification | ||
71 | QCOMPARE(entity.getProperty(ApplicationDomain::Mail::Subject::name).toString(), QString::fromLatin1("foo")); | ||
72 | uids << entity.identifier(); | ||
73 | }); | ||
74 | QCOMPARE(uids.size(), 2); | ||
75 | } | ||
76 | |||
77 | store.abortTransaction(); | ||
78 | |||
79 | } | ||
80 | }; | ||
81 | |||
82 | QTEST_MAIN(EntityStoreTest) | ||
83 | #include "entitystoretest.moc" | ||