File indexing completed on 2025-02-02 04:51:33

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "translatesavesettingsjobtest.h"
0008 #include "autotranslate/translatesavesettingsjob.h"
0009 #include "ruqola_restapi_helper.h"
0010 #include <QJsonDocument>
0011 QTEST_GUILESS_MAIN(TranslateSaveSettingsJobTest)
0012 using namespace RocketChatRestApi;
0013 TranslateSaveSettingsJobTest::TranslateSaveSettingsJobTest(QObject *parent)
0014     : QObject(parent)
0015 {
0016 }
0017 
0018 void TranslateSaveSettingsJobTest::shouldHaveDefaultValue()
0019 {
0020     TranslateSaveSettingsJob job;
0021     verifyDefaultValue(&job);
0022     QVERIFY(job.requireHttpAuthentication());
0023     QVERIFY(job.roomId().isEmpty());
0024     QVERIFY(job.language().isEmpty());
0025     QCOMPARE(job.type(), TranslateSaveSettingsJob::Undefined);
0026     QVERIFY(!job.autoTranslate());
0027     QVERIFY(!job.hasQueryParameterSupport());
0028     QVERIFY(!job.requireTwoFactorAuthentication());
0029 }
0030 
0031 void TranslateSaveSettingsJobTest::shouldGenerateRequest()
0032 {
0033     TranslateSaveSettingsJob job;
0034     QNetworkRequest request = QNetworkRequest(QUrl());
0035     verifyAuthentication(&job, request);
0036     QCOMPARE(request.url(), QUrl(QStringLiteral("http://www.kde.org/api/v1/autotranslate.saveSettings")));
0037     QCOMPARE(request.header(QNetworkRequest::ContentTypeHeader).toString(), QStringLiteral("application/json"));
0038 }
0039 
0040 void TranslateSaveSettingsJobTest::shouldGenerateJson()
0041 {
0042     TranslateSaveSettingsJob job;
0043     const QString roomId = QStringLiteral("foo1");
0044     job.setRoomId(roomId);
0045     const QString targetLanguage = QStringLiteral("bla");
0046     job.setLanguage(targetLanguage);
0047     TranslateSaveSettingsJob::SettingType type = TranslateSaveSettingsJob::AutoTranslateSetting;
0048     job.setType(type);
0049     bool autoTranslate = true;
0050     job.setAutoTranslate(autoTranslate);
0051 
0052     QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0053              QStringLiteral("{\"field\":\"%1\",\"roomId\":\"%2\",\"value\":true}").arg(QStringLiteral("autoTranslate"), roomId).toLatin1());
0054     type = TranslateSaveSettingsJob::LanguageSetting;
0055     job.setType(type);
0056     QCOMPARE(job.json().toJson(QJsonDocument::Compact),
0057              QStringLiteral("{\"field\":\"%1\",\"roomId\":\"%2\",\"value\":\"%3\"}")
0058                  .arg(QStringLiteral("autoTranslateLanguage"), roomId, targetLanguage)
0059                  .toLatin1());
0060 }
0061 
0062 void TranslateSaveSettingsJobTest::shouldNotStarting()
0063 {
0064     TranslateSaveSettingsJob job;
0065 
0066     RestApiMethod method;
0067     method.setServerUrl(QStringLiteral("http://www.kde.org"));
0068     job.setRestApiMethod(&method);
0069 
0070     QNetworkAccessManager mNetworkAccessManager;
0071     job.setNetworkAccessManager(&mNetworkAccessManager);
0072     QVERIFY(!job.canStart());
0073     const QString auth = QStringLiteral("foo");
0074     const QString userId = QStringLiteral("foo");
0075     job.setAuthToken(auth);
0076     QVERIFY(!job.canStart());
0077     job.setUserId(userId);
0078     QVERIFY(!job.canStart());
0079     TranslateSaveSettingsJob::SettingType type = TranslateSaveSettingsJob::AutoTranslateSetting;
0080     job.setType(type);
0081 
0082     const QString roomId = QStringLiteral("foo1");
0083     job.setRoomId(roomId);
0084     QVERIFY(job.canStart());
0085     type = TranslateSaveSettingsJob::LanguageSetting;
0086     job.setType(type);
0087     QVERIFY(!job.canStart());
0088     const QString targetLanguage = QStringLiteral("bla");
0089     job.setLanguage(targetLanguage);
0090     QVERIFY(job.canStart());
0091 }
0092 
0093 #include "moc_translatesavesettingsjobtest.cpp"