diff options
-rw-r--r-- | common/notifier.cpp | 4 | ||||
-rw-r--r-- | tests/notificationtest.cpp | 28 |
2 files changed, 32 insertions, 0 deletions
diff --git a/common/notifier.cpp b/common/notifier.cpp index 1af65e9..1b7cbdb 100644 --- a/common/notifier.cpp +++ b/common/notifier.cpp | |||
@@ -49,6 +49,7 @@ public: | |||
49 | 49 | ||
50 | QList<QSharedPointer<ResourceAccess>> resourceAccess; | 50 | QList<QSharedPointer<ResourceAccess>> resourceAccess; |
51 | QList<std::function<void(const Notification &)>> handler; | 51 | QList<std::function<void(const Notification &)>> handler; |
52 | QSharedPointer<Sink::ResultEmitter<QSharedPointer<Sink::ApplicationDomain::SinkResource> > > mResourceEmitter; | ||
52 | QObject context; | 53 | QObject context; |
53 | }; | 54 | }; |
54 | 55 | ||
@@ -91,6 +92,9 @@ Notifier::Notifier(const Sink::Query &resourceQuery) : d(new Sink::Notifier::Pri | |||
91 | SinkTraceCtx(resourceCtx) << "Resource query complete"; | 92 | SinkTraceCtx(resourceCtx) << "Resource query complete"; |
92 | }); | 93 | }); |
93 | emitter->fetch({}); | 94 | emitter->fetch({}); |
95 | if (resourceQuery.liveQuery()) { | ||
96 | d->mResourceEmitter = emitter; | ||
97 | } | ||
94 | result.first.exec(); | 98 | result.first.exec(); |
95 | } | 99 | } |
96 | 100 | ||
diff --git a/tests/notificationtest.cpp b/tests/notificationtest.cpp index 3182d8e..2b54c26 100644 --- a/tests/notificationtest.cpp +++ b/tests/notificationtest.cpp | |||
@@ -135,6 +135,34 @@ private slots: | |||
135 | //Modification triggered during sync | 135 | //Modification triggered during sync |
136 | QCOMPARE(status.at(2), static_cast<int>(ApplicationDomain::SyncStatus::SyncSuccess)); | 136 | QCOMPARE(status.at(2), static_cast<int>(ApplicationDomain::SyncStatus::SyncSuccess)); |
137 | } | 137 | } |
138 | |||
139 | void testNotifier() | ||
140 | { | ||
141 | QList<int> status; | ||
142 | Sink::Notifier notifier{Sink::Query{Sink::Query::LiveQuery}.resourceFilter("sink.dummy.instance2")}; | ||
143 | notifier.registerHandler([&] (const Sink::Notification ¬ification) { | ||
144 | if (notification.type == Notification::Info) { | ||
145 | status << notification.code; | ||
146 | } | ||
147 | }); | ||
148 | |||
149 | auto query = Query().resourceFilter("sink.dummy.instance2"); | ||
150 | query.setType<ApplicationDomain::Mail>(); | ||
151 | query.setFlags(Query::LiveQuery | Query::UpdateStatus); | ||
152 | |||
153 | auto resource = ApplicationDomain::ApplicationDomainType::createEntity<ApplicationDomain::SinkResource>("", "sink.dummy.instance2"); | ||
154 | resource.setResourceType("sink.dummy"); | ||
155 | VERIFYEXEC(Store::create(resource)); | ||
156 | |||
157 | VERIFYEXEC(Sink::Store::synchronize(query)); | ||
158 | VERIFYEXEC(Sink::ResourceControl::flushMessageQueue(QByteArrayList() << "sink.dummy.instance2")); | ||
159 | |||
160 | QTRY_COMPARE(status.size(), 2); | ||
161 | //Sync progress of item | ||
162 | QCOMPARE(status.at(0), static_cast<int>(ApplicationDomain::SyncStatus::SyncInProgress)); | ||
163 | QCOMPARE(status.at(1), static_cast<int>(ApplicationDomain::SyncStatus::SyncSuccess)); | ||
164 | } | ||
165 | |||
138 | }; | 166 | }; |
139 | 167 | ||
140 | QTEST_MAIN(NotificationTest) | 168 | QTEST_MAIN(NotificationTest) |