File indexing completed on 2025-05-04 04:59:09

0001 /*
0002   SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #include "mdnwarningwidgettest.h"
0007 #include "mdn/mdnwarningwidget.h"
0008 
0009 #include <QAction>
0010 #include <QSignalSpy>
0011 #include <QTest>
0012 
0013 QTEST_MAIN(MDNWarningWidgetTest)
0014 Q_DECLARE_METATYPE(MessageViewer::MDNWarningWidget::ResponseType)
0015 MDNWarningWidgetTest::MDNWarningWidgetTest(QObject *parent)
0016     : QObject{parent}
0017 {
0018 }
0019 
0020 void MDNWarningWidgetTest::shouldHaveDefaultValues()
0021 {
0022     qRegisterMetaType<MessageViewer::MDNWarningWidget::ResponseType>();
0023     MessageViewer::MDNWarningWidget w;
0024     QVERIFY(!w.isVisible());
0025     QVERIFY(w.wordWrap());
0026     QVERIFY(w.text().isEmpty());
0027     QVERIFY(!w.isCloseButtonVisible());
0028 
0029     QCOMPARE(w.messageType(), KMessageWidget::Information);
0030     QCOMPARE(w.actions().count(), 3);
0031     const auto acts{w.actions()};
0032     for (const auto &name : {QStringLiteral("mIgnoreAction"), QStringLiteral("mSendAction"), QStringLiteral("mSendDenyAction")}) {
0033         bool found = false;
0034         for (auto a : acts) {
0035             if (a->objectName() == name) {
0036                 found = true;
0037                 break;
0038             }
0039         }
0040         QVERIFY(found);
0041     }
0042 }
0043 
0044 void MDNWarningWidgetTest::shouldEmitSignals()
0045 {
0046     MessageViewer::MDNWarningWidget w;
0047     const auto acts{w.actions()};
0048     bool found = false;
0049     for (auto a : acts) {
0050         if (a->objectName() == QLatin1StringView("mIgnoreAction")) {
0051             found = true;
0052             QSignalSpy ignoreMdn(&w, &MessageViewer::MDNWarningWidget::sendResponse);
0053             a->trigger();
0054             QCOMPARE(ignoreMdn.count(), 1);
0055             QCOMPARE(ignoreMdn.at(0).at(0).value<MessageViewer::MDNWarningWidget::ResponseType>(), MessageViewer::MDNWarningWidget::ResponseType::Ignore);
0056             break;
0057         }
0058     }
0059 
0060     found = false;
0061     for (auto a : acts) {
0062         if (a->objectName() == QLatin1StringView("mSendAction")) {
0063             found = true;
0064             QSignalSpy sendMdn(&w, &MessageViewer::MDNWarningWidget::sendResponse);
0065             a->trigger();
0066             QCOMPARE(sendMdn.count(), 1);
0067             QCOMPARE(sendMdn.at(0).at(0).value<MessageViewer::MDNWarningWidget::ResponseType>(), MessageViewer::MDNWarningWidget::ResponseType::Send);
0068             break;
0069         }
0070     }
0071 
0072     found = false;
0073     for (auto a : acts) {
0074         if (a->objectName() == QLatin1StringView("mSendDenyAction")) {
0075             found = true;
0076             QSignalSpy sendDeny(&w, &MessageViewer::MDNWarningWidget::sendResponse);
0077             a->trigger();
0078             QCOMPARE(sendDeny.count(), 1);
0079             QCOMPARE(sendDeny.at(0).at(0).value<MessageViewer::MDNWarningWidget::ResponseType>(), MessageViewer::MDNWarningWidget::ResponseType::SendDeny);
0080             break;
0081         }
0082     }
0083 
0084     QVERIFY(found);
0085 }
0086 
0087 void MDNWarningWidgetTest::shouldChangeInformation()
0088 {
0089     MessageViewer::MDNWarningWidget w;
0090     const QString str{QStringLiteral("bla-bla")};
0091     w.setInformation(str);
0092     QCOMPARE(w.text(), str);
0093 }
0094 
0095 #include "moc_mdnwarningwidgettest.cpp"