Extend testing

This commit is contained in:
Tobias Fella
2025-12-26 22:41:10 +01:00
committed by Tobias Fella
parent 96d24f5c3a
commit 8b27323488

View File

@@ -57,6 +57,8 @@
using namespace Quotient;
// TODO: Add data to all models as relevant.
// Performs basic tests on all models in NeoChat
// When adding a new test, create the model first, then the tester, then initialize the model (e.g., setConnection and setRoom).
// That way, the models are also tested for whether they can handle having no connection etc.
@@ -68,6 +70,8 @@ private:
NeoChatConnection *connection = nullptr;
NeoChatRoom *room = nullptr;
QString eventId;
Server server;
private Q_SLOTS:
@@ -136,6 +140,26 @@ void ModelTest::initTestCase()
QSignalSpy spy(accountManager, &AccountManager::connectionAdded);
connection = dynamic_cast<NeoChatConnection *>(accountManager->accounts()->front());
const auto roomId = server.createRoom(u"@user:localhost:1234"_s);
eventId = server.sendEvent(roomId,
u"m.room.message"_s,
QJsonObject{
{u"body"_s, u"foo"_s},
{u"msgtype"_s, u"m.text"_s},
});
server.sendEvent(roomId,
u"m.room.message"_s,
QJsonObject{
{u"body"_s, u"asdf"_s},
{u"m.relates_to"_s,
QJsonObject{
{u"event_id"_s, u"$GEucSt3TfVl6DVpKEyeOlRsXzjLv2ZCVgSQuQclFg1o"_s},
{u"is_falling_back"_s, true},
{u"m.in_reply_to"_s, QJsonObject{{u"event_id"_s, u"$GEucSt3TfVl6DVpKEyeOlRsXzjLv2ZCVgSQuQclFg1o"_s}}},
{u"rel_type"_s, u"m.thread"_s},
}},
{u"msgtype"_s, u"m.text"_s},
});
QSignalSpy syncSpy(connection, &Connection::syncDone);
// We need to wait for two syncs, as the next one won't have the changes yet
@@ -151,51 +175,48 @@ void ModelTest::testRoomTreeModel()
auto tester = new QAbstractItemModelTester(roomTreeModel);
tester->setUseFetchMore(true);
roomTreeModel->setConnection(connection);
// TODO
}
void ModelTest::testMessageContentModel()
{
auto contentModel = new MessageContentModel(room, nullptr, QString(/* TODO: use a proper event id here*/));
auto contentModel = new MessageContentModel(room, nullptr, eventId);
auto tester = new QAbstractItemModelTester(contentModel);
tester->setUseFetchMore(true);
}
void ModelTest::testEventMessageContentModel()
{
auto model = new EventMessageContentModel(room, QString(/* TODO */));
auto model = new EventMessageContentModel(room, eventId);
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
}
void ModelTest::testThreadModel()
{
auto model = new ThreadModel(QString(/* TODO */), room);
auto model = new ThreadModel(eventId, room);
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
}
void ModelTest::testThreadFetchModel()
{
auto model = new ThreadFetchModel(new ThreadModel(QString(/* TODO */), room));
auto model = new ThreadFetchModel(new ThreadModel(eventId, room));
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
}
void ModelTest::testThreadChatBarModel()
{
auto model = new ThreadChatBarModel(new ThreadModel(QString(/* TODO */), room), room);
auto model = new ThreadChatBarModel(new ThreadModel(eventId, room), room);
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
}
void ModelTest::testReactionModel()
{
auto model = new ReactionModel(new MessageContentModel(room), QString(/* TODO */), room);
auto model = new ReactionModel(new MessageContentModel(room), eventId, room);
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO add data
}
void ModelTest::testPollAnswerModel()
@@ -204,7 +225,6 @@ void ModelTest::testPollAnswerModel()
auto model = new PollAnswerModel(handler);
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO add data
}
void ModelTest::testLineModel()
@@ -222,7 +242,7 @@ void ModelTest::testSpaceChildrenModel()
auto model = new SpaceChildrenModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setSpace(room);
}
void ModelTest::testItineraryModel()
@@ -230,7 +250,6 @@ void ModelTest::testItineraryModel()
auto model = new ItineraryModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
}
void ModelTest::testPublicRoomListModel()
@@ -238,15 +257,16 @@ void ModelTest::testPublicRoomListModel()
auto model = new PublicRoomListModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setConnection(connection);
}
void ModelTest::testMessageFilterModel()
{
auto model = new MessageFilterModel();
auto timelineModel = new TimelineModel();
auto model = new MessageFilterModel(nullptr, timelineModel);
auto tester = new QAbstractItemModelTester(model);
timelineModel->setRoom(room);
tester->setUseFetchMore(true);
// TODO
}
void ModelTest::testThreePIdModel()
@@ -259,13 +279,11 @@ void ModelTest::testThreePIdModel()
void ModelTest::testMediaMessageFilterModel()
{
auto model = new MediaMessageFilterModel();
auto timelineModel = new TimelineModel();
auto messageFilterModel = new MessageFilterModel(nullptr, timelineModel);
auto model = new MediaMessageFilterModel(nullptr, messageFilterModel);
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
auto messageFilterModel = new MessageFilterModel();
model->setSourceModel(messageFilterModel);
auto timelineModel = new TimelineModel();
messageFilterModel->setSourceModel(timelineModel);
timelineModel->setRoom(room);
}
@@ -274,7 +292,7 @@ void ModelTest::testWebshortcutModel()
auto model = new WebShortcutModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setSelectedText(u"Foo"_s);
}
void ModelTest::testTimelineMessageModel()
@@ -282,15 +300,14 @@ void ModelTest::testTimelineMessageModel()
auto model = new TimelineMessageModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setRoom(room);
}
void ModelTest::testReadMarkerModel()
{
auto model = new ReadMarkerModel(QString(), room);
auto model = new ReadMarkerModel(eventId, room);
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
}
void ModelTest::testSearchModel()
@@ -298,7 +315,8 @@ void ModelTest::testSearchModel()
auto model = new SearchModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setSearchText(u"foo"_s);
model->setRoom(room);
}
void ModelTest::testStateModel()
@@ -306,7 +324,7 @@ void ModelTest::testStateModel()
auto model = new StateModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setRoom(room);
}
void ModelTest::testTimelineModel()
@@ -314,7 +332,7 @@ void ModelTest::testTimelineModel()
auto model = new TimelineModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setRoom(room);
}
void ModelTest::testStateKeysModel()
@@ -322,7 +340,8 @@ void ModelTest::testStateKeysModel()
auto model = new StateKeysModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setEventType(u"m.room.member"_s);
model->setRoom(room);
}
void ModelTest::testPinnedMessageModel()
@@ -330,7 +349,7 @@ void ModelTest::testPinnedMessageModel()
auto model = new PinnedMessageModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setRoom(room);
}
void ModelTest::testUserListModel()
@@ -338,7 +357,7 @@ void ModelTest::testUserListModel()
auto model = new UserListModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setRoom(room);
}
void ModelTest::testStickerModel()
@@ -346,7 +365,13 @@ void ModelTest::testStickerModel()
auto model = new StickerModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setPackIndex(0);
model->setRoom(room);
auto imagePacksModel = new ImagePacksModel();
model->setModel(imagePacksModel);
imagePacksModel->setRoom(room);
imagePacksModel->setShowEmoticons(true);
imagePacksModel->setShowStickers(true);
}
void ModelTest::testPowerLevelModel()
@@ -354,7 +379,6 @@ void ModelTest::testPowerLevelModel()
auto model = new PowerLevelModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
}
void ModelTest::testImagePacksModel()
@@ -362,7 +386,9 @@ void ModelTest::testImagePacksModel()
auto model = new ImagePacksModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setRoom(room);
model->setShowEmoticons(true);
model->setShowStickers(true);
}
void ModelTest::testCompletionModel()
@@ -370,7 +396,12 @@ void ModelTest::testCompletionModel()
auto model = new CompletionModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setRoom(room);
model->setAutoCompletionType(CompletionModel::Room);
model->setText(u"foo"_s, u"#foo"_s);
auto roomListModel = new RoomListModel();
roomListModel->setConnection(connection);
model->setRoomListModel(roomListModel);
}
void ModelTest::testRoomListModel()
@@ -379,7 +410,6 @@ void ModelTest::testRoomListModel()
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
model->setConnection(connection);
// TODO test rooms
}
void ModelTest::testCommonRoomsModel()
@@ -389,7 +419,6 @@ void ModelTest::testCommonRoomsModel()
tester->setUseFetchMore(true);
model->setConnection(connection);
model->setUserId(u"@user:example.com"_s);
// TODO create mock data
}
void ModelTest::testNotificationsModel()
@@ -397,7 +426,7 @@ void ModelTest::testNotificationsModel()
auto model = new NotificationsModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO
model->setConnection(connection);
}
void ModelTest::testLocationsModel()
@@ -406,7 +435,6 @@ void ModelTest::testLocationsModel()
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
model->setRoom(room);
// TODO add some locations to the room
}
void ModelTest::testServerListModel()
@@ -428,7 +456,6 @@ void ModelTest::testCustomEmojiModel()
auto tester = new QAbstractItemModelTester(&CustomEmojiModel::instance());
tester->setUseFetchMore(true);
CustomEmojiModel::instance().setConnection(connection);
// TODO: add some emojis
}
void ModelTest::testPushRuleModel()
@@ -437,7 +464,6 @@ void ModelTest::testPushRuleModel()
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
model->setConnection(connection);
// TODO: Add some push rules to the mock server
}
void ModelTest::testActionsModel()
@@ -448,7 +474,6 @@ void ModelTest::testActionsModel()
void ModelTest::testDevicesModel()
{
// TODO: Make the server return some dummy devices
auto model = new DevicesModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
@@ -462,7 +487,6 @@ void ModelTest::testUserDirectoryListModel()
tester->setUseFetchMore(true);
model->setConnection(connection);
model->setSearchText(u"foo"_s);
// TODO implement user directory model in mock server
}
void ModelTest::testAccountEmoticonModel()
@@ -471,7 +495,6 @@ void ModelTest::testAccountEmoticonModel()
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
model->setConnection(connection);
// TODO add some emojis
}
void ModelTest::testPermissionsModel()
@@ -488,7 +511,6 @@ void ModelTest::testLiveLocationsModel()
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
model->setRoom(room);
// TODO add some data to the room
}
void ModelTest::testRoomSortParameterModel()
@@ -509,7 +531,6 @@ void ModelTest::testSortFilterRoomTreeModel()
void ModelTest::testSortFilterSpaceListModel()
{
// TODO make sure we have some spaces
auto sourceModel = new RoomListModel();
auto model = new SortFilterSpaceListModel(sourceModel);
auto tester = new QAbstractItemModelTester(model);
@@ -519,7 +540,6 @@ void ModelTest::testSortFilterSpaceListModel()
void ModelTest::testSortFilterRoomListModel()
{
// TODO make sure we have some rooms
auto sourceModel = new RoomListModel();
auto model = new SortFilterRoomListModel(sourceModel);
auto tester = new QAbstractItemModelTester(model);
@@ -534,7 +554,7 @@ void ModelTest::testSpaceChildSortFilterModel()
tester->setUseFetchMore(true);
auto spaceChildrenModel = new SpaceChildrenModel();
model->setSourceModel(spaceChildrenModel);
spaceChildrenModel->setSpace(nullptr); // TODO create a real space
spaceChildrenModel->setSpace(nullptr);
}
void ModelTest::testStateFilterModel()
@@ -545,7 +565,6 @@ void ModelTest::testStateFilterModel()
auto stateModel = new StateModel();
model->setSourceModel(stateModel);
stateModel->setRoom(room);
// TODO the dummy room probably already has some state?
}
void ModelTest::testMessageContentFilterModel()
@@ -553,7 +572,7 @@ void ModelTest::testMessageContentFilterModel()
auto model = new MessageContentFilterModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
model->setSourceModel(ContentProvider::self().contentModelForEvent(room, QString(/* TODO: use a proper event id here*/)));
model->setSourceModel(ContentProvider::self().contentModelForEvent(room, eventId));
}
void ModelTest::testUserFilterModel()
@@ -564,7 +583,6 @@ void ModelTest::testUserFilterModel()
auto userListModel = new UserListModel();
model->setSourceModel(userListModel);
userListModel->setRoom(room);
// TODO open room with some )users
}
void ModelTest::testEmoticonFilterModel()
@@ -572,7 +590,6 @@ void ModelTest::testEmoticonFilterModel()
auto model = new EmoticonFilterModel();
auto tester = new QAbstractItemModelTester(model);
tester->setUseFetchMore(true);
// TODO: Add some emoticons to the account; requires extending the server first
auto accountEmoticonModel = new AccountEmoticonModel();
model->setSourceModel(accountEmoticonModel);
model->setShowEmojis(true);