1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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:
Q_SLOT void testIsMessageReaction_data();
Q_SLOT void testIsMessageReaction();
Q_SLOT void testMessageReaction();
Q_SLOT void testMessageReactionWithDuplicateEmojis();
Q_SLOT 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"
|