1 /*
2   SPDX-FileCopyrightText: 2014-2021 Laurent Montel <montel@kde.org>
3 
4   SPDX-License-Identifier: GPL-2.0-only
5 */
6 
7 #include "viewertest.h"
8 #include "messageviewer/viewer.h"
9 #include <KActionCollection>
10 #include <QTest>
11 #include <qtestmouse.h>
12 
ViewerTest()13 ViewerTest::ViewerTest()
14 {
15 }
16 
shouldHaveDefaultValuesOnCreation()17 void ViewerTest::shouldHaveDefaultValuesOnCreation()
18 {
19     auto viewer = new MessageViewer::Viewer(nullptr, nullptr, new KActionCollection(this));
20     viewer->show();
21     QVERIFY(QTest::qWaitForWindowExposed(viewer));
22 
23     auto mViewer = viewer->findChild<QWidget *>(QStringLiteral("mViewer"));
24     QVERIFY(mViewer);
25     QCOMPARE(mViewer->isVisible(), true);
26 
27     auto sliderContainer = viewer->findChild<QWidget *>(QStringLiteral("slidercontainer"));
28     QVERIFY(sliderContainer);
29     QCOMPARE(sliderContainer->isVisible(), false);
30 
31     auto colorBar = viewer->findChild<QWidget *>(QStringLiteral("mColorBar"));
32     QVERIFY(colorBar);
33 
34     auto scandetectionWidget = viewer->findChild<QWidget *>(QStringLiteral("scandetectionwarning"));
35     QVERIFY(scandetectionWidget);
36     QCOMPARE(scandetectionWidget->isVisible(), false);
37 
38     auto opensavefilefolderwidget = viewer->findChild<QWidget *>(QStringLiteral("opensavefilefolderwidget"));
39     QVERIFY(opensavefilefolderwidget);
40     QCOMPARE(opensavefilefolderwidget->isVisible(), false);
41 
42     QVERIFY(viewer->toggleFixFontAction());
43     QVERIFY(viewer->toggleMimePartTreeAction());
44     QVERIFY(viewer->selectAllAction());
45     QVERIFY(viewer->copyURLAction());
46     QVERIFY(viewer->copyAction());
47     QVERIFY(viewer->urlOpenAction());
48     QVERIFY(viewer->speakTextAction());
49     QVERIFY(viewer->copyImageLocation());
50     QVERIFY(viewer->viewSourceAction());
51     QVERIFY(viewer->findInMessageAction());
52     QVERIFY(viewer->saveAsAction());
53     QVERIFY(viewer->saveMessageDisplayFormatAction());
54     QVERIFY(viewer->resetMessageDisplayFormatAction());
55     QVERIFY(viewer->urlClicked().isEmpty());
56     QVERIFY(viewer->imageUrlClicked().isEmpty());
57     QCOMPARE(viewer->isFixedFont(), false);
58     QVERIFY(viewer->shareServiceUrlMenu());
59     delete viewer;
60 }
61 
62 static const char s_mail1[] =
63     "From: Konqui <konqui@kde.org>\n"
64     "To: Friends <friends@kde.org>\n"
65     "Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)\n"
66     "Subject: Sample message\n"
67     "MIME-Version: 1.0\n"
68     "Content-type: text/plain; charset=us-ascii\n"
69     "\n"
70     "\n"
71     "This is a test message.\n"
72     "\n";
73 
74 static const char s_mail2[] =
75     "From: David Faure <dfaure@example.com>\n"
76     "To: Friends <friends@example.com>\n"
77     "Date: Sun, 31 Aug 2016 23:56:48 +0200 (CEST)\n"
78     "Subject: Second mail\n"
79     "MIME-Version: 1.0\n"
80     "Content-type: text/plain; charset=\"us-ascii\"\n"
81     "\n"
82     "\n"
83     "This is the second message.\n"
84     "\n";
85 
createMsg(const char * data)86 KMime::Message::Ptr createMsg(const char *data)
87 {
88     KMime::Message::Ptr msgPtr(new KMime::Message());
89     msgPtr->setContent(QByteArray(data));
90     msgPtr->parse();
91     return msgPtr;
92 }
93 
shouldDisplayMessage()94 void ViewerTest::shouldDisplayMessage()
95 {
96     MessageViewer::Viewer viewer(nullptr, nullptr, new KActionCollection(this));
97     viewer.setMessage(createMsg(s_mail1), MimeTreeParser::Force);
98     // not sure what to check, but at least we check it neither crashes nor hangs
99     // TODO: retrieve message text and check it
100 }
101 
shouldSwitchToAnotherMessage()102 void ViewerTest::shouldSwitchToAnotherMessage()
103 {
104     MessageViewer::Viewer viewer(nullptr, nullptr, new KActionCollection(this));
105     viewer.setMessage(createMsg(s_mail1), MimeTreeParser::Force);
106 
107     viewer.setMessage(createMsg(s_mail2), MimeTreeParser::Force);
108 }
109 
110 QTEST_MAIN(ViewerTest)
111