// SPDX-FileCopyrightText: 2023 James Graham // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL #include #include #include "linkpreviewer.h" #include "utils.h" #include #include #include #include "testutils.h" using namespace Quotient; class LinkPreviewerTest : public QObject { Q_OBJECT private Q_SLOTS: void linkPreviewsMatch_data(); void linkPreviewsMatch(); void multipleLinkPreviewsMatch_data(); void multipleLinkPreviewsMatch(); void linkPreviewsReject_data(); void linkPreviewsReject(); }; void LinkPreviewerTest::linkPreviewsMatch_data() { QTest::addColumn("inputString"); QTest::addColumn("testOutputLink"); QTest::newRow("plainHttps") << u"https://kde.org"_s << QUrl(u"https://kde.org"_s); QTest::newRow("richHttps") << u"Rich Link"_s << QUrl(u"https://kde.org"_s); QTest::newRow("richHttpsLinkDescription") << u"https://kde.org"_s << QUrl(u"https://kde.org"_s); } void LinkPreviewerTest::linkPreviewsMatch() { QFETCH(QString, inputString); QFETCH(QUrl, testOutputLink); auto link = LinkPreviewer::linkPreviews(inputString)[0]; QCOMPARE(link, testOutputLink); } void LinkPreviewerTest::multipleLinkPreviewsMatch_data() { QTest::addColumn("inputString"); QTest::addColumn>("testOutputLinks"); QTest::newRow("multipleHttps") << u"www.example.org https://kde.org"_s << QList{QUrl(u"www.example.org"_s), QUrl(u"https://kde.org"_s)}; QTest::newRow("multipleHttps1Invalid") << u"www.example.org mxc://example.org/SEsfnsuifSDFSSEF"_s << QList{QUrl(u"www.example.org"_s)}; } void LinkPreviewerTest::multipleLinkPreviewsMatch() { QFETCH(QString, inputString); QFETCH(QList, testOutputLinks); auto links = LinkPreviewer::linkPreviews(inputString); QCOMPARE(links, testOutputLinks); } void LinkPreviewerTest::linkPreviewsReject_data() { QTest::addColumn("inputString"); QTest::newRow("mxc") << u"mxc://example.org/SEsfnsuifSDFSSEF"_s; QTest::newRow("matrixTo") << u"https://matrix.to/#/@alice:example.org"_s; QTest::newRow("noSpace") << u"testhttps://kde.org"_s; } void LinkPreviewerTest::linkPreviewsReject() { QFETCH(QString, inputString); auto links = LinkPreviewer::linkPreviews(inputString); QCOMPARE(links.empty(), true); } QTEST_MAIN(LinkPreviewerTest) #include "linkpreviewertest.moc"