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

0001 /*
0002   SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-only
0005 */
0006 
0007 #include "viewertest.h"
0008 #include "messageviewer/viewer.h"
0009 #include <KActionCollection>
0010 #include <QTest>
0011 #include <qtestmouse.h>
0012 
0013 ViewerTest::ViewerTest() = default;
0014 
0015 void ViewerTest::shouldHaveDefaultValuesOnCreation()
0016 {
0017     auto viewer = new MessageViewer::Viewer(nullptr, nullptr, new KActionCollection(this));
0018     viewer->show();
0019     QVERIFY(QTest::qWaitForWindowExposed(viewer));
0020 
0021     auto mViewer = viewer->findChild<QWidget *>(QStringLiteral("mViewer"));
0022     QVERIFY(mViewer);
0023     QCOMPARE(mViewer->isVisible(), true);
0024 
0025     auto sliderContainer = viewer->findChild<QWidget *>(QStringLiteral("slidercontainer"));
0026     QVERIFY(sliderContainer);
0027     QCOMPARE(sliderContainer->isVisible(), false);
0028 
0029     auto colorBar = viewer->findChild<QWidget *>(QStringLiteral("mColorBar"));
0030     QVERIFY(colorBar);
0031 
0032     auto scandetectionWidget = viewer->findChild<QWidget *>(QStringLiteral("scandetectionwarning"));
0033     QVERIFY(!scandetectionWidget); // loaded on demand
0034 
0035     auto opensavefilefolderwidget = viewer->findChild<QWidget *>(QStringLiteral("opensavefilefolderwidget"));
0036     QVERIFY(!opensavefilefolderwidget); // loaded on demand
0037 
0038     QVERIFY(viewer->toggleFixFontAction());
0039     QVERIFY(viewer->toggleMimePartTreeAction());
0040     QVERIFY(viewer->selectAllAction());
0041     QVERIFY(viewer->copyURLAction());
0042     QVERIFY(viewer->copyAction());
0043     QVERIFY(viewer->urlOpenAction());
0044     QVERIFY(viewer->speakTextAction());
0045     QVERIFY(viewer->copyImageLocation());
0046     QVERIFY(viewer->viewSourceAction());
0047     QVERIFY(viewer->findInMessageAction());
0048     QVERIFY(viewer->saveAsAction());
0049     QVERIFY(viewer->saveMessageDisplayFormatAction());
0050     QVERIFY(viewer->resetMessageDisplayFormatAction());
0051     QVERIFY(viewer->urlClicked().isEmpty());
0052     QVERIFY(viewer->imageUrlClicked().isEmpty());
0053     QCOMPARE(viewer->isFixedFont(), false);
0054     QVERIFY(viewer->shareServiceUrlMenu());
0055     delete viewer;
0056 }
0057 
0058 static const char s_mail1[] =
0059     "From: Konqui <konqui@kde.org>\n"
0060     "To: Friends <friends@kde.org>\n"
0061     "Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)\n"
0062     "Subject: Sample message\n"
0063     "MIME-Version: 1.0\n"
0064     "Content-type: text/plain; charset=us-ascii\n"
0065     "\n"
0066     "\n"
0067     "This is a test message.\n"
0068     "\n";
0069 
0070 static const char s_mail2[] =
0071     "From: David Faure <dfaure@example.com>\n"
0072     "To: Friends <friends@example.com>\n"
0073     "Date: Sun, 31 Aug 2016 23:56:48 +0200 (CEST)\n"
0074     "Subject: Second mail\n"
0075     "MIME-Version: 1.0\n"
0076     "Content-type: text/plain; charset=\"us-ascii\"\n"
0077     "\n"
0078     "\n"
0079     "This is the second message.\n"
0080     "\n";
0081 
0082 KMime::Message::Ptr createMsg(const char *data)
0083 {
0084     KMime::Message::Ptr msgPtr(new KMime::Message());
0085     msgPtr->setContent(QByteArray(data));
0086     msgPtr->parse();
0087     return msgPtr;
0088 }
0089 
0090 void ViewerTest::shouldDisplayMessage()
0091 {
0092     MessageViewer::Viewer viewer(nullptr, nullptr, new KActionCollection(this));
0093     viewer.setMessage(createMsg(s_mail1), MimeTreeParser::Force);
0094     // not sure what to check, but at least we check it neither crashes nor hangs
0095     // TODO: retrieve message text and check it
0096 }
0097 
0098 void ViewerTest::shouldSwitchToAnotherMessage()
0099 {
0100     MessageViewer::Viewer viewer(nullptr, nullptr, new KActionCollection(this));
0101     viewer.setMessage(createMsg(s_mail1), MimeTreeParser::Force);
0102 
0103     viewer.setMessage(createMsg(s_mail2), MimeTreeParser::Force);
0104 }
0105 
0106 QTEST_MAIN(ViewerTest)
0107 
0108 #include "moc_viewertest.cpp"