void SingleEventModelTest::getEventByUri() { SingleEventModel model; watcher.setModel(&model); Event event; event.setType(Event::SMSEvent); event.setDirection(Event::Outbound); event.setLocalUid("/org/freedesktop/Telepathy/Account/gabble/jabber/dut_40localhost0"); event.setGroupId(group1.id()); event.setFreeText("freeText"); event.setStartTime(QDateTime::currentDateTime()); event.setEndTime(QDateTime::currentDateTime()); event.setRemoteUid("123456"); event.setMessageToken("messageTokenA1"); // ignore call properties Event::PropertySet p = Event::allProperties(); p.remove(Event::IsEmergencyCall); p.remove(Event::IsMissedCall); model.setPropertyMask(p); //TODO: add reading invalid id QVERIFY(model.addEvent(event)); watcher.waitForSignals(); QVERIFY(event.id() != -1); QVERIFY(model.getEventByUri(event.url())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); Event modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(event, modelEvent)); }
void SingleEventModelTest::getEventByTokens() { SingleEventModel model; // ignore call properties Event::PropertySet p = Event::allProperties(); p.remove(Event::IsEmergencyCall); p.remove(Event::IsMissedCall); model.setPropertyMask(p); watcher.setModel(&model); Event event; event.setType(Event::SMSEvent); event.setDirection(Event::Outbound); event.setLocalUid("/org/freedesktop/Telepathy/Account/gabble/jabber/dut_40localhost0"); event.setGroupId(group1.id()); event.setFreeText("freeText"); event.setStartTime(QDateTime::currentDateTime()); event.setEndTime(QDateTime::currentDateTime()); event.setRemoteUid("123456"); event.setMessageToken("messageTokenB1"); QVERIFY(model.addEvent(event)); watcher.waitForSignals(); QVERIFY(event.id() != -1); Event mms(event); mms.setMessageToken("mmsMessageToken"); mms.setMmsId("mmsId"); QVERIFY(model.addEvent(mms)); watcher.waitForSignals(); QVERIFY(mms.id() != -1); Event mms2(event); mms2.setMessageToken("mmsMessageToken"); mms2.setMmsId("mmsId"); mms2.setGroupId(group2.id()); QVERIFY(model.addEvent(mms2)); watcher.waitForSignals(); QVERIFY(mms2.id() != -1); QVERIFY(model.getEventByTokens("messageTokenB1", "", -1)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); Event modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(event, modelEvent)); QVERIFY(model.getEventByTokens("messageTokenB1", "", group1.id())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(event, modelEvent)); QVERIFY(model.getEventByTokens("messageTokenB1", "", group1.id() + 1)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 0); // Can match either to token or mms id: QVERIFY(model.getEventByTokens("messageTokenB1", "nonExistingMmsId", group1.id())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(event, modelEvent)); QVERIFY(model.getEventByTokens("", "nonExistingMmsId", group1.id())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 0); QVERIFY(model.getEventByTokens("", "mmsId", group1.id())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(mms, modelEvent)); QVERIFY(model.getEventByTokens("", "mmsId", group2.id())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(mms2, modelEvent)); QVERIFY(model.getEventByTokens("mmsMessageToken", "mmsId", group1.id())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); modelEvent = model.event(model.index(0, 0)); QVERIFY(compareEvents(mms, modelEvent)); }
void SingleEventModelTest::updateStatus() { SingleEventModel model; watcher.setModel(&model); SingleEventModel observer; ModelWatcher watcherObserver; watcherObserver.setModel(&observer); Event event; event.setType(Event::SMSEvent); event.setDirection(Event::Outbound); event.setLocalUid("/org/freedesktop/Telepathy/Account/gabble/jabber/dut_40localhost0"); event.setGroupId(group1.id()); event.setFreeText("freeText"); event.setStartTime(QDateTime::currentDateTime()); event.setEndTime(QDateTime::currentDateTime()); event.setRemoteUid("123456"); event.setMessageToken("messageTokenB"); QVERIFY(model.addEvent(event)); watcher.waitForSignals(); QVERIFY(event.id() != -1); CommHistory::Event::PropertySet props = CommHistory::Event::PropertySet() << CommHistory::Event::Id << CommHistory::Event::Direction << CommHistory::Event::Status << CommHistory::Event::GroupId << CommHistory::Event::MessageToken << CommHistory::Event::ReportDelivery << CommHistory::Event::MmsId; model.setPropertyMask(props); QVERIFY(model.getEventByUri(event.url())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 1); Event modelEvent = model.event(model.index(0, 0)); QVERIFY(modelEvent.validProperties().contains(CommHistory::Event::Status)); QVERIFY(modelEvent.validProperties().contains(CommHistory::Event::MessageToken)); QVERIFY(!modelEvent.validProperties().contains(CommHistory::Event::FreeText)); QVERIFY(!modelEvent.validProperties().contains(CommHistory::Event::ContactId)); QCOMPARE(event.status(), modelEvent.status()); QCOMPARE(event.messageToken(), modelEvent.messageToken()); // init observer model with the same event and all properties QVERIFY(observer.getEventByUri(event.url())); QVERIFY(watcherObserver.waitForModelReady()); QCOMPARE(observer.rowCount(), 1); Event observedEvent = observer.event(observer.index(0, 0)); QVERIFY(compareEvents(event, observedEvent)); // modify event with new status only modelEvent.setStatus(Event::SentStatus); QVERIFY(model.modifyEvent(modelEvent)); watcher.waitForSignals(); QCOMPARE(watcher.updatedCount(), 1); QCOMPARE(watcher.committedCount(), 1); //check observer model QTest::qWait(100); observedEvent = observer.event(observer.index(0, 0)); QCOMPARE(observedEvent.freeText(), event.freeText()); QCOMPARE(observedEvent.status(), Event::SentStatus); }