refactor: port gui/ScreenTest to QtTests

remove TEST_ENV items from Screen
This commit is contained in:
sithlord48 2025-04-19 23:03:08 -04:00 committed by Nick Bolton
parent b8c6d1b58f
commit 632be4b240
7 changed files with 68 additions and 82 deletions

View file

@ -37,12 +37,6 @@ public:
Screen &operator&(Screen const &) = delete;
Screen &operator&(Screen &&) = delete;
#ifdef TEST_ENV
Screen() : m_mock(true)
{
}
#endif
//! @name manipulators
//@{

View file

@ -1,20 +0,0 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2024 Symless Ltd.
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#pragma once
#include <QCoreApplication>
static int argc = 0; // NOLINT NOSONAR
static char **argv = nullptr; // NOLINT NOSONAR
class TestQtCoreApp : public QCoreApplication
{
public:
explicit TestQtCoreApp() : QCoreApplication(argc, argv)
{
}
};

View file

@ -1,56 +0,0 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2024 Symless Ltd.
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#include "gui/config/Screen.h"
#include "common/QSettingsProxy.h"
#include "shared/gui/TestQtCoreApp.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
using namespace testing;
class QSettingsProxyMock : public QSettingsProxy
{
public:
MOCK_METHOD(int, beginReadArray, (const QString &prefix), (override));
MOCK_METHOD(void, beginWriteArray, (const QString &prefix), (override));
MOCK_METHOD(void, setArrayIndex, (int i), (override));
MOCK_METHOD(QVariant, value, (const QString &key), (const, override));
MOCK_METHOD(QVariant, value, (const QString &key, const QVariant &defaultValue), (const, override));
MOCK_METHOD(void, endArray, (), (override));
MOCK_METHOD(void, setValue, (const QString &key, const QVariant &value), (override));
MOCK_METHOD(void, beginGroup, (const QString &prefix), (override));
MOCK_METHOD(void, endGroup, (), (override));
MOCK_METHOD(void, remove, (const QString &key), (override));
MOCK_METHOD(bool, isWritable, (), (const, override));
MOCK_METHOD(bool, contains, (const QString &key), (const, override));
};
TEST(ScreenTests, loadSettings_whenHasSetting_readsArray)
{
TestQtCoreApp app;
NiceMock<QSettingsProxyMock> settings;
Screen screen;
ON_CALL(settings, value(_)).WillByDefault(Return("stub"));
EXPECT_CALL(settings, beginReadArray(_)).Times(4);
screen.loadSettings(settings);
}
TEST(ScreenTests, saveSettings_whenNameIsSet_writesArray)
{
TestQtCoreApp app;
NiceMock<QSettingsProxyMock> settings;
Screen screen;
screen.setName("stub");
EXPECT_CALL(settings, beginWriteArray(_)).Times(4);
screen.saveSettings(settings);
}

View file

@ -1,6 +1,7 @@
# SPDX-FileCopyrightText: 2025 Deskflow Developers
# SPDX-License-Identifier: MIT
add_subdirectory(config)
add_subdirectory(core)
create_test(

View file

@ -0,0 +1,9 @@
# SPDX-FileCopyrightText: 2025 Deskflow Developers
# SPDX-License-Identifier: MIT
create_test(
NAME ScreenTests
DEPENDS gui
SOURCE ScreenTests.cpp
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/gui"
)

View file

@ -0,0 +1,38 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello <sithlord48@gmail.com>
* SPDX-FileCopyrightText: (C) 2024 Symless Ltd.
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#include "ScreenTests.h"
#include "../../../lib/common/Settings.h"
#include "../../../lib/gui/config/Screen.h"
void ScreenTests::initTestCase()
{
QDir dir;
QVERIFY(dir.mkpath(m_settingsPath));
QFile oldSettings(m_settingsFile);
if (oldSettings.exists())
oldSettings.remove();
Settings::setSettingFile(m_settingsFile);
}
void ScreenTests::basicFunctionality()
{
Screen screen;
QVERIFY(screen.isNull());
screen.setName("stub");
QVERIFY(!screen.isNull());
screen.saveSettings(Settings::proxy());
screen.loadSettings(Settings::proxy());
QCOMPARE("stub", screen.name());
}
QTEST_MAIN(ScreenTests)

View file

@ -0,0 +1,20 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello <sithlord48@gmail.com>
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#include <QTest>
class ScreenTests : public QObject
{
Q_OBJECT
private slots:
// Test are run in order top to bottom
void initTestCase();
void basicFunctionality();
private:
inline static const QString m_settingsPath = QStringLiteral("tmp/test");
inline static const QString m_settingsFile = QStringLiteral("%1/Deskflow.conf").arg(m_settingsPath);
};