ktexteditor_wakatime v1.5.1
Kate plugin to interface with WakaTime.
Loading...
Searching...
No Matches
configtest.cpp
1// SPDX-License-Identifier: MIT
2#include <QtCore/QLoggingCategory>
3#include <QtCore/QObject>
4#include <QtTest/QTest>
5
6#include "wakatimeconfig.h"
7
8Q_DECLARE_LOGGING_CATEGORY(gLogWakaTimeConfigTest)
9Q_LOGGING_CATEGORY(gLogWakaTimeConfigTest, "wakatime-config-test")
10
11class WakaTimeConfigTest : public QObject {
12 Q_OBJECT
13
14public:
15 WakaTimeConfigTest(QObject *parent = nullptr);
16 ~WakaTimeConfigTest() override;
17
18private Q_SLOTS:
19 void testApiKey();
20 void testApiUrl();
21 void testConfigureDialogKeepsPointer();
22 void testHideFilenames();
23 void testInit();
24 void testShowDialogClearApiKey();
25 void testShowDialogDoesNothingIfNotConfigured();
26};
27
28WakaTimeConfigTest::WakaTimeConfigTest(QObject *parent) : QObject(parent) {
29 Q_UNUSED(parent);
30 QDir tempDir(QDir::tempPath() + QDir::separator() + QStringLiteral("kate-wakatime-test"));
31 qputenv("HOME", tempDir.absolutePath().toUtf8());
32}
33
34WakaTimeConfigTest::~WakaTimeConfigTest() {
35}
36
37void WakaTimeConfigTest::testInit() {
38 WakaTimeConfig config;
39 QVERIFY(config.config_->fileName().endsWith(QStringLiteral(".wakatime.cfg")));
40 QVERIFY(config.config_->fileName().startsWith(QDir::tempPath()));
41}
42
43void WakaTimeConfigTest::testApiKey() {
44 WakaTimeConfig config;
45 QString apiKey = QStringLiteral("test_api_key");
46 config.setApiKey(apiKey);
47 QCOMPARE(config.apiKey(), apiKey);
48 config.save();
49 WakaTimeConfig newConfig;
50 QCOMPARE(newConfig.apiKey(), apiKey);
51}
52
53void WakaTimeConfigTest::testApiUrl() {
54 WakaTimeConfig config;
55 QString apiUrl = QStringLiteral("https://example.com/api/v1/");
56 config.setApiUrl(apiUrl);
57 QCOMPARE(config.apiUrl(), apiUrl);
58 config.save();
59 WakaTimeConfig newConfig;
60 QCOMPARE(newConfig.apiUrl(), apiUrl);
61}
62
63void WakaTimeConfigTest::testHideFilenames() {
64 WakaTimeConfig config;
65 bool hideFilenames = true;
66 config.setHideFilenames(hideFilenames);
67 QCOMPARE(config.hideFilenames(), hideFilenames);
68 config.save();
69 WakaTimeConfig newConfig;
70 QCOMPARE(newConfig.hideFilenames(), hideFilenames);
71}
72
73void WakaTimeConfigTest::testShowDialogClearApiKey() {
74 WakaTimeConfig config;
75 config.configureDialog();
76 QVERIFY(config.dialog_ != nullptr);
77 QVERIFY(!config.apiKey().isEmpty());
78 // Ctrl+A to select all text in the API key field and delete it.
79 QApplication::postEvent(
80 config.ui_.lineEdit_apiKey,
81 new QKeyEvent(QEvent::KeyPress, Qt::Key_A, Qt::KeyboardModifier::ControlModifier));
82 QApplication::postEvent(
83 config.ui_.lineEdit_apiKey,
84 new QKeyEvent(QEvent::KeyRelease, Qt::Key_A, Qt::KeyboardModifier::ControlModifier));
85 QApplication::postEvent(config.ui_.lineEdit_apiKey,
86 new QKeyEvent(QEvent::KeyPress, Qt::Key_Delete, Qt::NoModifier));
87 QApplication::postEvent(config.ui_.lineEdit_apiKey,
88 new QKeyEvent(QEvent::KeyRelease, Qt::Key_Delete, Qt::NoModifier));
89 QApplication::postEvent(config.ui_.lineEdit_apiKey,
90 new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier));
91 QApplication::postEvent(config.ui_.lineEdit_apiKey,
92 new QKeyEvent(QEvent::KeyRelease, Qt::Key_Return, Qt::NoModifier));
93 config.showDialog();
94 QVERIFY(config.apiKey().isEmpty());
95}
96
97void WakaTimeConfigTest::testConfigureDialogKeepsPointer() {
98 WakaTimeConfig config;
99 config.configureDialog();
100 QVERIFY(config.dialog_ != nullptr);
101 QDialog *oldDialog = config.dialog_;
102 config.configureDialog();
103 QCOMPARE(config.dialog_, oldDialog);
104}
105
106void WakaTimeConfigTest::testShowDialogDoesNothingIfNotConfigured() {
107 WakaTimeConfig config;
108 QVERIFY(config.dialog_ == nullptr);
109 // If the dialog is not configured, this will not hang on dialog_.exec() but instead returns
110 // immediately.
111 config.showDialog();
112}
113
114QTEST_MAIN(WakaTimeConfigTest)
115
116#include "configtest.moc"
void setApiKey(const QString &key)
QString apiUrl() const
void setApiUrl(const QString &url)
QString apiKey() const
void setHideFilenames(bool hide)
bool hideFilenames() const
void configureDialog(QWidget *parent=nullptr, Qt::WindowFlags flags=Qt::WindowFlags())
void save() const