File indexing completed on 2024-12-01 04:35:22

0001 /*
0002    SPDX-FileCopyrightText: 2018-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "customemojitest.h"
0008 #include "emoticons/customemoji.h"
0009 #include "ruqola_autotest_helper.h"
0010 #include <QJsonObject>
0011 
0012 QTEST_GUILESS_MAIN(CustomEmojiTest)
0013 
0014 CustomEmojiTest::CustomEmojiTest(QObject *parent)
0015     : QObject(parent)
0016 {
0017 }
0018 
0019 void CustomEmojiTest::shouldHaveDefaultValue()
0020 {
0021     CustomEmoji j;
0022     QVERIFY(j.extension().isEmpty());
0023     QVERIFY(j.identifier().isEmpty());
0024     QVERIFY(j.name().isEmpty());
0025     QVERIFY(j.aliases().isEmpty());
0026     QCOMPARE(j.updatedAt(), 0);
0027     QVERIFY(j.emojiIdentifier().isEmpty());
0028     QCOMPARE(j.isAnimatedImage(), false);
0029 }
0030 
0031 void CustomEmojiTest::shouldAssignValue()
0032 {
0033     CustomEmoji j;
0034     const QString ext{QStringLiteral("foo")};
0035     const QString id{QStringLiteral("bla")};
0036     const QString name{QStringLiteral("bli")};
0037     const QStringList aliases{QStringLiteral(":foo:"), QStringLiteral(":bla:")};
0038     const qint64 updatedAt = 500;
0039 
0040     j.setExtension(ext);
0041     j.setName(name);
0042     j.setIdentifier(id);
0043     j.setAliases(aliases);
0044     j.setUpdatedAt(updatedAt);
0045 
0046     const QString emojiId = QLatin1Char(':') + name + QLatin1Char(':');
0047     j.setEmojiIdentifier(emojiId);
0048 
0049     QCOMPARE(j.extension(), ext);
0050     QCOMPARE(j.identifier(), id);
0051     QCOMPARE(j.name(), name);
0052     QCOMPARE(j.aliases(), aliases);
0053     QCOMPARE(j.emojiIdentifier(), emojiId);
0054     QCOMPARE(j.updatedAt(), updatedAt);
0055 }
0056 
0057 void CustomEmojiTest::shouldCopyValue()
0058 {
0059     CustomEmoji j;
0060     const QString ext{QStringLiteral("foo")};
0061     const QString id{QStringLiteral("bla")};
0062     const QString name{QStringLiteral("bli")};
0063     const QStringList aliases{QStringLiteral(":foo:"), QStringLiteral(":bla:")};
0064     const qint64 updatedAt = 500;
0065 
0066     j.setExtension(ext);
0067     j.setName(name);
0068     j.setIdentifier(id);
0069     j.setAliases(aliases);
0070     j.setUpdatedAt(updatedAt);
0071     const QString emojiId = QLatin1Char(':') + name + QLatin1Char(':');
0072     j.setEmojiIdentifier(emojiId);
0073 
0074     CustomEmoji copy = j;
0075     QCOMPARE(copy, j);
0076 }
0077 
0078 // void CustomEmojiTest::shouldClearCachedHtml()
0079 //{
0080 //    CustomEmoji emojiRef;
0081 //    emojiRef.setExtension(QStringLiteral("gif"));
0082 //    emojiRef.setName(QStringLiteral("clapping"));
0083 //    emojiRef.setIdentifier(QStringLiteral("scSbxNPzm9xWrNqCG"));
0084 //    emojiRef.setAliases(QStringList{QStringLiteral(":clap:")});
0085 //    emojiRef.setEmojiIdentifier(QStringLiteral(":clapping:"));
0086 //    emojiRef.setUpdatedAt(50);
0087 
0088 //    const QString cachedHtml = emojiRef.generateHtmlFromCustomEmoji(QStringLiteral("www.kde.org"));
0089 //    QVERIFY(!cachedHtml.isEmpty());
0090 //    QCOMPARE(emojiRef.cachedHtml(), cachedHtml);
0091 //    emojiRef.clearCachedHtml();
0092 //    QVERIFY(emojiRef.cachedHtml().isEmpty());
0093 //    QCOMPARE(emojiRef.generateHtmlFromCustomEmoji(QStringLiteral("www.kde.org")), cachedHtml);
0094 //    QCOMPARE(emojiRef.cachedHtml(), cachedHtml);
0095 //}
0096 
0097 void CustomEmojiTest::shouldParseEmoji_data()
0098 {
0099     QTest::addColumn<QString>("name");
0100     QTest::addColumn<CustomEmoji>("expectedEmoji");
0101     {
0102         CustomEmoji emojiRef;
0103         emojiRef.setExtension(QStringLiteral("jpg"));
0104         emojiRef.setName(QStringLiteral("troll"));
0105         emojiRef.setIdentifier(QStringLiteral("2cgzHwKP6Cq3iZCob"));
0106         emojiRef.setEmojiIdentifier(QStringLiteral(":troll:"));
0107         emojiRef.setUpdatedAt(1485546740427);
0108 
0109         QTest::addRow("emoji") << QStringLiteral("emoji") << emojiRef;
0110     }
0111 }
0112 
0113 void CustomEmojiTest::shouldParseEmoji()
0114 {
0115     QFETCH(QString, name);
0116     QFETCH(CustomEmoji, expectedEmoji);
0117     const QString originalJsonFile = QLatin1String(RUQOLA_DATA_DIR) + QLatin1String("/json/restapi/") + name + QLatin1String(".json");
0118     const QJsonObject obj = AutoTestHelper::loadJsonObject(originalJsonFile);
0119     CustomEmoji originalEmoji;
0120     originalEmoji.parseEmoji(obj);
0121     const bool emojiIsEqual = (originalEmoji == expectedEmoji);
0122     if (!emojiIsEqual) {
0123         qDebug() << "originalEmoji " << originalEmoji;
0124         qDebug() << "ExpectedEmoji " << expectedEmoji;
0125     }
0126     QVERIFY(emojiIsEqual);
0127 }
0128 
0129 // void CustomEmojiTest::shouldGenerateHtml_data()
0130 //{
0131 //    QTest::addColumn<CustomEmoji>("emoji");
0132 //    QTest::addColumn<QString>("serverUrl");
0133 //    QTest::addColumn<QString>("expectedFileName");
0134 //    QTest::addColumn<QString>("expectedUrl");
0135 //    QTest::addColumn<QString>("html");
0136 
0137 //    {
0138 //        CustomEmoji emojiRef;
0139 //        emojiRef.setExtension(QStringLiteral("gif"));
0140 //        emojiRef.setName(QStringLiteral("clapping"));
0141 //        emojiRef.setIdentifier(QStringLiteral("scSbxNPzm9xWrNqCG"));
0142 //        emojiRef.setAliases(QStringList{QStringLiteral("clap")});
0143 //        emojiRef.setEmojiIdentifier(QStringLiteral(":clapping:"));
0144 //        emojiRef.setUpdatedAt(1514915356313);
0145 //        QTest::addRow("emoji") << emojiRef << QStringLiteral("www.kde.org")
0146 //                               << QStringLiteral("/emoji-custom/clapping.gif")
0147 //                               << QStringLiteral("http://www.kde.org/emoji-custom/clapping.gif")
0148 //                               << QStringLiteral("<img height='22' width='22' src='http://www.kde.org/emoji-custom/clapping.gif' title=':clapping:'/>");
0149 //    }
0150 //}
0151 
0152 // void CustomEmojiTest::shouldGenerateHtml()
0153 //{
0154 //    QFETCH(CustomEmoji, emoji);
0155 //    QFETCH(QString, serverUrl);
0156 //    QFETCH(QString, expectedFileName);
0157 //    QFETCH(QString, expectedUrl);
0158 //    QFETCH(QString, html);
0159 
0160 //    QCOMPARE(emoji.emojiFileName(), expectedFileName);
0161 //    QCOMPARE(emoji.emojiUrl(serverUrl), expectedUrl);
0162 //}
0163 
0164 #include "moc_customemojitest.cpp"