about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-02-02 00:49:02 +0000
committerJames Booth <boothj5@gmail.com>2014-02-02 00:49:02 +0000
commit92b85bb7f121dd5ad852b9c0702e9fccc4ef6d18 (patch)
tree58b727a02052ee3fde4fd1a15f39decbfe74c52d
parenta8ecbccc9c29a4d9b0ba21fa0a7b6e804f226626 (diff)
downloadprofani-tty-92b85bb7f121dd5ad852b9c0702e9fccc4ef6d18.tar.gz
Added message when bookmark updated
-rw-r--r--src/command/commands.c28
-rw-r--r--src/xmpp/bookmark.c4
-rw-r--r--src/xmpp/xmpp.h2
-rw-r--r--tests/test_cmd_bookmark.c31
-rw-r--r--tests/test_cmd_bookmark.h1
-rw-r--r--tests/testsuite.c1
-rw-r--r--tests/xmpp/mock_xmpp.c8
-rw-r--r--tests/xmpp/mock_xmpp.h3
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);