// SPDX-FileCopyrightText: 2023 James Graham // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL #include #include #include #include "models/reactionmodel.h" #include #include "models/eventmessagecontentmodel.h" #include "testutils.h" using namespace Quotient; class ReactionModelTest : public QObject { Q_OBJECT private: Connection *connection = nullptr; TestUtils::TestRoom *room = nullptr; EventMessageContentModel *parentModel; private Q_SLOTS: void initTestCase(); void basicReaction(); void newReaction(); }; void ReactionModelTest::initTestCase() { connection = Connection::makeMockConnection(u"@bob:kde.org"_s); room = new TestUtils::TestRoom(connection, u"#myroom:kde.org"_s, u"test-reactionmodel-sync.json"_s); parentModel = new EventMessageContentModel(room, "123456"_L1); } void ReactionModelTest::basicReaction() { auto event = eventCast(room->messageEvents().at(0).get()); auto model = ReactionModel(parentModel, event->id(), room); QCOMPARE(model.rowCount(), 1); QCOMPARE(model.data(model.index(0), ReactionModel::TextContentRole), u"👍"_s); QCOMPARE(model.data(model.index(0), ReactionModel::ReactionRole), u"👍"_s); QCOMPARE(model.data(model.index(0), ReactionModel::ToolTipRole), u"Alice Margatroid reacted with 👍"_s); QCOMPARE(model.data(model.index(0), ReactionModel::HasLocalMember), false); } void ReactionModelTest::newReaction() { auto event = eventCast(room->messageEvents().at(0).get()); auto model = new ReactionModel(parentModel, event->id(), room); QCOMPARE(model->rowCount(), 1); QCOMPARE(model->data(model->index(0), ReactionModel::ToolTipRole), u"Alice Margatroid reacted with 👍"_s); QSignalSpy spy(model, SIGNAL(modelReset())); room->syncNewEvents(u"test-reactionmodel-extra-sync.json"_s); QCOMPARE(model->rowCount(), 2); QCOMPARE(spy.count(), 2); // Once for each of the 2 new reactions. QCOMPARE(model->data(model->index(1), ReactionModel::ReactionRole), u"😆"_s); QCOMPARE(model->data(model->index(0), ReactionModel::ToolTipRole), u"Alice Margatroid and Bob reacted with 👍"_s); delete model; } QTEST_MAIN(ReactionModelTest) #include "reactionmodeltest.moc"