File indexing completed on 2025-02-16 04:56:07

0001 /*
0002    SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "vacationeditwidgettest.h"
0008 #include "../vacationeditwidget.h"
0009 #include "../vacationmaillineedit.h"
0010 #include "vacation/vacationmailactionwidget.h"
0011 #include <KDateComboBox>
0012 #include <KTimeComboBox>
0013 #include <PimCommon/SpellCheckLineEdit>
0014 #include <QCheckBox>
0015 #include <QLabel>
0016 #include <QLineEdit>
0017 #include <QSpinBox>
0018 #include <QTest>
0019 #include <TextCustomEditor/PlainTextEditorWidget>
0020 
0021 VacationEditWidgetTest::VacationEditWidgetTest(QObject *parent)
0022     : QObject(parent)
0023 {
0024 }
0025 
0026 VacationEditWidgetTest::~VacationEditWidgetTest() = default;
0027 
0028 void VacationEditWidgetTest::shouldHaveDefaultValue()
0029 {
0030     KSieveUi::VacationEditWidget w;
0031     auto configureVacationLabel = w.findChild<QLabel *>(QStringLiteral("configureVacationLabel"));
0032     QVERIFY(configureVacationLabel);
0033     QVERIFY(!configureVacationLabel->text().isEmpty());
0034     auto mActiveCheck = w.findChild<QCheckBox *>(QStringLiteral("mActiveCheck"));
0035     QVERIFY(mActiveCheck);
0036     QVERIFY(!mActiveCheck->text().isEmpty());
0037     QVERIFY(!mActiveCheck->isChecked());
0038 
0039     auto mTextEdit = w.findChild<TextCustomEditor::PlainTextEditorWidget *>(QStringLiteral("mTextEdit"));
0040     QVERIFY(mTextEdit);
0041     QVERIFY(mTextEdit->toPlainText().isEmpty());
0042     auto mSubject = w.findChild<PimCommon::SpellCheckLineEdit *>(QStringLiteral("mSubject"));
0043     QVERIFY(mSubject);
0044     QVERIFY(mSubject->toPlainText().isEmpty());
0045 
0046     auto subjectOfVacationLabel = w.findChild<QLabel *>(QStringLiteral("subjectOfVacationLabel"));
0047     QVERIFY(subjectOfVacationLabel);
0048     QVERIFY(!subjectOfVacationLabel->text().isEmpty());
0049 
0050     auto mStartDate = w.findChild<KDateComboBox *>(QStringLiteral("mStartDate"));
0051     QVERIFY(mStartDate);
0052     QVERIFY(mStartDate->isEnabled());
0053 
0054     auto mStartTime = w.findChild<KTimeComboBox *>(QStringLiteral("mStartTime"));
0055     QVERIFY(mStartTime);
0056 
0057     auto mStartTimeActive = w.findChild<QCheckBox *>(QStringLiteral("mStartTimeActive"));
0058     QVERIFY(mStartTimeActive);
0059     QVERIFY(!mStartTimeActive->isChecked());
0060 
0061     auto mStartDateLabel = w.findChild<QLabel *>(QStringLiteral("mStartDateLabel"));
0062     QVERIFY(mStartDateLabel);
0063     QVERIFY(!mStartDateLabel->text().isEmpty());
0064 
0065     auto mEndDate = w.findChild<KDateComboBox *>(QStringLiteral("mEndDate"));
0066     QVERIFY(mEndDate);
0067 
0068     auto mEndTime = w.findChild<KTimeComboBox *>(QStringLiteral("mEndTime"));
0069     QVERIFY(mEndTime);
0070     QVERIFY(!mEndTime->isEnabled());
0071 
0072     auto mEndTimeActive = w.findChild<QCheckBox *>(QStringLiteral("mEndTimeActive"));
0073     QVERIFY(mEndTimeActive);
0074     QVERIFY(!mEndTimeActive->isChecked());
0075 
0076     auto mEndDateLabel = w.findChild<QLabel *>(QStringLiteral("mEndDateLabel"));
0077     QVERIFY(mEndDateLabel);
0078     QVERIFY(!mEndDateLabel->text().isEmpty());
0079 
0080     auto mIntervalSpin = w.findChild<QSpinBox *>(QStringLiteral("mIntervalSpin"));
0081     QVERIFY(mIntervalSpin);
0082 
0083     auto resendNotificationLabel = w.findChild<QLabel *>(QStringLiteral("resendNotificationLabel"));
0084     QVERIFY(resendNotificationLabel);
0085     QVERIFY(!resendNotificationLabel->text().isEmpty());
0086 
0087     auto mMailAliasesEdit = w.findChild<KSieveUi::VacationMailLineEdit *>(QStringLiteral("mMailAliasesEdit"));
0088     QVERIFY(mMailAliasesEdit);
0089     QVERIFY(mMailAliasesEdit->text().isEmpty());
0090     QVERIFY(mMailAliasesEdit->isClearButtonEnabled());
0091 
0092     auto sendResponseLabel = w.findChild<QLabel *>(QStringLiteral("sendResponseLabel"));
0093     QVERIFY(sendResponseLabel);
0094     QVERIFY(!sendResponseLabel->text().isEmpty());
0095 
0096     // Action for incoming mails
0097     auto mMailAction = w.findChild<QComboBox *>(QStringLiteral("mMailAction"));
0098     QVERIFY(mMailAction);
0099     QCOMPARE(mMailAction->count(), 4);
0100 
0101     auto mMailActionRecipient = w.findChild<KSieveUi::VacationMailActionWidget *>(QStringLiteral("mMailActionRecipient"));
0102     QVERIFY(mMailActionRecipient);
0103     bool ok;
0104     QVERIFY(mMailActionRecipient->mailActionRecipient(ok).isEmpty());
0105 
0106     auto actionIncomingMailsLabel = w.findChild<QLabel *>(QStringLiteral("actionIncomingMailsLabel"));
0107     QVERIFY(actionIncomingMailsLabel);
0108     QVERIFY(!actionIncomingMailsLabel->text().isEmpty());
0109 
0110     auto mSpamCheck = w.findChild<QCheckBox *>(QStringLiteral("mSpamCheck"));
0111     QVERIFY(mSpamCheck);
0112     QVERIFY(!mSpamCheck->text().isEmpty());
0113     QVERIFY(mSpamCheck->isChecked());
0114 
0115     auto mDomainCheck = w.findChild<QCheckBox *>(QStringLiteral("mDomainCheck"));
0116     QVERIFY(mDomainCheck);
0117     QVERIFY(!mDomainCheck->text().isEmpty());
0118     QVERIFY(!mDomainCheck->isChecked());
0119 
0120     auto mDomainEdit = w.findChild<QLineEdit *>(QStringLiteral("mDomainEdit"));
0121     QVERIFY(mDomainEdit);
0122     QVERIFY(mDomainEdit->text().isEmpty());
0123     QVERIFY(!mDomainEdit->isEnabled());
0124     QVERIFY(mDomainEdit->isClearButtonEnabled());
0125     QVERIFY(!w.changed());
0126 }
0127 
0128 void VacationEditWidgetTest::shouldGetValues()
0129 {
0130     KSieveUi::VacationEditWidget w;
0131     // QCheckBox *mActiveCheck = w.findChild<QCheckBox *>(QStringLiteral("mActiveCheck"));
0132 
0133     // KPIMTextEdit::PlainTextEditorWidget *mTextEdit = w.findChild<KPIMTextEdit::PlainTextEditorWidget *>(QStringLiteral("mTextEdit"));
0134     // QLineEdit *mSubject = w.findChild<QLineEdit *>(QStringLiteral("mSubject"));
0135 #if 0
0136     KDateComboBox *mStartDate = w.findChild<KDateComboBox *>(QStringLiteral("mStartDate"));
0137 
0138     QCheckBox *mStartTimeActive = w.findChild<QCheckBox *>(QStringLiteral("mStartTimeActive"));
0139 
0140     KDateComboBox *mEndDate = w.findChild<KDateComboBox *>(QStringLiteral("mEndDate"));
0141 
0142     KTimeComboBox *mEndTime = w.findChild<KTimeComboBox *>(QStringLiteral("mEndTime"));
0143 
0144     QCheckBox *mEndTimeActive = w.findChild<QCheckBox *>(QStringLiteral("mEndTimeActive"));
0145 
0146     QSpinBox *mIntervalSpin = w.findChild<QSpinBox *>(QStringLiteral("mIntervalSpin"));
0147 
0148     QLineEdit *mMailAliasesEdit = w.findChild<QLineEdit *>(QStringLiteral("mMailAliasesEdit"));
0149 #endif
0150 
0151     // QComboBox *mMailAction = w.findChild<QComboBox *>(QStringLiteral("mMailAction"));
0152     // QLineEdit *mMailActionRecipient = w.findChild<QLineEdit *>(QStringLiteral("mMailActionRecipient"));
0153 
0154     // QCheckBox *mSpamCheck = w.findChild<QCheckBox *>(QStringLiteral("mSpamCheck"));
0155     // QCheckBox *mDomainCheck = w.findChild<QCheckBox *>(QStringLiteral("mDomainCheck"));
0156 
0157     // QLineEdit *mDomainEdit = w.findChild<QLineEdit *>(QStringLiteral("mDomainEdit"));
0158 
0159     bool activateVacation = true;
0160     w.setActivateVacation(activateVacation);
0161     QCOMPARE(w.activateVacation(), activateVacation);
0162 
0163     bool domainChecked = true;
0164     w.setDomainCheck(domainChecked);
0165     QCOMPARE(w.domainCheck(), domainChecked);
0166 
0167     const QString message = QStringLiteral("foo bla");
0168     w.setMessageText(message);
0169     QCOMPARE(w.messageText(), message);
0170 
0171     const QString subject = QStringLiteral("dd");
0172     w.setSubject(subject);
0173     QCOMPARE(w.subject(), subject);
0174 
0175     const QString domain = QStringLiteral("ss");
0176     w.setDomainName(domain);
0177     QCOMPARE(w.domainName(), domain);
0178 
0179     const int notify = 8;
0180     w.setNotificationInterval(notify);
0181     QCOMPARE(w.notificationInterval(), notify);
0182 
0183 #if 0
0184     KMime::Types::AddrSpecList mailAliases() const;
0185     void setMailAliases(const KMime::Types::AddrSpecList &aliases);
0186     void setMailAliases(const QString &aliases);
0187 
0188     bool sendForSpam() const;
0189     void setSendForSpam(bool enable);
0190 
0191     QDate startDate() const;
0192     void setStartDate(const QDate &startDate);
0193 
0194     QTime startTime() const;
0195     void setStartTime(const QTime &startTime);
0196 
0197     QDate endDate() const;
0198     void setEndDate(const QDate &endDate);
0199 
0200     QTime endTime() const;
0201     void setEndTime(const QTime &endTime);
0202 
0203     VacationUtils::MailAction mailAction() const;
0204     QString mailActionRecipient() const;
0205     void setMailAction(VacationUtils::MailAction action, const QString &recipient);
0206 #endif
0207 }
0208 
0209 void VacationEditWidgetTest::shouldHideDateTime()
0210 {
0211     KSieveUi::VacationEditWidget w;
0212     w.show();
0213     auto mStartDate = w.findChild<KDateComboBox *>(QStringLiteral("mStartDate"));
0214     auto mStartTimeActive = w.findChild<QCheckBox *>(QStringLiteral("mStartTimeActive"));
0215     auto mEndDate = w.findChild<KDateComboBox *>(QStringLiteral("mEndDate"));
0216     auto mEndTime = w.findChild<KTimeComboBox *>(QStringLiteral("mEndTime"));
0217     auto mEndTimeActive = w.findChild<QCheckBox *>(QStringLiteral("mEndTimeActive"));
0218     auto mStartTime = w.findChild<KTimeComboBox *>(QStringLiteral("mStartTime"));
0219     w.enableDates(true);
0220     QVERIFY(mStartDate->isVisible());
0221     QVERIFY(mStartTimeActive->isVisible());
0222     QVERIFY(mEndDate->isVisible());
0223     QVERIFY(mEndTime->isVisible());
0224     QVERIFY(mEndTimeActive->isVisible());
0225     QVERIFY(mStartTime->isVisible());
0226 
0227     w.enableDates(false);
0228     QVERIFY(!mStartDate->isVisible());
0229     QVERIFY(!mStartTimeActive->isVisible());
0230     QVERIFY(!mEndDate->isVisible());
0231     QVERIFY(!mEndTime->isVisible());
0232     QVERIFY(!mEndTimeActive->isVisible());
0233     QVERIFY(!mStartTime->isVisible());
0234 }
0235 
0236 QTEST_MAIN(VacationEditWidgetTest)
0237 
0238 #include "moc_vacationeditwidgettest.cpp"