From 9efd56c64fe848b4557dccbdac244571d97bfc77 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 23 Aug 2017 20:49:37 -0600 Subject: A single test for all accountsettings. Only the imaptest was working anyways and all of them tested the same things. --- framework/src/domain/settings/tests/CMakeLists.txt | 9 ++ .../src/domain/settings/tests/settingstest.cpp | 155 +++++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 framework/src/domain/settings/tests/CMakeLists.txt create mode 100644 framework/src/domain/settings/tests/settingstest.cpp (limited to 'framework/src/domain/settings/tests') diff --git a/framework/src/domain/settings/tests/CMakeLists.txt b/framework/src/domain/settings/tests/CMakeLists.txt new file mode 100644 index 00000000..9cb3f37c --- /dev/null +++ b/framework/src/domain/settings/tests/CMakeLists.txt @@ -0,0 +1,9 @@ +include_directories(../) +add_executable(settingstest settingstest.cpp) +add_test(settingstest settingstest) +target_link_libraries(settingstest + frameworkplugin + Qt5::Core + Qt5::Concurrent + Qt5::Test +) diff --git a/framework/src/domain/settings/tests/settingstest.cpp b/framework/src/domain/settings/tests/settingstest.cpp new file mode 100644 index 00000000..2d997468 --- /dev/null +++ b/framework/src/domain/settings/tests/settingstest.cpp @@ -0,0 +1,155 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +class TestSettings : public AccountSettings +{ + Q_OBJECT + +public: + TestSettings(QObject *parent = 0) + : AccountSettings{parent} + {} + + Q_INVOKABLE virtual void load() Q_DECL_OVERRIDE + { + loadAccount(); + loadImapResource(); + loadMailtransportResource(); + loadIdentity(); + } + + Q_INVOKABLE virtual void save() Q_DECL_OVERRIDE + { + saveAccount(); + saveImapResource(); + saveMailtransportResource(); + saveIdentity(); + } + + Q_INVOKABLE virtual void remove() Q_DECL_OVERRIDE + { + removeResource(mMailtransportIdentifier); + removeResource(mImapIdentifier); + removeIdentity(); + removeAccount(); + } +}; + +class SettingsTest : public QObject +{ + Q_OBJECT +private slots: + + void initTestCase() + { + Sink::Test::initTest(); + } + + void testLoad() + { + auto accountId = "accountid"; + auto imapServer = QString("imapserver"); + auto imapUsername = QString("imapName"); + auto imapPassword = QString("imapPw"); + auto smtpServer = QString("smtpserver"); + auto smtpUsername = QString("smtpName"); + auto smtpPassword = QString("smtpPw"); + auto username = QString("username"); + auto emailAddress = QString("emailAddress"); + + TestSettings settings; + settings.setAccountIdentifier(accountId); + settings.setProperty("imapServer", imapServer); + settings.setProperty("imapUsername", imapUsername); + settings.setProperty("imapPassword", imapPassword); + settings.setProperty("smtpServer", smtpServer); + settings.setProperty("smtpUsername", smtpUsername); + settings.setProperty("smtpPassword", smtpPassword); + settings.setProperty("userName", username); + settings.setProperty("emailAddress", emailAddress); + settings.save(); + + Sink::Store::fetchAll(Sink::Query()).then([](const QList &resources) { + QCOMPARE(resources.size(), 2); + }) + .exec().waitForFinished(); + + //Ensure we can read back all the information using the accountid + { + TestSettings readSettings; + QSignalSpy spy(&readSettings, &TestSettings::imapResourceChanged); + QSignalSpy spy1(&readSettings, &TestSettings::smtpResourceChanged); + readSettings.setAccountIdentifier(accountId); + //Once for clear and once for the new setting + QTRY_COMPARE(spy.count(), 2); + QTRY_COMPARE(spy1.count(), 2); + QVERIFY(!readSettings.accountIdentifier().isEmpty()); + QCOMPARE(readSettings.property("imapServer").toString(), imapServer); + QCOMPARE(readSettings.property("imapUsername").toString(), imapUsername); + QCOMPARE(readSettings.property("imapPassword").toString(), imapPassword); + QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer); + QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername); + QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword); + QCOMPARE(readSettings.property("userName").toString(), username); + QCOMPARE(readSettings.property("emailAddress").toString(), emailAddress); + } + + //Modify all settings + { + settings.setProperty("imapServer", imapServer + "mod"); + settings.setProperty("imapUsername", imapUsername + "mod"); + settings.setProperty("imapPassword", imapPassword + "mod"); + settings.setProperty("smtpServer", smtpServer + "mod"); + settings.setProperty("smtpUsername", smtpUsername + "mod"); + settings.setProperty("smtpPassword", smtpPassword + "mod"); + settings.setProperty("userName", username + "mod"); + settings.setProperty("emailAddress", emailAddress + "mod"); + settings.save(); + } + + //Read back settings again + { + TestSettings readSettings; + QSignalSpy spy(&readSettings, &TestSettings::imapResourceChanged); + QSignalSpy spy1(&readSettings, &TestSettings::smtpResourceChanged); + readSettings.setAccountIdentifier(accountId); + //Once for clear and once for the new setting + QTRY_COMPARE(spy.count(), 2); + QTRY_COMPARE(spy1.count(), 2); + QVERIFY(!readSettings.accountIdentifier().isEmpty()); + QCOMPARE(readSettings.property("imapServer").toString(), imapServer + "mod"); + QCOMPARE(readSettings.property("imapUsername").toString(), imapUsername + "mod"); + QCOMPARE(readSettings.property("imapPassword").toString(), imapPassword + "mod"); + QCOMPARE(readSettings.property("smtpServer").toString(), smtpServer + "mod"); + QCOMPARE(readSettings.property("smtpUsername").toString(), smtpUsername + "mod"); + QCOMPARE(readSettings.property("smtpPassword").toString(), smtpPassword + "mod"); + QCOMPARE(readSettings.property("userName").toString(), username + "mod"); + QCOMPARE(readSettings.property("emailAddress").toString(), emailAddress + "mod"); + } + + { + TestSettings settings; + QSignalSpy spy(&settings, &TestSettings::imapResourceChanged); + settings.setAccountIdentifier(accountId); + QTRY_COMPARE(spy.count(), 2); + settings.remove(); + } + + Sink::Store::fetchAll(Sink::Query()).then([](const QList &resources) { + QCOMPARE(resources.size(), 0); + }) + .exec().waitForFinished(); + } +}; + +QTEST_GUILESS_MAIN(SettingsTest) +#include "settingstest.moc" -- cgit v1.2.3