File indexing completed on 2024-05-12 16:27:01

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "ruqolamainwindowtest.h"
0008 #include "misc/statuscombobox.h"
0009 #include "ruqolamainwindow.h"
0010 
0011 #include <QLabel>
0012 #include <QSplitter>
0013 #include <QStackedWidget>
0014 #include <QStandardPaths>
0015 #include <QTest>
0016 #include <QToolButton>
0017 #include <QWidgetAction>
0018 
0019 QTEST_MAIN(RuqolaMainWindowTest)
0020 
0021 RuqolaMainWindowTest::RuqolaMainWindowTest(QObject *parent)
0022     : QObject(parent)
0023 {
0024     QStandardPaths::setTestModeEnabled(true);
0025 }
0026 
0027 static void switchToMainWidget(RuqolaMainWindow &w)
0028 {
0029     auto mStackedWidget = w.findChild<QStackedWidget *>(QStringLiteral("mStackedWidget"));
0030     QVERIFY(mStackedWidget);
0031     auto mRuqolaMainWidget = mStackedWidget->findChild<QWidget *>(QStringLiteral("mRuqolaMainWidget"));
0032     QVERIFY(mRuqolaMainWidget);
0033     mStackedWidget->setCurrentWidget(mRuqolaMainWidget);
0034     QCOMPARE(mStackedWidget->currentWidget(), mRuqolaMainWidget);
0035 }
0036 
0037 void RuqolaMainWindowTest::shouldHaveDefaultValues()
0038 {
0039     RuqolaMainWindow w;
0040     auto mSplitter = w.findChild<QSplitter *>(QStringLiteral("mSplitter"));
0041     QVERIFY(mSplitter);
0042     switchToMainWidget(w);
0043 
0044 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0045     auto statusAction = qobject_cast<QWidgetAction *>(w.action("status"));
0046 #else
0047     auto statusAction = qobject_cast<QWidgetAction *>(w.action(QStringLiteral("status")));
0048 #endif
0049     QVERIFY(statusAction);
0050     QVERIFY(!statusAction->text().isEmpty());
0051 
0052     auto status = statusAction->defaultWidget();
0053     QVERIFY(status);
0054     QVERIFY(status->layout());
0055 
0056     auto mStatusComboBox = status->findChild<StatusCombobox *>(QStringLiteral("mStatusComboBox"));
0057     QVERIFY(mStatusComboBox);
0058 
0059     auto label = status->findChild<QLabel *>(QStringLiteral("label"));
0060     QVERIFY(label);
0061     QVERIFY(!label->text().isEmpty());
0062 
0063     auto mStatusBarTypingMessage = w.findChild<QLabel *>(QStringLiteral("mStatusBarTypingMessage"));
0064     QVERIFY(mStatusBarTypingMessage);
0065     QCOMPARE(mStatusBarTypingMessage->textFormat(), Qt::RichText);
0066 
0067     auto mNotificationToolButton = w.findChild<QToolButton *>(QStringLiteral("mNotificationToolButton"));
0068     QVERIFY(mNotificationToolButton);
0069     QVERIFY(!mNotificationToolButton->toolTip().isEmpty());
0070     QVERIFY(mNotificationToolButton->isHidden());
0071     QVERIFY(mNotificationToolButton->autoRaise());
0072 }
0073 
0074 void RuqolaMainWindowTest::shouldRestoreSizes()
0075 {
0076     // Save
0077     QList<int> actualSizes;
0078     {
0079         RuqolaMainWindow w;
0080         switchToMainWidget(w);
0081         w.resize(800, 800);
0082         w.show();
0083 
0084         auto mSplitter = w.findChild<QSplitter *>(QStringLiteral("mSplitter"));
0085         QVERIFY(mSplitter);
0086         mSplitter->setSizes({100, 400});
0087         actualSizes = mSplitter->sizes(); // not exactly {100, 400} but more something like {167, 308}
0088     }
0089     // Restore
0090     {
0091         RuqolaMainWindow w;
0092         switchToMainWidget(w);
0093         QCOMPARE(w.size(), QSize(800, 800));
0094         w.show();
0095 
0096         auto mSplitter = w.findChild<QSplitter *>(QStringLiteral("mSplitter"));
0097         QVERIFY(mSplitter);
0098         QCOMPARE(mSplitter->sizes(), actualSizes);
0099     }
0100 }
0101 
0102 #include "moc_ruqolamainwindowtest.cpp"