File indexing completed on 2024-04-28 05:02:16

0001 // SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
0002 // SPDX-License-Identifier: GPL-3.0-or-later
0003 
0004 #include <QtTest/QtTest>
0005 
0006 #include "utils/customemoji.h"
0007 
0008 class CustomEmojiTest : public QObject
0009 {
0010     Q_OBJECT
0011 
0012 private Q_SLOTS:
0013     void initTestCase()
0014     {
0015         QFile emojiFile(QLatin1String(DATA_DIR) + QLatin1Char('/') + QStringLiteral("emoji.json"));
0016         emojiFile.open(QFile::ReadOnly);
0017 
0018         doc = QJsonDocument::fromJson(emojiFile.readAll());
0019     }
0020 
0021     void testCustomEmojiParsing()
0022     {
0023         QVERIFY(doc.isArray());
0024 
0025         auto emojis = CustomEmoji::parseCustomEmojis(doc.array());
0026         QCOMPARE(emojis.size(), 2);
0027         QCOMPARE(emojis[0].shortcode, QStringLiteral("artaww"));
0028         QCOMPARE(emojis[0].url, QStringLiteral("https://cdn.masto.host/mastodonart/custom_emojis/images/000/181/127/static/63bd6a0097df7bbf.png"));
0029         QVERIFY(emojis[0].isCustom);
0030     }
0031 
0032     void testCustomEmojiReplacement()
0033     {
0034         auto emojis = CustomEmoji::parseCustomEmojis(doc.array());
0035 
0036         QString content{QStringLiteral(":artaww: :meowybara:")};
0037 
0038         content = CustomEmoji::replaceCustomEmojis(emojis, content);
0039         QCOMPARE(content,
0040                  QStringLiteral(
0041                      "<img height=\"16\" align=\"middle\" width=\"16\" "
0042                      "src=\"https://cdn.masto.host/mastodonart/custom_emojis/images/000/181/127/static/63bd6a0097df7bbf.png\"> <img height=\"16\" "
0043                      "align=\"middle\" width=\"16\" src=\"https://cdn.masto.host/mastodonart/custom_emojis/images/000/389/600/static/4dd38081c3f8f04c.png\">"));
0044     }
0045 
0046 private:
0047     QJsonDocument doc;
0048 };
0049 
0050 QTEST_MAIN(CustomEmojiTest)
0051 #include "customemojitest.moc"