From 92b85bb7f121dd5ad852b9c0702e9fccc4ef6d18 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 2 Feb 2014 00:49:02 +0000 Subject: Added message when bookmark updated --- src/command/commands.c | 28 ++++++++++++++++------------ src/xmpp/bookmark.c | 4 +++- src/xmpp/xmpp.h | 2 +- tests/test_cmd_bookmark.c | 31 +++++++++++++++++++++++++------ tests/test_cmd_bookmark.h | 1 + tests/testsuite.c | 1 + tests/xmpp/mock_xmpp.c | 8 ++++++-- tests/xmpp/mock_xmpp.h | 3 ++- 8 files changed, 55 insertions(+), 23 deletions(-) diff --git a/src/command/commands.c b/src/command/commands.c index f28bea4c..d07d15cc 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -1763,19 +1763,23 @@ cmd_bookmark(gchar **args, struct cmd_help_t help) } if (strcmp(cmd, "add") == 0) { - bookmark_add(jid, nick, autojoin); - GString *msg = g_string_new("Bookmark added for "); - g_string_append(msg, jid); - if (nick != NULL) { - g_string_append(msg, ", nickname: "); - g_string_append(msg, nick); - } - if (autojoin) { - g_string_append(msg, ", autojoin enabled"); + gboolean added = bookmark_add(jid, nick, autojoin); + if (added) { + GString *msg = g_string_new("Bookmark added for "); + g_string_append(msg, jid); + if (nick != NULL) { + g_string_append(msg, ", nickname: "); + g_string_append(msg, nick); + } + if (autojoin) { + g_string_append(msg, ", autojoin enabled"); + } + g_string_append(msg, "."); + cons_show(msg->str); + g_string_free(msg, TRUE); + } else { + cons_show("Bookmark updated for %s.", jid); } - g_string_append(msg, "."); - cons_show(msg->str); - g_string_free(msg, TRUE); } else if (strcmp(cmd, "remove") == 0) { bookmark_remove(jid, autojoin); if (autojoin) { diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c index 726772a2..11fe95c8 100644 --- a/src/xmpp/bookmark.c +++ b/src/xmpp/bookmark.c @@ -58,7 +58,7 @@ bookmark_request(void) xmpp_stanza_release(iq); } -static void +static gboolean _bookmark_add(const char *jid, const char *nick, gboolean autojoin) { /* TODO: send request */ @@ -67,6 +67,8 @@ _bookmark_add(const char *jid, const char *nick, gboolean autojoin) /* this may be command for modifying */ autocomplete_remove(bookmark_ac, jid); autocomplete_add(bookmark_ac, jid); + + return FALSE; } static void diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index dd91e398..31ddfccd 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -132,7 +132,7 @@ void (*iq_set_autoping)(int seconds); Capabilities* (*caps_get)(const char * const caps_str); void (*caps_close)(void); -void (*bookmark_add)(const char *jid, const char *nick, gboolean autojoin); +gboolean (*bookmark_add)(const char *jid, const char *nick, gboolean autojoin); void (*bookmark_remove)(const char *jid, gboolean autojoin); const GList * (*bookmark_get_list)(void); char * (*bookmark_find)(char *search_str); diff --git a/tests/test_cmd_bookmark.c b/tests/test_cmd_bookmark.c index fc150dc3..e67de628 100644 --- a/tests/test_cmd_bookmark.c +++ b/tests/test_cmd_bookmark.c @@ -169,7 +169,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid(void **state) mock_connection_status(JABBER_CONNECTED); - expect_bookmark_add(jid, NULL, FALSE); + expect_and_return_bookmark_add(jid, NULL, FALSE, TRUE); expect_cons_show("Bookmark added for room@conf.server."); gboolean result = cmd_bookmark(args, *help); @@ -189,7 +189,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid_nick(void **state) mock_connection_status(JABBER_CONNECTED); - expect_bookmark_add(jid, nick, FALSE); + expect_and_return_bookmark_add(jid, nick, FALSE, TRUE); expect_cons_show("Bookmark added for room@conf.server, nickname: bob."); gboolean result = cmd_bookmark(args, *help); @@ -208,7 +208,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid_autojoin(void **state) mock_connection_status(JABBER_CONNECTED); - expect_bookmark_add(jid, NULL, TRUE); + expect_and_return_bookmark_add(jid, NULL, TRUE, TRUE); expect_cons_show("Bookmark added for room@conf.server, autojoin enabled."); gboolean result = cmd_bookmark(args, *help); @@ -228,7 +228,7 @@ void cmd_bookmark_add_adds_bookmark_with_jid_nick_autojoin(void **state) mock_connection_status(JABBER_CONNECTED); - expect_bookmark_add(jid, nick, TRUE); + expect_and_return_bookmark_add(jid, nick, TRUE, TRUE); expect_cons_show("Bookmark added for room@conf.server, nickname: bob, autojoin enabled."); gboolean result = cmd_bookmark(args, *help); @@ -254,7 +254,7 @@ void cmd_bookmark_add_adds_bookmark_with_room_details(void **state) mock_current_win_type(WIN_MUC); ui_current_recipient_returns(jid); - expect_bookmark_add(jid, nick, FALSE); + expect_and_return_bookmark_add(jid, nick, FALSE, TRUE); expect_cons_show("Bookmark added for room@conf.server, nickname: bob."); gboolean result = cmd_bookmark(args, *help); @@ -281,7 +281,7 @@ void cmd_bookmark_add_adds_bookmark_with_room_details_autojoin(void **state) mock_current_win_type(WIN_MUC); ui_current_recipient_returns(jid); - expect_bookmark_add(jid, nick, TRUE); + expect_and_return_bookmark_add(jid, nick, TRUE, TRUE); expect_cons_show("Bookmark added for room@conf.server, nickname: bob, autojoin enabled."); gboolean result = cmd_bookmark(args, *help); @@ -328,3 +328,22 @@ void cmd_bookmark_remove_removes_autojoin(void **state) free(help); } + +void cmd_bookmark_add_shows_message_when_upated(void **state) +{ + mock_bookmark_add(); + mock_cons_show(); + char *jid = "room@conf.server"; + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "add", jid, NULL }; + + mock_connection_status(JABBER_CONNECTED); + + expect_and_return_bookmark_add(jid, NULL, FALSE, FALSE); + expect_cons_show("Bookmark updated for room@conf.server."); + + gboolean result = cmd_bookmark(args, *help); + assert_true(result); + + free(help); +} diff --git a/tests/test_cmd_bookmark.h b/tests/test_cmd_bookmark.h index 972a93b0..48e23239 100644 --- a/tests/test_cmd_bookmark.h +++ b/tests/test_cmd_bookmark.h @@ -15,3 +15,4 @@ void cmd_bookmark_add_adds_bookmark_with_room_details(void **state); void cmd_bookmark_add_adds_bookmark_with_room_details_autojoin(void **state); void cmd_bookmark_remove_removes_bookmark(void **state); void cmd_bookmark_remove_removes_autojoin(void **state); +void cmd_bookmark_add_shows_message_when_upated(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index 673311df..450b6bf2 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -456,6 +456,7 @@ int main(int argc, char* argv[]) { unit_test(cmd_bookmark_add_adds_bookmark_with_room_details_autojoin), unit_test(cmd_bookmark_remove_removes_bookmark), unit_test(cmd_bookmark_remove_removes_autojoin), + unit_test(cmd_bookmark_add_shows_message_when_upated), }; diff --git a/tests/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c index 80b1a3e7..b670959c 100644 --- a/tests/xmpp/mock_xmpp.c +++ b/tests/xmpp/mock_xmpp.c @@ -64,12 +64,13 @@ _mock_bookmark_get_list(void) return (GList *)mock(); } -static void +static gboolean _mock_bookmark_add(const char *jid, const char *nick, gboolean autojoin) { check_expected(jid); check_expected(nick); check_expected(autojoin); + return (gboolean)mock(); } static void @@ -194,7 +195,8 @@ presence_update_expect(resource_presence_t presence, char *msg, int idle) } void -expect_bookmark_add(char *expected_jid, char *expected_nick, gboolean expected_autojoin) +expect_and_return_bookmark_add(char *expected_jid, char *expected_nick, + gboolean expected_autojoin, gboolean added) { expect_string(_mock_bookmark_add, jid, expected_jid); if (expected_nick != NULL) { @@ -203,6 +205,8 @@ expect_bookmark_add(char *expected_jid, char *expected_nick, gboolean expected_a expect_any(_mock_bookmark_add, nick); } expect_value(_mock_bookmark_add, autojoin, expected_autojoin); + + will_return(_mock_bookmark_add, added); } void diff --git a/tests/xmpp/mock_xmpp.h b/tests/xmpp/mock_xmpp.h index 12862d51..6e00a824 100644 --- a/tests/xmpp/mock_xmpp.h +++ b/tests/xmpp/mock_xmpp.h @@ -24,7 +24,8 @@ void presence_update_expect(resource_presence_t presence, char *msg, int idle); void bookmark_get_list_returns(GList *bookmarks); void mock_bookmark_add(void); -void expect_bookmark_add(char *expected_jid, char *expected_nick, gboolean expected_autojoin); +void expect_and_return_bookmark_add(char *expected_jid, char *expected_nick, + gboolean expected_autojoin, gboolean added); void mock_bookmark_remove(void); void expect_bookmark_remove(char *expected_jid, gboolean expected_autojoin); -- cgit 1.4.1-2-gfad0