File indexing completed on 2024-09-22 04:50:44

0001 /*
0002   SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
0003 
0004   SPDX-License-Identifier: GPL-2.0-only
0005 */
0006 
0007 #include "statusbarlabeltoggledstatetest.h"
0008 #include "MessageComposer/StatusBarLabelToggledState"
0009 #include <QSignalSpy>
0010 #include <QTest>
0011 #include <qtestmouse.h>
0012 
0013 QTEST_MAIN(StatusBarLabelToggledStateTest)
0014 
0015 StatusBarLabelToggledStateTest::StatusBarLabelToggledStateTest(QObject *parent)
0016     : QObject(parent)
0017 {
0018 }
0019 
0020 StatusBarLabelToggledStateTest::~StatusBarLabelToggledStateTest() = default;
0021 
0022 void StatusBarLabelToggledStateTest::shouldHasDefaultValue()
0023 {
0024     MessageComposer::StatusBarLabelToggledState widget;
0025     widget.setStateString(QStringLiteral("toggle"), QStringLiteral("untoggle"));
0026     QVERIFY(!widget.toggleMode());
0027 }
0028 
0029 void StatusBarLabelToggledStateTest::shouldChangeState()
0030 {
0031     MessageComposer::StatusBarLabelToggledState widget;
0032     widget.setStateString(QStringLiteral("toggle"), QStringLiteral("untoggle"));
0033     widget.setToggleMode(true);
0034     QVERIFY(widget.toggleMode());
0035     QVERIFY(!widget.text().isEmpty());
0036 
0037     widget.setToggleMode(true);
0038     QVERIFY(widget.toggleMode());
0039 
0040     widget.setToggleMode(false);
0041     QVERIFY(!widget.toggleMode());
0042 }
0043 
0044 void StatusBarLabelToggledStateTest::shouldEmitSignalWhenChangeState()
0045 {
0046     MessageComposer::StatusBarLabelToggledState widget;
0047     widget.setStateString(QStringLiteral("toggle"), QStringLiteral("untoggle"));
0048     QSignalSpy spy(&widget, &MessageComposer::StatusBarLabelToggledState::toggleModeChanged);
0049     widget.setToggleMode(true);
0050     QCOMPARE(spy.count(), 1);
0051 
0052     widget.setToggleMode(false);
0053     QCOMPARE(spy.count(), 2);
0054 }
0055 
0056 void StatusBarLabelToggledStateTest::shouldNotEmitSignalWhenWeDontChangeState()
0057 {
0058     MessageComposer::StatusBarLabelToggledState widget;
0059     widget.setStateString(QStringLiteral("toggle"), QStringLiteral("untoggle"));
0060     QSignalSpy spy(&widget, &MessageComposer::StatusBarLabelToggledState::toggleModeChanged);
0061     widget.setToggleMode(false);
0062     QCOMPARE(spy.count(), 0);
0063 
0064     widget.setToggleMode(true);
0065     QCOMPARE(spy.count(), 1);
0066 
0067     widget.setToggleMode(true);
0068     QCOMPARE(spy.count(), 1);
0069 }
0070 
0071 void StatusBarLabelToggledStateTest::shouldEmitSignalWhenClickOnLabel()
0072 {
0073     MessageComposer::StatusBarLabelToggledState widget;
0074     widget.setStateString(QStringLiteral("toggle"), QStringLiteral("untoggle"));
0075     QSignalSpy spy(&widget, &MessageComposer::StatusBarLabelToggledState::toggleModeChanged);
0076     widget.show();
0077     QVERIFY(QTest::qWaitForWindowExposed(&widget));
0078     QTest::mouseClick(&widget, Qt::LeftButton);
0079     QCOMPARE(spy.count(), 1);
0080 
0081     QTest::mouseClick(&widget, Qt::LeftButton);
0082     QCOMPARE(spy.count(), 2);
0083 }
0084 
0085 void StatusBarLabelToggledStateTest::shouldChangeTestWhenStateChanged()
0086 {
0087     MessageComposer::StatusBarLabelToggledState widget;
0088     widget.setStateString(QStringLiteral("toggle"), QStringLiteral("untoggle"));
0089     const QString initialText = widget.text();
0090     widget.setToggleMode(true);
0091     const QString newText = widget.text();
0092     QVERIFY(initialText != newText);
0093 
0094     widget.setToggleMode(false);
0095     QCOMPARE(widget.text(), initialText);
0096 
0097     widget.setToggleMode(true);
0098     QCOMPARE(widget.text(), newText);
0099 }
0100 
0101 #include "moc_statusbarlabeltoggledstatetest.cpp"