File indexing completed on 2024-11-10 04:50:01

0001 /*
0002   SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-only
0005 */
0006 
0007 #include "filteractionwithurltest.h"
0008 #include "../filteractions/filteractionwithurl.h"
0009 #include <KLineEdit>
0010 #include <KUrlRequester>
0011 #include <QTest>
0012 
0013 class TestFilterActionWithUrl : public MailCommon::FilterActionWithUrl
0014 {
0015 public:
0016     TestFilterActionWithUrl()
0017         : MailCommon::FilterActionWithUrl(QStringLiteral("test"), QStringLiteral("label"))
0018     {
0019     }
0020 
0021     FilterAction::ReturnCode process(MailCommon::ItemContext &, bool) const override
0022     {
0023         return GoOn;
0024     }
0025 
0026     MailCommon::SearchRule::RequiredPart requiredPart() const override
0027     {
0028         return MailCommon::SearchRule::CompleteMessage;
0029     }
0030 };
0031 
0032 FilterActionWithUrlTest::FilterActionWithUrlTest(QObject *parent)
0033     : QObject(parent)
0034 {
0035 }
0036 
0037 FilterActionWithUrlTest::~FilterActionWithUrlTest() = default;
0038 
0039 void FilterActionWithUrlTest::shouldHaveDefaultValue()
0040 {
0041     TestFilterActionWithUrl filter;
0042     QWidget *w = filter.createParamWidget(nullptr);
0043     auto requester = w->findChild<KUrlRequester *>(QStringLiteral("requester"));
0044     QVERIFY(requester);
0045     auto toolButton = w->findChild<QToolButton *>(QStringLiteral("helpbutton"));
0046     QVERIFY(toolButton);
0047 }
0048 
0049 void FilterActionWithUrlTest::shouldClearWidget()
0050 {
0051     TestFilterActionWithUrl filter;
0052     QWidget *w = filter.createParamWidget(nullptr);
0053     auto requester = w->findChild<KUrlRequester *>(QStringLiteral("requester"));
0054     requester->setUrl(QUrl::fromLocalFile(QStringLiteral("/foo/bla")));
0055     QVERIFY(!requester->url().isEmpty());
0056     filter.clearParamWidget(w);
0057     QVERIFY(requester->url().isEmpty());
0058 }
0059 
0060 void FilterActionWithUrlTest::shouldAddValue()
0061 {
0062     TestFilterActionWithUrl filter;
0063     QWidget *w = filter.createParamWidget(nullptr);
0064     auto requester = w->findChild<KUrlRequester *>(QStringLiteral("requester"));
0065     filter.argsFromString(QStringLiteral("/foo"));
0066     filter.setParamWidgetValue(w);
0067     QCOMPARE(requester->lineEdit()->text(), QStringLiteral("/foo"));
0068 }
0069 
0070 void FilterActionWithUrlTest::shouldApplyValue()
0071 {
0072     TestFilterActionWithUrl filter;
0073     QWidget *w = filter.createParamWidget(nullptr);
0074     filter.argsFromString(QStringLiteral("foo"));
0075     filter.setParamWidgetValue(w);
0076     filter.applyParamWidgetValue(w);
0077     QCOMPARE(filter.argsAsString(), QStringLiteral("foo"));
0078 }
0079 
0080 void FilterActionWithUrlTest::shouldTestUrl_data()
0081 {
0082     QTest::addColumn<QString>("urlstr");
0083     QTest::addColumn<QString>("output");
0084     QTest::newRow("fullpath") << QStringLiteral("/usr/bin/ls") << QStringLiteral("/usr/bin/ls");
0085     QTest::newRow("local") << QStringLiteral("ls") << QStringLiteral("ls");
0086     QTest::newRow("localwithargument") << QStringLiteral("ls -l") << QStringLiteral("ls -l");
0087     QTest::newRow("fullpathwithargument") << QStringLiteral("/usr/bin/ls -l") << QStringLiteral("/usr/bin/ls -l");
0088     QTest::newRow("url") << QStringLiteral("file:///usr/bin/ls -l") << QStringLiteral("file:///usr/bin/ls -l");
0089     QTest::newRow("url2") << QStringLiteral("/usr/bin/ls -l") << QStringLiteral("/usr/bin/ls -l");
0090 }
0091 
0092 void FilterActionWithUrlTest::shouldTestUrl()
0093 {
0094     QFETCH(QString, urlstr);
0095     QFETCH(QString, output);
0096     TestFilterActionWithUrl filter;
0097     QWidget *w = filter.createParamWidget(nullptr);
0098     filter.argsFromString(urlstr);
0099     filter.setParamWidgetValue(w);
0100     filter.applyParamWidgetValue(w);
0101     QCOMPARE(filter.argsAsString(), output);
0102 }
0103 
0104 QTEST_MAIN(FilterActionWithUrlTest)
0105 
0106 #include "moc_filteractionwithurltest.cpp"