aboutsummaryrefslogtreecommitdiff
path: root/tests/test-notification.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-notification.cpp')
-rw-r--r--tests/test-notification.cpp57
1 files changed, 42 insertions, 15 deletions
diff --git a/tests/test-notification.cpp b/tests/test-notification.cpp
index c1773e4..5a2682e 100644
--- a/tests/test-notification.cpp
+++ b/tests/test-notification.cpp
@@ -58,11 +58,13 @@ TEST_F(NotificationFixture,Notification)
// combinatorial factor #1: event type
struct {
Appointment appt;
+ const char* icon_name;
+ const char* prefix;
bool expected_notify_called;
bool expected_vibrate_called;
} test_appts[] = {
- { appt, true, true },
- { ualarm, true, true }
+ { appt, "reminder", "Event", true, true },
+ { ualarm, "alarm-clock", "Alarm", true, true }
};
// combinatorial factor #2: indicator-datetime's haptic mode
@@ -90,11 +92,13 @@ TEST_F(NotificationFixture,Notification)
const std::set<std::pair<std::string,std::string>> blacklist_empty;
struct {
std::set<std::pair<std::string,std::string>> muted_apps; // apps that should not trigger notifications
- bool expected_notify_called; // do we expect the notification tho show?
- bool expected_vibrate_called; // do we expect the phone to vibrate?
+ std::set<Appointment::Type> expected_notify_called; // do we expect the notification to show?
+ std::set<Appointment::Type> expected_vibrate_called; // do we expect the phone to vibrate?
} test_muted_apps[] = {
- { blacklist_calendar, false, false },
- { blacklist_empty, true, true }
+ { blacklist_empty, std::set<Appointment::Type>{ Appointment::Type::UBUNTU_ALARM, Appointment::Type::EVENT },
+ std::set<Appointment::Type>{ Appointment::Type::UBUNTU_ALARM, Appointment::Type::EVENT } },
+ { blacklist_calendar, std::set<Appointment::Type>{ Appointment::Type::UBUNTU_ALARM },
+ std::set<Appointment::Type>{ Appointment::Type::UBUNTU_ALARM } }
};
for (const auto& test_appt : test_appts)
@@ -109,12 +113,12 @@ TEST_F(NotificationFixture,Notification)
const bool expected_notify_called = test_appt.expected_notify_called
&& test_vibes.expected_notify_called
- && test_muted.expected_notify_called
+ && (test_muted.expected_notify_called.count(test_appt.appt.type) > 0)
&& test_haptic.expected_notify_called;
const bool expected_vibrate_called = test_appt.expected_vibrate_called
&& test_vibes.expected_vibrate_called
- && test_muted.expected_vibrate_called
+ && (test_muted.expected_vibrate_called.count(test_appt.appt.type) > 0)
&& test_haptic.expected_vibrate_called;
// clear out any previous iterations' noise
@@ -136,17 +140,40 @@ TEST_F(NotificationFixture,Notification)
wait_msec(100);
// run the test
- (*snap)(appt, appt.alarms.front(), func, func);
+ (*snap)(test_appt.appt, appt.alarms.front(), func, func);
wait_msec(100);
// test that the notification was as expected
- const bool notify_called = dbus_test_dbus_mock_object_check_method_call(notify_mock,
- notify_obj,
- METHOD_NOTIFY,
- nullptr,
- &error);
+ guint num_notify_calls = 0;
+ const auto notify_calls = dbus_test_dbus_mock_object_get_method_calls(notify_mock,
+ notify_obj,
+ METHOD_NOTIFY,
+ &num_notify_calls,
+ &error);
g_assert_no_error(error);
- EXPECT_EQ(expected_notify_called, notify_called);
+ EXPECT_EQ((expected_notify_called?1:0), num_notify_calls);
+ if (num_notify_calls > 0)
+ {
+ // test that Notify was called with the app_name
+ const gchar* app_name {nullptr};
+ g_variant_get_child(notify_calls[0].params, 0, "&s", &app_name);
+ ASSERT_STREQ(APP_NAME, app_name);
+
+ // test that Notify was called with the type-appropriate icon
+ const gchar* icon_name {nullptr};
+ g_variant_get_child(notify_calls[0].params, 2, "&s", &icon_name);
+ ASSERT_STREQ(test_appt.icon_name, icon_name);
+
+ // test that the Notification title has the correct prefix
+ const gchar* title {nullptr};
+ g_variant_get_child(notify_calls[0].params, 3, "&s", &title);
+ ASSERT_TRUE(g_str_has_prefix(title, test_appt.prefix));
+
+ // test that Notify was called with the appointment's body
+ const gchar* body {nullptr};
+ g_variant_get_child(notify_calls[0].params, 4, "&s", &body);
+ ASSERT_STREQ(test_appt.appt.summary.c_str(), body);
+ }
// test that the vibration was as expected
const bool vibrate_called = dbus_test_dbus_mock_object_check_method_call(haptic_mock,