EventHandler Nullptr checks
So I got lazy halfway through doing this the first time. Add missing checks for null m_room and m_event to EventHandler and add tests for them.
This commit is contained in:
@@ -39,34 +39,61 @@ private:
|
|||||||
Connection *connection = nullptr;
|
Connection *connection = nullptr;
|
||||||
TestRoom *room = nullptr;
|
TestRoom *room = nullptr;
|
||||||
EventHandler eventHandler;
|
EventHandler eventHandler;
|
||||||
|
EventHandler emptyHandler;
|
||||||
|
EventHandler noEventHandler;
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void initTestCase();
|
void initTestCase();
|
||||||
|
|
||||||
|
void nullSetEvent();
|
||||||
void eventId();
|
void eventId();
|
||||||
|
void nullEventId();
|
||||||
void delegateType_data();
|
void delegateType_data();
|
||||||
void delegateType();
|
void delegateType();
|
||||||
|
void nullDelegateType();
|
||||||
void author();
|
void author();
|
||||||
|
void nullAuthor();
|
||||||
void authorDisplayName();
|
void authorDisplayName();
|
||||||
|
void nullAuthorDisplayName();
|
||||||
void time();
|
void time();
|
||||||
|
void nullTime();
|
||||||
void timeString();
|
void timeString();
|
||||||
|
void nullTimeString();
|
||||||
void highlighted();
|
void highlighted();
|
||||||
|
void nullHighlighted();
|
||||||
void hidden();
|
void hidden();
|
||||||
|
void nullHidden();
|
||||||
void body();
|
void body();
|
||||||
|
void nullBody();
|
||||||
void genericBody_data();
|
void genericBody_data();
|
||||||
void genericBody();
|
void genericBody();
|
||||||
|
void nullGenericBody();
|
||||||
void mediaInfo();
|
void mediaInfo();
|
||||||
|
void nullMediaInfo();
|
||||||
void linkPreviewer();
|
void linkPreviewer();
|
||||||
|
void nullLinkPreviewer();
|
||||||
void reactions();
|
void reactions();
|
||||||
|
void nullReactions();
|
||||||
void hasReply();
|
void hasReply();
|
||||||
|
void nullHasReply();
|
||||||
void replyId();
|
void replyId();
|
||||||
|
void nullReplyId();
|
||||||
void replyDelegateType();
|
void replyDelegateType();
|
||||||
|
void nullReplyDelegateType();
|
||||||
void replyAuthor();
|
void replyAuthor();
|
||||||
|
void nullReplyAuthor();
|
||||||
void replyBody();
|
void replyBody();
|
||||||
|
void nullReplyBody();
|
||||||
void replyMediaInfo();
|
void replyMediaInfo();
|
||||||
|
void nullReplyMediaInfo();
|
||||||
void thread();
|
void thread();
|
||||||
|
void nullThread();
|
||||||
void location();
|
void location();
|
||||||
|
void nullLocation();
|
||||||
void readMarkers();
|
void readMarkers();
|
||||||
|
void nullReadMarkers();
|
||||||
|
|
||||||
|
void cleanup();
|
||||||
};
|
};
|
||||||
|
|
||||||
void EventHandlerTest::initTestCase()
|
void EventHandlerTest::initTestCase()
|
||||||
@@ -82,6 +109,13 @@ void EventHandlerTest::initTestCase()
|
|||||||
room->update(std::move(roomData));
|
room->update(std::move(roomData));
|
||||||
|
|
||||||
eventHandler.setRoom(room);
|
eventHandler.setRoom(room);
|
||||||
|
noEventHandler.setRoom(room);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullSetEvent()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "cannot setEvent when m_room is set to nullptr.");
|
||||||
|
emptyHandler.setEvent(room->messageEvents().at(0).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventHandlerTest::eventId()
|
void EventHandlerTest::eventId()
|
||||||
@@ -91,6 +125,12 @@ void EventHandlerTest::eventId()
|
|||||||
QCOMPARE(eventHandler.getId(), QStringLiteral("$153456789:example.org"));
|
QCOMPARE(eventHandler.getId(), QStringLiteral("$153456789:example.org"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullEventId()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getId called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getId(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::delegateType_data()
|
void EventHandlerTest::delegateType_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<int>("eventNum");
|
QTest::addColumn<int>("eventNum");
|
||||||
@@ -114,6 +154,12 @@ void EventHandlerTest::delegateType()
|
|||||||
QCOMPARE(eventHandler.getDelegateType(), delegateType);
|
QCOMPARE(eventHandler.getDelegateType(), delegateType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullDelegateType()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getDelegateType called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getDelegateType(), DelegateType::Other);
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::author()
|
void EventHandlerTest::author()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(0).get();
|
auto event = room->messageEvents().at(0).get();
|
||||||
@@ -131,6 +177,15 @@ void EventHandlerTest::author()
|
|||||||
QCOMPARE(eventHandlerAuthor["object"_ls], QVariant::fromValue(author));
|
QCOMPARE(eventHandlerAuthor["object"_ls], QVariant::fromValue(author));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullAuthor()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getAuthor called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getAuthor(), QVariantMap());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getAuthor called with m_event set to nullptr. Returning empty user.");
|
||||||
|
QCOMPARE(noEventHandler.getAuthor(), room->getUser(nullptr));
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::authorDisplayName()
|
void EventHandlerTest::authorDisplayName()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(1).get();
|
auto event = room->messageEvents().at(1).get();
|
||||||
@@ -139,6 +194,15 @@ void EventHandlerTest::authorDisplayName()
|
|||||||
QCOMPARE(eventHandler.getAuthorDisplayName(), QStringLiteral("before"));
|
QCOMPARE(eventHandler.getAuthorDisplayName(), QStringLiteral("before"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullAuthorDisplayName()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getAuthorDisplayName called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getAuthorDisplayName(), QString());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getAuthorDisplayName called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getAuthorDisplayName(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::time()
|
void EventHandlerTest::time()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(0).get();
|
auto event = room->messageEvents().at(0).get();
|
||||||
@@ -148,6 +212,16 @@ void EventHandlerTest::time()
|
|||||||
QCOMPARE(eventHandler.getTime(true, QDateTime::fromMSecsSinceEpoch(1234, Qt::UTC)), QDateTime::fromMSecsSinceEpoch(1234, Qt::UTC));
|
QCOMPARE(eventHandler.getTime(true, QDateTime::fromMSecsSinceEpoch(1234, Qt::UTC)), QDateTime::fromMSecsSinceEpoch(1234, Qt::UTC));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullTime()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getTime called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getTime(), QDateTime());
|
||||||
|
|
||||||
|
eventHandler.setEvent(room->messageEvents().at(0).get());
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "a value must be provided for lastUpdated for a pending event.");
|
||||||
|
QCOMPARE(eventHandler.getTime(true), QDateTime());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::timeString()
|
void EventHandlerTest::timeString()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(0).get();
|
auto event = room->messageEvents().at(0).get();
|
||||||
@@ -169,6 +243,16 @@ void EventHandlerTest::timeString()
|
|||||||
format.formatRelativeDate(QDateTime::fromMSecsSinceEpoch(1690699214545, Qt::UTC).toLocalTime().date(), QLocale::LongFormat));
|
format.formatRelativeDate(QDateTime::fromMSecsSinceEpoch(1690699214545, Qt::UTC).toLocalTime().date(), QLocale::LongFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullTimeString()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getTimeString called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getTimeString(false), QString());
|
||||||
|
|
||||||
|
eventHandler.setEvent(room->messageEvents().at(0).get());
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "a value must be provided for lastUpdated for a pending event.");
|
||||||
|
QCOMPARE(eventHandler.getTimeString(false, QLocale::ShortFormat, true), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::highlighted()
|
void EventHandlerTest::highlighted()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(2).get();
|
auto event = room->messageEvents().at(2).get();
|
||||||
@@ -182,6 +266,15 @@ void EventHandlerTest::highlighted()
|
|||||||
QCOMPARE(eventHandler.isHighlighted(), false);
|
QCOMPARE(eventHandler.isHighlighted(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullHighlighted()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "isHighlighted called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.isHighlighted(), false);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "isHighlighted called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.isHighlighted(), false);
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::hidden()
|
void EventHandlerTest::hidden()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(3).get();
|
auto event = room->messageEvents().at(3).get();
|
||||||
@@ -195,6 +288,15 @@ void EventHandlerTest::hidden()
|
|||||||
QCOMPARE(eventHandler.isHidden(), false);
|
QCOMPARE(eventHandler.isHidden(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullHidden()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "isHidden called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.isHidden(), false);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "isHidden called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.isHidden(), false);
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::body()
|
void EventHandlerTest::body()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(0).get();
|
auto event = room->messageEvents().at(0).get();
|
||||||
@@ -206,6 +308,15 @@ void EventHandlerTest::body()
|
|||||||
QCOMPARE(eventHandler.getPlainBody(true), QStringLiteral("This is an example text message"));
|
QCOMPARE(eventHandler.getPlainBody(true), QStringLiteral("This is an example text message"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullBody()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getRichBody called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getRichBody(), QString());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getPlainBody called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getPlainBody(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::genericBody_data()
|
void EventHandlerTest::genericBody_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<int>("eventNum");
|
QTest::addColumn<int>("eventNum");
|
||||||
@@ -228,6 +339,12 @@ void EventHandlerTest::genericBody()
|
|||||||
QCOMPARE(eventHandler.getGenericBody(), output);
|
QCOMPARE(eventHandler.getGenericBody(), output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullGenericBody()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getGenericBody called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getGenericBody(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::mediaInfo()
|
void EventHandlerTest::mediaInfo()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(4).get();
|
auto event = room->messageEvents().at(4).get();
|
||||||
@@ -251,6 +368,15 @@ void EventHandlerTest::mediaInfo()
|
|||||||
QCOMPARE(thumbnailInfo["height"_ls], 450);
|
QCOMPARE(thumbnailInfo["height"_ls], 450);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullMediaInfo()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getMediaInfo called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getMediaInfo(), QVariantMap());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getMediaInfo called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getMediaInfo(), QVariantMap());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::linkPreviewer()
|
void EventHandlerTest::linkPreviewer()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(2).get();
|
auto event = room->messageEvents().at(2).get();
|
||||||
@@ -264,6 +390,15 @@ void EventHandlerTest::linkPreviewer()
|
|||||||
QCOMPARE(eventHandler.getLinkPreviewer(), nullptr);
|
QCOMPARE(eventHandler.getLinkPreviewer(), nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullLinkPreviewer()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getLinkPreviewer called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getLinkPreviewer(), nullptr);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getLinkPreviewer called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getLinkPreviewer(), nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::reactions()
|
void EventHandlerTest::reactions()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(0).get();
|
auto event = room->messageEvents().at(0).get();
|
||||||
@@ -272,6 +407,15 @@ void EventHandlerTest::reactions()
|
|||||||
QCOMPARE(eventHandler.getReactions()->rowCount(), 1);
|
QCOMPARE(eventHandler.getReactions()->rowCount(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullReactions()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReactions called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getReactions(), nullptr);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReactions called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReactions(), nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::hasReply()
|
void EventHandlerTest::hasReply()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(5).get();
|
auto event = room->messageEvents().at(5).get();
|
||||||
@@ -285,6 +429,12 @@ void EventHandlerTest::hasReply()
|
|||||||
QCOMPARE(eventHandler.hasReply(), false);
|
QCOMPARE(eventHandler.hasReply(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullHasReply()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "hasReply called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.hasReply(), false);
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::replyId()
|
void EventHandlerTest::replyId()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(5).get();
|
auto event = room->messageEvents().at(5).get();
|
||||||
@@ -298,6 +448,12 @@ void EventHandlerTest::replyId()
|
|||||||
QCOMPARE(eventHandler.getReplyId(), QStringLiteral(""));
|
QCOMPARE(eventHandler.getReplyId(), QStringLiteral(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullReplyId()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyId called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReplyId(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::replyDelegateType()
|
void EventHandlerTest::replyDelegateType()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(5).get();
|
auto event = room->messageEvents().at(5).get();
|
||||||
@@ -311,6 +467,15 @@ void EventHandlerTest::replyDelegateType()
|
|||||||
QCOMPARE(eventHandler.getReplyDelegateType(), DelegateType::Other);
|
QCOMPARE(eventHandler.getReplyDelegateType(), DelegateType::Other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullReplyDelegateType()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyDelegateType called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getReplyDelegateType(), DelegateType::Other);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyDelegateType called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReplyDelegateType(), DelegateType::Other);
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::replyAuthor()
|
void EventHandlerTest::replyAuthor()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(5).get();
|
auto event = room->messageEvents().at(5).get();
|
||||||
@@ -334,6 +499,15 @@ void EventHandlerTest::replyAuthor()
|
|||||||
QCOMPARE(eventHandler.getReplyAuthor(), room->getUser(nullptr));
|
QCOMPARE(eventHandler.getReplyAuthor(), room->getUser(nullptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullReplyAuthor()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyAuthor called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getReplyAuthor(), QVariantMap());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyAuthor called with m_event set to nullptr. Returning empty user.");
|
||||||
|
QCOMPARE(noEventHandler.getReplyAuthor(), room->getUser(nullptr));
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::replyBody()
|
void EventHandlerTest::replyBody()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(5).get();
|
auto event = room->messageEvents().at(5).get();
|
||||||
@@ -345,6 +519,15 @@ void EventHandlerTest::replyBody()
|
|||||||
QCOMPARE(eventHandler.getReplyPlainBody(true), QStringLiteral("This is an example text message"));
|
QCOMPARE(eventHandler.getReplyPlainBody(true), QStringLiteral("This is an example text message"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullReplyBody()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyRichBody called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReplyRichBody(), QString());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyPlainBody called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReplyPlainBody(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::replyMediaInfo()
|
void EventHandlerTest::replyMediaInfo()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(6).get();
|
auto event = room->messageEvents().at(6).get();
|
||||||
@@ -369,6 +552,15 @@ void EventHandlerTest::replyMediaInfo()
|
|||||||
QCOMPARE(thumbnailInfo["height"_ls], 450);
|
QCOMPARE(thumbnailInfo["height"_ls], 450);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullReplyMediaInfo()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyMediaInfo called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getReplyMediaInfo(), QVariantMap());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReplyMediaInfo called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReplyMediaInfo(), QVariantMap());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::thread()
|
void EventHandlerTest::thread()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(0).get();
|
auto event = room->messageEvents().at(0).get();
|
||||||
@@ -392,6 +584,15 @@ void EventHandlerTest::thread()
|
|||||||
QCOMPARE(eventHandler.getReplyId(), QStringLiteral("$threadmessage1:example.org"));
|
QCOMPARE(eventHandler.getReplyId(), QStringLiteral("$threadmessage1:example.org"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullThread()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "isThreaded called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.isThreaded(), false);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "threadRoot called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.threadRoot(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::location()
|
void EventHandlerTest::location()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(7).get();
|
auto event = room->messageEvents().at(7).get();
|
||||||
@@ -402,6 +603,18 @@ void EventHandlerTest::location()
|
|||||||
QCOMPARE(eventHandler.getLocationAssetType(), QStringLiteral("m.pin"));
|
QCOMPARE(eventHandler.getLocationAssetType(), QStringLiteral("m.pin"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullLocation()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getLatitude called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getLatitude(), -100.0);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getLongitude called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getLongitude(), -200.0);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getLocationAssetType called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getLocationAssetType(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
void EventHandlerTest::readMarkers()
|
void EventHandlerTest::readMarkers()
|
||||||
{
|
{
|
||||||
auto event = room->messageEvents().at(0).get();
|
auto event = room->messageEvents().at(0).get();
|
||||||
@@ -431,5 +644,37 @@ void EventHandlerTest::readMarkers()
|
|||||||
QCOMPARE(eventHandler.getReadMarkersString().startsWith(QStringLiteral("6 users:")), true);
|
QCOMPARE(eventHandler.getReadMarkersString().startsWith(QStringLiteral("6 users:")), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::nullReadMarkers()
|
||||||
|
{
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "hasReadMarkers called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.hasReadMarkers(), false);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReadMarkers called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getReadMarkers(), QVariantList());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getNumberExcessReadMarkers called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getNumberExcessReadMarkers(), QString());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReadMarkersString called with m_room set to nullptr.");
|
||||||
|
QCOMPARE(emptyHandler.getReadMarkersString(), QString());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "hasReadMarkers called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.hasReadMarkers(), false);
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReadMarkers called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReadMarkers(), QVariantList());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getNumberExcessReadMarkers called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getNumberExcessReadMarkers(), QString());
|
||||||
|
|
||||||
|
QTest::ignoreMessage(QtWarningMsg, "getReadMarkersString called with m_event set to nullptr.");
|
||||||
|
QCOMPARE(noEventHandler.getReadMarkersString(), QString());
|
||||||
|
}
|
||||||
|
|
||||||
|
void EventHandlerTest::cleanup()
|
||||||
|
{
|
||||||
|
eventHandler.setEvent(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(EventHandlerTest)
|
QTEST_MAIN(EventHandlerTest)
|
||||||
#include "eventhandlertest.moc"
|
#include "eventhandlertest.moc"
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#include <Quotient/events/stickerevent.h>
|
#include <Quotient/events/stickerevent.h>
|
||||||
#include <Quotient/quotient_common.h>
|
#include <Quotient/quotient_common.h>
|
||||||
|
|
||||||
|
#include "delegatetype.h"
|
||||||
#include "eventhandler_logging.h"
|
#include "eventhandler_logging.h"
|
||||||
#include "events/pollevent.h"
|
#include "events/pollevent.h"
|
||||||
#include "linkpreviewer.h"
|
#include "linkpreviewer.h"
|
||||||
@@ -50,6 +51,10 @@ const Quotient::Event *EventHandler::getEvent() const
|
|||||||
|
|
||||||
void EventHandler::setEvent(const Quotient::RoomEvent *event)
|
void EventHandler::setEvent(const Quotient::RoomEvent *event)
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "cannot setEvent when m_room is set to nullptr.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (event == m_event) {
|
if (event == m_event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -181,7 +186,7 @@ QDateTime EventHandler::getTime(bool isPending, QDateTime lastUpdated) const
|
|||||||
QString EventHandler::getTimeString(bool relative, QLocale::FormatType format, bool isPending, QDateTime lastUpdated) const
|
QString EventHandler::getTimeString(bool relative, QLocale::FormatType format, bool isPending, QDateTime lastUpdated) const
|
||||||
{
|
{
|
||||||
if (m_event == nullptr) {
|
if (m_event == nullptr) {
|
||||||
qCWarning(EventHandling) << "getTime called with m_event set to nullptr.";
|
qCWarning(EventHandling) << "getTimeString called with m_event set to nullptr.";
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
if (isPending && lastUpdated == QDateTime()) {
|
if (isPending && lastUpdated == QDateTime()) {
|
||||||
@@ -216,6 +221,15 @@ bool EventHandler::isHighlighted()
|
|||||||
|
|
||||||
bool EventHandler::isHidden()
|
bool EventHandler::isHidden()
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "isHidden called with m_room set to nullptr.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "isHidden called with m_event set to nullptr.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_event->isStateEvent() && !NeoChatConfig::self()->showStateEvent()) {
|
if (m_event->isStateEvent() && !NeoChatConfig::self()->showStateEvent()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -611,6 +625,14 @@ QString EventHandler::getGenericBody() const
|
|||||||
|
|
||||||
QVariantMap EventHandler::getMediaInfo() const
|
QVariantMap EventHandler::getMediaInfo() const
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getMediaInfo called with m_room set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getMediaInfo called with m_event set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
return getMediaInfoForEvent(m_event);
|
return getMediaInfoForEvent(m_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -723,6 +745,14 @@ QVariantMap EventHandler::getMediaInfoFromFileInfo(const EventContent::FileInfo
|
|||||||
|
|
||||||
QSharedPointer<LinkPreviewer> EventHandler::getLinkPreviewer() const
|
QSharedPointer<LinkPreviewer> EventHandler::getLinkPreviewer() const
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getLinkPreviewer called with m_room set to nullptr.";
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getLinkPreviewer called with m_event set to nullptr.";
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
if (!m_event->is<RoomMessageEvent>()) {
|
if (!m_event->is<RoomMessageEvent>()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@@ -754,7 +784,7 @@ QSharedPointer<ReactionModel> EventHandler::getReactions() const
|
|||||||
{
|
{
|
||||||
if (m_room == nullptr) {
|
if (m_room == nullptr) {
|
||||||
qCWarning(EventHandling) << "getReactions called with m_room set to nullptr.";
|
qCWarning(EventHandling) << "getReactions called with m_room set to nullptr.";
|
||||||
return {};
|
return nullptr;
|
||||||
}
|
}
|
||||||
if (m_event == nullptr) {
|
if (m_event == nullptr) {
|
||||||
qCWarning(EventHandling) << "getReactions called with m_event set to nullptr.";
|
qCWarning(EventHandling) << "getReactions called with m_event set to nullptr.";
|
||||||
@@ -806,16 +836,33 @@ QSharedPointer<ReactionModel> EventHandler::getReactions() const
|
|||||||
|
|
||||||
bool EventHandler::hasReply() const
|
bool EventHandler::hasReply() const
|
||||||
{
|
{
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "hasReply called with m_event set to nullptr.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return !m_event->contentJson()["m.relates_to"_ls].toObject()["m.in_reply_to"_ls].toObject()["event_id"_ls].toString().isEmpty();
|
return !m_event->contentJson()["m.relates_to"_ls].toObject()["m.in_reply_to"_ls].toObject()["event_id"_ls].toString().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString EventHandler::getReplyId() const
|
QString EventHandler::getReplyId() const
|
||||||
{
|
{
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getReplyId called with m_event set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
return m_event->contentJson()["m.relates_to"_ls].toObject()["m.in_reply_to"_ls].toObject()["event_id"_ls].toString();
|
return m_event->contentJson()["m.relates_to"_ls].toObject()["m.in_reply_to"_ls].toObject()["event_id"_ls].toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
DelegateType::Type EventHandler::getReplyDelegateType() const
|
DelegateType::Type EventHandler::getReplyDelegateType() const
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getReplyDelegateType called with m_room set to nullptr.";
|
||||||
|
return DelegateType::Other;
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getReplyDelegateType called with m_event set to nullptr.";
|
||||||
|
return DelegateType::Other;
|
||||||
|
}
|
||||||
|
|
||||||
auto replyEvent = m_room->getReplyForEvent(*m_event);
|
auto replyEvent = m_room->getReplyForEvent(*m_event);
|
||||||
if (replyEvent == nullptr) {
|
if (replyEvent == nullptr) {
|
||||||
return DelegateType::Other;
|
return DelegateType::Other;
|
||||||
@@ -903,6 +950,11 @@ QVariantMap EventHandler::getReplyMediaInfo() const
|
|||||||
|
|
||||||
bool EventHandler::isThreaded() const
|
bool EventHandler::isThreaded() const
|
||||||
{
|
{
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "isThreaded called with m_event set to nullptr.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return (m_event->contentPart<QJsonObject>("m.relates_to"_ls).contains("rel_type"_ls)
|
return (m_event->contentPart<QJsonObject>("m.relates_to"_ls).contains("rel_type"_ls)
|
||||||
&& m_event->contentPart<QJsonObject>("m.relates_to"_ls)["rel_type"_ls].toString() == "m.thread"_ls)
|
&& m_event->contentPart<QJsonObject>("m.relates_to"_ls)["rel_type"_ls].toString() == "m.thread"_ls)
|
||||||
|| (!m_event->unsignedPart<QJsonObject>("m.relations"_ls).isEmpty() && m_event->unsignedPart<QJsonObject>("m.relations"_ls).contains("m.thread"_ls));
|
|| (!m_event->unsignedPart<QJsonObject>("m.relations"_ls).isEmpty() && m_event->unsignedPart<QJsonObject>("m.relations"_ls).contains("m.thread"_ls));
|
||||||
@@ -910,6 +962,11 @@ bool EventHandler::isThreaded() const
|
|||||||
|
|
||||||
QString EventHandler::threadRoot() const
|
QString EventHandler::threadRoot() const
|
||||||
{
|
{
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "threadRoot called with m_event set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
// Get the thread root ID from m.relates_to if it exists.
|
// Get the thread root ID from m.relates_to if it exists.
|
||||||
if (m_event->contentPart<QJsonObject>("m.relates_to"_ls).contains("rel_type"_ls)
|
if (m_event->contentPart<QJsonObject>("m.relates_to"_ls).contains("rel_type"_ls)
|
||||||
&& m_event->contentPart<QJsonObject>("m.relates_to"_ls)["rel_type"_ls].toString() == "m.thread"_ls) {
|
&& m_event->contentPart<QJsonObject>("m.relates_to"_ls)["rel_type"_ls].toString() == "m.thread"_ls) {
|
||||||
@@ -925,6 +982,11 @@ QString EventHandler::threadRoot() const
|
|||||||
|
|
||||||
float EventHandler::getLatitude() const
|
float EventHandler::getLatitude() const
|
||||||
{
|
{
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getLatitude called with m_event set to nullptr.";
|
||||||
|
return -100.0;
|
||||||
|
}
|
||||||
|
|
||||||
const auto geoUri = m_event->contentJson()["geo_uri"_ls].toString();
|
const auto geoUri = m_event->contentJson()["geo_uri"_ls].toString();
|
||||||
if (geoUri.isEmpty()) {
|
if (geoUri.isEmpty()) {
|
||||||
return -100.0; // latitude runs from -90deg to +90deg so -100 is out of range.
|
return -100.0; // latitude runs from -90deg to +90deg so -100 is out of range.
|
||||||
@@ -935,6 +997,11 @@ float EventHandler::getLatitude() const
|
|||||||
|
|
||||||
float EventHandler::getLongitude() const
|
float EventHandler::getLongitude() const
|
||||||
{
|
{
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getLongitude called with m_event set to nullptr.";
|
||||||
|
return -200.0;
|
||||||
|
}
|
||||||
|
|
||||||
const auto geoUri = m_event->contentJson()["geo_uri"_ls].toString();
|
const auto geoUri = m_event->contentJson()["geo_uri"_ls].toString();
|
||||||
if (geoUri.isEmpty()) {
|
if (geoUri.isEmpty()) {
|
||||||
return -200.0; // longitude runs from -180deg to +180deg so -200 is out of range.
|
return -200.0; // longitude runs from -180deg to +180deg so -200 is out of range.
|
||||||
@@ -945,6 +1012,11 @@ float EventHandler::getLongitude() const
|
|||||||
|
|
||||||
QString EventHandler::getLocationAssetType() const
|
QString EventHandler::getLocationAssetType() const
|
||||||
{
|
{
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getLocationAssetType called with m_event set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
const auto assetType = m_event->contentJson()["org.matrix.msc3488.asset"_ls].toObject()["type"_ls].toString();
|
const auto assetType = m_event->contentJson()["org.matrix.msc3488.asset"_ls].toObject()["type"_ls].toString();
|
||||||
if (assetType.isEmpty()) {
|
if (assetType.isEmpty()) {
|
||||||
return {};
|
return {};
|
||||||
@@ -954,6 +1026,15 @@ QString EventHandler::getLocationAssetType() const
|
|||||||
|
|
||||||
bool EventHandler::hasReadMarkers() const
|
bool EventHandler::hasReadMarkers() const
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "hasReadMarkers called with m_room set to nullptr.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "hasReadMarkers called with m_event set to nullptr.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
auto userIds = m_room->userIdsAtEvent(m_event->id());
|
auto userIds = m_room->userIdsAtEvent(m_event->id());
|
||||||
userIds.remove(m_room->localUser()->id());
|
userIds.remove(m_room->localUser()->id());
|
||||||
return userIds.size() > 0;
|
return userIds.size() > 0;
|
||||||
@@ -961,6 +1042,15 @@ bool EventHandler::hasReadMarkers() const
|
|||||||
|
|
||||||
QVariantList EventHandler::getReadMarkers(int maxMarkers) const
|
QVariantList EventHandler::getReadMarkers(int maxMarkers) const
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getReadMarkers called with m_room set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getReadMarkers called with m_event set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
auto userIds_temp = m_room->userIdsAtEvent(m_event->id());
|
auto userIds_temp = m_room->userIdsAtEvent(m_event->id());
|
||||||
userIds_temp.remove(m_room->localUser()->id());
|
userIds_temp.remove(m_room->localUser()->id());
|
||||||
|
|
||||||
@@ -981,6 +1071,15 @@ QVariantList EventHandler::getReadMarkers(int maxMarkers) const
|
|||||||
|
|
||||||
QString EventHandler::getNumberExcessReadMarkers(int maxMarkers) const
|
QString EventHandler::getNumberExcessReadMarkers(int maxMarkers) const
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getNumberExcessReadMarkers called with m_room set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getNumberExcessReadMarkers called with m_event set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
auto userIds = m_room->userIdsAtEvent(m_event->id());
|
auto userIds = m_room->userIdsAtEvent(m_event->id());
|
||||||
userIds.remove(m_room->localUser()->id());
|
userIds.remove(m_room->localUser()->id());
|
||||||
|
|
||||||
@@ -993,6 +1092,15 @@ QString EventHandler::getNumberExcessReadMarkers(int maxMarkers) const
|
|||||||
|
|
||||||
QString EventHandler::getReadMarkersString() const
|
QString EventHandler::getReadMarkersString() const
|
||||||
{
|
{
|
||||||
|
if (m_room == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getReadMarkersString called with m_room set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
if (m_event == nullptr) {
|
||||||
|
qCWarning(EventHandling) << "getReadMarkersString called with m_event set to nullptr.";
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
auto userIds = m_room->userIdsAtEvent(m_event->id());
|
auto userIds = m_room->userIdsAtEvent(m_event->id());
|
||||||
userIds.remove(m_room->localUser()->id());
|
userIds.remove(m_room->localUser()->id());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user