void ConversationModelTest::modifyEvent() { ConversationModel model; model.enableContactChanges(false); watcher.setModel(&model); model.setQueryMode(EventModel::SyncQuery); QVERIFY(model.getEvents(group1.id())); Event event; /* modify invalid event */ QVERIFY(!model.modifyEvent(event)); QVERIFY(model.rowCount() > 0); int row = rand() % model.rowCount(); event = model.event(model.index(row, 0)); qDebug() << row << event.id() << event.freeText(); event.setFreeText("modified event"); QDateTime modified = event.lastModified(); QVERIFY(model.modifyEvent(event)); watcher.waitForSignals(); QVERIFY(model.trackerIO().getEvent(event.id(), event)); QCOMPARE(event.freeText(), QString("modified event")); QSKIP("Make nie:contentLastUpdated handling consistent", SkipSingle); event = model.event(model.index(row, 0)); QCOMPARE(event.freeText(), QString("modified event")); QVERIFY(event.lastModified() > modified); }
void ConversationModelTest::deleteEvent() { ConversationModel model; model.enableContactChanges(false); watcher.setModel(&model); model.setQueryMode(EventModel::SyncQuery); QVERIFY(model.getEvents(group1.id())); Event event; /* delete invalid event */ QVERIFY(!model.deleteEvent(event)); int rows = model.rowCount(); int row = rand() % rows; event = model.event(model.index(row, 0)); qDebug() << row << event.id(); QVERIFY(model.deleteEvent(event.id())); watcher.waitForSignals(); QVERIFY(!model.trackerIO().getEvent(event.id(), event)); QVERIFY(model.event(model.index(row, 0)).id() != event.id()); QVERIFY(model.rowCount() == rows - 1); }
void ConversationModelTest::getEvents() { QFETCH(bool, useThread); QThread modelThread; ConversationModel model; model.enableContactChanges(false); watcher.setModel(&model); if (useThread) { modelThread.start(); model.setBackgroundThread(&modelThread); } QVERIFY(model.getEvents(group1.id())); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 10); for (int i = 0; i < model.rowCount(); i++) { Event e1, e2; QModelIndex ind = model.index(i, 0); e1 = model.event(ind); QVERIFY(model.trackerIO().getEvent(e1.id(), e2)); QVERIFY(compareEvents(e1, e2)); QVERIFY(model.event(ind).type() != Event::CallEvent); } // add but don't save status message and check content again addTestEvent(model, Event::StatusMessageEvent, Event::Outbound, ACCOUNT1, group1.id(), "status message", false, false, QDateTime::currentDateTime(), QString(), true); watcher.waitForSignals(-1, 1); QCOMPARE(model.rowCount(), 11); for (int i = 0; i < model.rowCount(); i++) QVERIFY(model.event(model.index(i, 0)).type() != Event::CallEvent); // NOTE: since setFilter re-fetches data from tracker, status message event is lost /* filtering by type */ QVERIFY(model.setFilter(Event::IMEvent)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 6); for (int i = 0; i < model.rowCount(); i++) QCOMPARE(model.event(model.index(i, 0)).type(), Event::IMEvent); QVERIFY(model.setFilter(Event::SMSEvent)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 4); for (int i = 0; i < model.rowCount(); i++) QCOMPARE(model.event(model.index(i, 0)).type(), Event::SMSEvent); /* filtering by account */ QVERIFY(model.setFilter(Event::UnknownType, ACCOUNT1)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 6); for (int i = 0; i < model.rowCount(); i++) QCOMPARE(model.event(model.index(i, 0)).localUid(), ACCOUNT1); QVERIFY(model.setFilter(Event::UnknownType, ACCOUNT2)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 4); for (int i = 0; i < model.rowCount(); i++) QCOMPARE(model.event(model.index(i, 0)).localUid(), ACCOUNT2); /* filtering by direction */ QVERIFY(model.setFilter(Event::UnknownType, QString(), Event::Inbound)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 5); for (int i = 0; i < model.rowCount(); i++) QCOMPARE(model.event(model.index(i, 0)).direction(), Event::Inbound); QVERIFY(model.setFilter(Event::UnknownType, QString(), Event::Outbound)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 5); for (int i = 0; i < model.rowCount(); i++) QCOMPARE(model.event(model.index(i, 0)).direction(), Event::Outbound); /* mixed filtering */ QVERIFY(model.setFilter(Event::IMEvent, ACCOUNT1, Event::Outbound)); QVERIFY(watcher.waitForModelReady()); QCOMPARE(model.rowCount(), 2); for (int i = 0; i < model.rowCount(); i++) { QCOMPARE(model.event(model.index(i, 0)).type(), Event::IMEvent); QCOMPARE(model.event(model.index(i, 0)).localUid(), ACCOUNT1); QCOMPARE(model.event(model.index(i, 0)).direction(), Event::Outbound); } modelThread.quit(); modelThread.wait(3000); }