aboutsummaryrefslogtreecommitdiff
path: root/tests/qxmppmessagereaction
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-10-16 19:59:49 +0200
committerGitHub <noreply@github.com>2022-10-16 19:59:49 +0200
commit66e5f060abe831fa08a758b9de44b29bfec8b3ba (patch)
tree0fab0a2b20d6563c3522172129f0c5520c6028b7 /tests/qxmppmessagereaction
parentecce762e109bc9d88f3f6b7925e8b33ffcc0f57d (diff)
downloadqxmpp-66e5f060abe831fa08a758b9de44b29bfec8b3ba.tar.gz
Implement XEP-0444: Message Reactions (#492)
https://xmpp.org/extensions/xep-0444.html
Diffstat (limited to 'tests/qxmppmessagereaction')
-rw-r--r--tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp b/tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp
new file mode 100644
index 00000000..8acbe6c9
--- /dev/null
+++ b/tests/qxmppmessagereaction/tst_qxmppmessagereaction.cpp
@@ -0,0 +1,110 @@
+// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#include "QXmppMessageReaction.h"
+
+#include "util.h"
+#include <QObject>
+
+class tst_QXmppMessageReaction : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void testIsMessageReaction_data();
+ void testIsMessageReaction();
+ void testMessageReaction();
+ void testMessageReactionWithDuplicateEmojis();
+ void testMessageReactionRemoval();
+};
+
+void tst_QXmppMessageReaction::testIsMessageReaction_data()
+{
+ QTest::addColumn<QByteArray>("xml");
+ QTest::addColumn<bool>("isValid");
+
+ QTest::newRow("valid")
+ << QByteArrayLiteral("<reactions xmlns=\"urn:xmpp:reactions:0\"/>")
+ << true;
+ QTest::newRow("invalidTag")
+ << QByteArrayLiteral("<invalid xmlns=\"urn:xmpp:reactions:0\"/>")
+ << false;
+ QTest::newRow("invalidNamespace")
+ << QByteArrayLiteral("<reactions xmlns=\"invalid\"/>")
+ << false;
+}
+
+void tst_QXmppMessageReaction::testIsMessageReaction()
+{
+ QFETCH(QByteArray, xml);
+ QFETCH(bool, isValid);
+
+ QCOMPARE(QXmppMessageReaction::isMessageReaction(xmlToDom(xml)), isValid);
+}
+
+void tst_QXmppMessageReaction::testMessageReaction()
+{
+ const QByteArray xml(
+ "<reactions xmlns=\"urn:xmpp:reactions:0\" id=\"744f6e18-a57a-11e9-a656-4889e7820c76\">"
+ "<reaction>🐢</reaction>"
+ "<reaction>👋</reaction>"
+ "</reactions>");
+
+ QXmppMessageReaction reaction1;
+ QVERIFY(reaction1.messageId().isEmpty());
+ QVERIFY(reaction1.emojis().isEmpty());
+
+ parsePacket(reaction1, xml);
+ QCOMPARE(reaction1.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76"));
+ QCOMPARE(reaction1.emojis().at(0), QStringLiteral("🐢"));
+ QCOMPARE(reaction1.emojis().at(1), QStringLiteral("👋"));
+
+ serializePacket(reaction1, xml);
+
+ QXmppMessageReaction reaction2;
+ reaction2.setMessageId(QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76"));
+ reaction2.setEmojis({ QStringLiteral("🐢"), QStringLiteral("👋") });
+
+ QCOMPARE(reaction1.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76"));
+ QCOMPARE(reaction1.emojis().at(0), QStringLiteral("🐢"));
+ QCOMPARE(reaction1.emojis().at(1), QStringLiteral("👋"));
+
+ serializePacket(reaction2, xml);
+}
+
+void tst_QXmppMessageReaction::testMessageReactionWithDuplicateEmojis()
+{
+ const QByteArray xml(
+ "<reactions xmlns=\"urn:xmpp:reactions:0\" id=\"744f6e18-a57a-11e9-a656-4889e7820c76\">"
+ "<reaction>🐢</reaction>"
+ "<reaction>👋</reaction>"
+ "<reaction>🐢</reaction>"
+ "<reaction>👋</reaction>"
+ "</reactions>");
+
+ QXmppMessageReaction reaction;
+
+ parsePacket(reaction, xml);
+ QCOMPARE(reaction.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76"));
+ QCOMPARE(reaction.emojis().size(), 2);
+ QCOMPARE(reaction.emojis().at(0), QStringLiteral("🐢"));
+ QCOMPARE(reaction.emojis().at(1), QStringLiteral("👋"));
+}
+
+void tst_QXmppMessageReaction::testMessageReactionRemoval()
+{
+ const QByteArray xml(
+ "<reactions xmlns=\"urn:xmpp:reactions:0\" id=\"744f6e18-a57a-11e9-a656-4889e7820c76\"/>");
+
+ QXmppMessageReaction reaction;
+
+ parsePacket(reaction, xml);
+ QCOMPARE(reaction.messageId(), QStringLiteral("744f6e18-a57a-11e9-a656-4889e7820c76"));
+ QCOMPARE(reaction.emojis().size(), 0);
+
+ serializePacket(reaction, xml);
+}
+
+QTEST_MAIN(tst_QXmppMessageReaction)
+#include "tst_qxmppmessagereaction.moc"