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"