From 56a68ff8c80f439ff245e0be95464f4bf6e83d96 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 1 Feb 2016 18:08:13 -0600 Subject: add Settings tests for blacklisting apps' notifications --- tests/test-settings.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'tests/test-settings.cpp') diff --git a/tests/test-settings.cpp b/tests/test-settings.cpp index 3af9eab..d18b58a 100644 --- a/tests/test-settings.cpp +++ b/tests/test-settings.cpp @@ -22,6 +22,11 @@ #include #include +extern "C" +{ + #include +} + using namespace ayatana::indicator::datetime; /*** @@ -38,18 +43,26 @@ protected: std::shared_ptr m_live; std::shared_ptr m_settings; GSettings * m_gsettings; + GSettings * m_gsettings_cunh; void SetUp() override { super::SetUp(); m_gsettings = g_settings_new(SETTINGS_INTERFACE); + + if (ayatana_common_utils_is_lomiri()) + { + m_gsettings_cunh = g_settings_new(SETTINGS_CUNH_SCHEMA_ID); + } + m_live.reset(new LiveSettings); m_settings = std::dynamic_pointer_cast(m_live); } void TearDown() override { + g_clear_object(&m_gsettings_cunh); g_clear_object(&m_gsettings); m_settings.reset(); m_live.reset(); @@ -221,3 +234,39 @@ TEST_F(SettingsFixture, Locations) g_strfreev(tmp); EXPECT_EQ(bv, vtmp); } + +TEST_F(SettingsFixture, MutedApps) +{ + const auto key = SETTINGS_CUNH_BLACKLIST_S; + + struct { + std::string pkgname; + std::string appname; + } apps[] = { + { "", "lomiri-system-settings" }, + { "com.lomiri.calendar", "calendar" }, + { "com.lomiri.developer.webapps.webapp-facebook", "webapp-facebook" }, + { "com.lomiri.reminders", "reminders" } + }; + std::set> apps_set; + for (const auto& app : apps) + apps_set.insert(std::make_pair(app.pkgname, app.appname)); + + // test that changing Settings is reflected in the schema + m_settings->muted_apps.set(apps_set); + auto v = g_settings_get_value(m_gsettings_cunh, key); + auto str = g_variant_print(v, true); + EXPECT_STREQ("[('', 'lomiri-system-settings'), ('com.lomiri.calendar', 'calendar'), ('com.lomiri.developer.webapps.webapp-facebook', 'webapp-facebook'), ('com.lomiri.reminders', 'reminders')]", str); + g_clear_pointer(&str, g_free); + + // test that clearing the schema clears the settings + g_settings_reset(m_gsettings_cunh, key); + EXPECT_EQ(0, m_settings->muted_apps.get().size()); + + // test thst setting the schema updates the settings + g_settings_set_value(m_gsettings_cunh, key, v); + EXPECT_EQ(apps_set, m_settings->muted_apps.get()); + + // cleanup + g_clear_pointer(&v, g_variant_unref); +} -- cgit v1.2.3