aboutsummaryrefslogtreecommitdiff
path: root/tests/indicator-test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/indicator-test.cpp')
-rw-r--r--tests/indicator-test.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/indicator-test.cpp b/tests/indicator-test.cpp
index 2a711f0..d8c79df 100644
--- a/tests/indicator-test.cpp
+++ b/tests/indicator-test.cpp
@@ -90,7 +90,57 @@ TEST_F(IndicatorTest, SingleMessage) {
setMenu("/com/canonical/indicator/messages/phone");
EXPECT_EVENTUALLY_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "x-canonical-type", "com.canonical.indicator.messages.messageitem");
+ EXPECT_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "label", "Test Title");
EXPECT_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "x-canonical-message-id", "testid");
EXPECT_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "x-canonical-subtitle", "A subtitle too");
EXPECT_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "x-canonical-text", "You only like me for my body");
}
+
+static void
+messageReplyActivate (GObject * obj, gchar * name, GVariant * value, gpointer user_data) {
+ std::string * res = reinterpret_cast<std::string *>(user_data);
+ *res = g_variant_get_string(value, nullptr);
+}
+
+TEST_F(IndicatorTest, MessageReply) {
+ setActions("/com/canonical/indicator/messages");
+
+ auto app = std::shared_ptr<MessagingMenuApp>(messaging_menu_app_new("test.desktop"), [](MessagingMenuApp * app) { g_clear_object(&app); });
+ ASSERT_NE(nullptr, app);
+ messaging_menu_app_register(app.get());
+
+ EXPECT_EVENTUALLY_ACTION_EXISTS("test.launch");
+
+ auto msg = std::shared_ptr<MessagingMenuMessage>(messaging_menu_message_new(
+ "messageid",
+ nullptr, /* no icon */
+ "Reply Message",
+ "A message to reply to",
+ "In-app replies are for wimps, reply here to save yourself time and be cool.",
+ 0), [](MessagingMenuMessage * msg) { g_clear_object(&msg); });
+ messaging_menu_message_add_action(msg.get(),
+ "replyid",
+ "Reply",
+ G_VARIANT_TYPE_STRING,
+ nullptr);
+ messaging_menu_app_append_message(app.get(), msg.get(), nullptr, FALSE);
+
+ EXPECT_EVENTUALLY_ACTION_EXISTS("test.msg.messageid");
+ EXPECT_EVENTUALLY_ACTION_EXISTS("test.msg-actions.messageid.replyid");
+ EXPECT_ACTION_ACTIVATION_TYPE("test.msg-actions.messageid.replyid", G_VARIANT_TYPE_STRING);
+
+ EXPECT_ACTION_ENABLED("remove-all", true);
+
+ setMenu("/com/canonical/indicator/messages/phone");
+
+ EXPECT_EVENTUALLY_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "x-canonical-type", "com.canonical.indicator.messages.messageitem");
+
+ std::string activateResponse;
+ g_signal_connect(msg.get(), "activate", G_CALLBACK(messageReplyActivate), &activateResponse);
+
+ activateAction("test.msg-actions.messageid.replyid", g_variant_new_string("Reply to me"));
+
+ EXPECT_EVENTUALLY_EQ("Reply to me", activateResponse);
+
+ EXPECT_EVENTUALLY_ACTION_ENABLED("remove-all", false);
+}