2#include <QtCore/QLoggingCategory>
3#include <QtCore/QObject>
6#include "wakatimeconfig.h"
8Q_DECLARE_LOGGING_CATEGORY(gLogWakaTimeConfigTest)
9Q_LOGGING_CATEGORY(gLogWakaTimeConfigTest,
"wakatime-config-test")
11class WakaTimeConfigTest : public QObject {
15 WakaTimeConfigTest(QObject *parent =
nullptr);
16 ~WakaTimeConfigTest()
override;
21 void testConfigureDialogKeepsPointer();
22 void testHideFilenames();
24 void testShowDialogClearApiKey();
25 void testShowDialogDoesNothingIfNotConfigured();
28WakaTimeConfigTest::WakaTimeConfigTest(QObject *parent) : QObject(parent) {
30 QDir tempDir(QDir::tempPath() + QDir::separator() + QStringLiteral(
"kate-wakatime-test"));
31 qputenv(
"HOME", tempDir.absolutePath().toUtf8());
34WakaTimeConfigTest::~WakaTimeConfigTest() {
37void WakaTimeConfigTest::testInit() {
39 QVERIFY(config.config_->fileName().endsWith(QStringLiteral(
".wakatime.cfg")));
40 QVERIFY(config.config_->fileName().startsWith(QDir::tempPath()));
43void WakaTimeConfigTest::testApiKey() {
45 QString apiKey = QStringLiteral(
"test_api_key");
47 QCOMPARE(config.
apiKey(), apiKey);
50 QCOMPARE(newConfig.
apiKey(), apiKey);
53void WakaTimeConfigTest::testApiUrl() {
55 QString apiUrl = QStringLiteral(
"https://example.com/api/v1/");
57 QCOMPARE(config.
apiUrl(), apiUrl);
60 QCOMPARE(newConfig.
apiUrl(), apiUrl);
63void WakaTimeConfigTest::testHideFilenames() {
65 bool hideFilenames =
true;
73void WakaTimeConfigTest::testShowDialogClearApiKey() {
76 QVERIFY(config.dialog_ !=
nullptr);
77 QVERIFY(!config.
apiKey().isEmpty());
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));
94 QVERIFY(config.
apiKey().isEmpty());
97void WakaTimeConfigTest::testConfigureDialogKeepsPointer() {
100 QVERIFY(config.dialog_ !=
nullptr);
101 QDialog *oldDialog = config.dialog_;
103 QCOMPARE(config.dialog_, oldDialog);
106void WakaTimeConfigTest::testShowDialogDoesNothingIfNotConfigured() {
108 QVERIFY(config.dialog_ ==
nullptr);
114QTEST_MAIN(WakaTimeConfigTest)
116#include "configtest.moc"
void setApiKey(const QString &key)
void setApiUrl(const QString &url)
void setHideFilenames(bool hide)
bool hideFilenames() const
void configureDialog(QWidget *parent=nullptr, Qt::WindowFlags flags=Qt::WindowFlags())