about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/command/commands.c12
-rw-r--r--src/xmpp/bookmark.c4
-rw-r--r--src/xmpp/xmpp.h2
-rw-r--r--tests/config/mock_accounts.c4
-rw-r--r--tests/test_cmd_bookmark.c23
-rw-r--r--tests/test_cmd_bookmark.h1
-rw-r--r--tests/testsuite.c1
-rw-r--r--tests/ui/mock_ui.c4
-rw-r--r--tests/xmpp/mock_xmpp.c8
-rw-r--r--tests/xmpp/mock_xmpp.h3
10 files changed, 47 insertions, 15 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index d07d15cc..368a644b 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1781,11 +1781,15 @@ cmd_bookmark(gchar **args, struct cmd_help_t help)
                 cons_show("Bookmark updated for %s.", jid);
             }
         } else if (strcmp(cmd, "remove") == 0) {
-            bookmark_remove(jid, autojoin);
-            if (autojoin) {
-                cons_show("Autojoin disabled for %s.", jid);
+            gboolean removed = bookmark_remove(jid, autojoin);
+            if (removed) {
+                if (autojoin) {
+                    cons_show("Autojoin disabled for %s.", jid);
+                } else {
+                    cons_show("Bookmark removed for %s.", jid);
+                }
             } else {
-                cons_show("Bookmark removed for %s.", jid);
+                cons_show("No bookmark exists for %s.", jid);
             }
         } else {
             cons_show("Usage: %s", help.usage);
diff --git a/src/xmpp/bookmark.c b/src/xmpp/bookmark.c
index 11fe95c8..0ed58ecb 100644
--- a/src/xmpp/bookmark.c
+++ b/src/xmpp/bookmark.c
@@ -71,7 +71,7 @@ _bookmark_add(const char *jid, const char *nick, gboolean autojoin)
     return FALSE;
 }
 
-static void
+static gboolean
 _bookmark_remove(const char *jid, gboolean autojoin)
 {
     /* TODO: manage bookmark_list */
@@ -81,6 +81,8 @@ _bookmark_remove(const char *jid, gboolean autojoin)
         /* TODO: send request */
         autocomplete_remove(bookmark_ac, jid);
     }
+
+    return FALSE;
 }
 
 static const GList *
diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h
index 31ddfccd..fdbcb500 100644
--- a/src/xmpp/xmpp.h
+++ b/src/xmpp/xmpp.h
@@ -133,7 +133,7 @@ Capabilities* (*caps_get)(const char * const caps_str);
 void (*caps_close)(void);
 
 gboolean (*bookmark_add)(const char *jid, const char *nick, gboolean autojoin);
-void (*bookmark_remove)(const char *jid, gboolean autojoin);
+gboolean (*bookmark_remove)(const char *jid, gboolean autojoin);
 const GList * (*bookmark_get_list)(void);
 char * (*bookmark_find)(char *search_str);
 void (*bookmark_autocomplete_reset)(void);
diff --git a/tests/config/mock_accounts.c b/tests/config/mock_accounts.c
index 38e6f89a..3a7139e3 100644
--- a/tests/config/mock_accounts.c
+++ b/tests/config/mock_accounts.c
@@ -46,7 +46,7 @@ void
 _mock_accounts_add(const char *account_name, const char *altdomain, const int port)
 {
     check_expected(account_name);
-    check_expected(altdomain);    
+    check_expected(altdomain);
 }
 
 void
@@ -252,7 +252,7 @@ _mock_accounts_get_last_presence(const char * const account_name)
 void
 mock_accounts_get_account(void)
 {
-   accounts_get_account = _mock_accounts_get_account; 
+   accounts_get_account = _mock_accounts_get_account;
 }
 
 void
diff --git a/tests/test_cmd_bookmark.c b/tests/test_cmd_bookmark.c
index e67de628..32a19e82 100644
--- a/tests/test_cmd_bookmark.c
+++ b/tests/test_cmd_bookmark.c
@@ -301,7 +301,7 @@ void cmd_bookmark_remove_removes_bookmark(void **state)
 
     mock_connection_status(JABBER_CONNECTED);
 
-    expect_bookmark_remove(jid, FALSE);
+    expect_and_return_bookmark_remove(jid, FALSE, TRUE);
     expect_cons_show("Bookmark removed for room@conf.server.");
 
     gboolean result = cmd_bookmark(args, *help);
@@ -320,7 +320,7 @@ void cmd_bookmark_remove_removes_autojoin(void **state)
 
     mock_connection_status(JABBER_CONNECTED);
 
-    expect_bookmark_remove(jid, TRUE);
+    expect_and_return_bookmark_remove(jid, TRUE, TRUE);
     expect_cons_show("Autojoin disabled for room@conf.server.");
 
     gboolean result = cmd_bookmark(args, *help);
@@ -347,3 +347,22 @@ void cmd_bookmark_add_shows_message_when_upated(void **state)
 
     free(help);
 }
+
+void cmd_bookmark_remove_shows_message_when_no_bookmark(void **state)
+{
+    mock_bookmark_remove();
+    mock_cons_show();
+    char *jid = "room@conf.server";
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    gchar *args[] = { "remove", jid, NULL };
+
+    mock_connection_status(JABBER_CONNECTED);
+
+    expect_and_return_bookmark_remove(jid, FALSE, FALSE);
+    expect_cons_show("No bookmark exists 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 48e23239..ca17b62e 100644
--- a/tests/test_cmd_bookmark.h
+++ b/tests/test_cmd_bookmark.h
@@ -16,3 +16,4 @@ 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);
+void cmd_bookmark_remove_shows_message_when_no_bookmark(void **state);
diff --git a/tests/testsuite.c b/tests/testsuite.c
index 450b6bf2..47c90a07 100644
--- a/tests/testsuite.c
+++ b/tests/testsuite.c
@@ -457,6 +457,7 @@ int main(int argc, char* argv[]) {
         unit_test(cmd_bookmark_remove_removes_bookmark),
         unit_test(cmd_bookmark_remove_removes_autojoin),
         unit_test(cmd_bookmark_add_shows_message_when_upated),
+        unit_test(cmd_bookmark_remove_shows_message_when_no_bookmark),
     };
 
 
diff --git a/tests/ui/mock_ui.c b/tests/ui/mock_ui.c
index d5b6aeae..4fdd0a99 100644
--- a/tests/ui/mock_ui.c
+++ b/tests/ui/mock_ui.c
@@ -95,7 +95,7 @@ void _mock_cons_show_account_list(gchar **accounts)
 static
 char * _mock_ui_ask_password(void)
 {
-    return (char *)mock();    
+    return (char *)mock();
 }
 
 static
@@ -160,7 +160,7 @@ void
 mock_cons_show(void)
 {
     cons_show = _mock_cons_show;
-    
+
 }
 
 void
diff --git a/tests/xmpp/mock_xmpp.c b/tests/xmpp/mock_xmpp.c
index b670959c..054e3fdd 100644
--- a/tests/xmpp/mock_xmpp.c
+++ b/tests/xmpp/mock_xmpp.c
@@ -73,11 +73,12 @@ _mock_bookmark_add(const char *jid, const char *nick, gboolean autojoin)
     return (gboolean)mock();
 }
 
-static void
+static gboolean
 _mock_bookmark_remove(const char *jid, gboolean autojoin)
 {
     check_expected(jid);
     check_expected(autojoin);
+    return (gboolean)mock();
 }
 
 void
@@ -210,8 +211,11 @@ expect_and_return_bookmark_add(char *expected_jid, char *expected_nick,
 }
 
 void
-expect_bookmark_remove(char *expected_jid, gboolean expected_autojoin)
+expect_and_return_bookmark_remove(char *expected_jid, gboolean expected_autojoin,
+    gboolean removed)
 {
     expect_string(_mock_bookmark_remove, jid, expected_jid);
     expect_value(_mock_bookmark_remove, autojoin, expected_autojoin);
+
+    will_return(_mock_bookmark_remove, removed);
 }
diff --git a/tests/xmpp/mock_xmpp.h b/tests/xmpp/mock_xmpp.h
index 6e00a824..82b4f8d0 100644
--- a/tests/xmpp/mock_xmpp.h
+++ b/tests/xmpp/mock_xmpp.h
@@ -28,6 +28,7 @@ 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);
+void expect_and_return_bookmark_remove(char *expected_jid, gboolean expected_autojoin,
+    gboolean removed);
 
 #endif