about summary refs log tree commit diff stats
path: root/tests/test_cmd_bookmark.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_cmd_bookmark.c')
-rw-r--r--tests/test_cmd_bookmark.c140
1 files changed, 140 insertions, 0 deletions
diff --git a/tests/test_cmd_bookmark.c b/tests/test_cmd_bookmark.c
index b4526ed7..4c4645c0 100644
--- a/tests/test_cmd_bookmark.c
+++ b/tests/test_cmd_bookmark.c
@@ -7,9 +7,12 @@
 #include <glib.h>
 
 #include "ui/mock_ui.h"
+#include "ui/window.h"
 #include "xmpp/xmpp.h"
 #include "xmpp/mock_xmpp.h"
 
+#include "muc.h"
+
 #include "command/commands.h"
 
 #include "xmpp/bookmark.h"
@@ -121,3 +124,140 @@ void cmd_bookmark_list_shows_bookmarks(void **state)
     free(help);
     g_list_free_full(bookmarks, (GDestroyNotify)_free_bookmark);
 }
+
+void cmd_bookmark_add_shows_usage_when_no_args_not_muc(void **state)
+{
+    mock_cons_show();
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    help->usage = "some usage";
+    gchar *args[] = { "add", NULL };
+
+    mock_connection_status(JABBER_CONNECTED);
+    mock_current_win_type(WIN_CONSOLE);
+    expect_cons_show("Usage: some usage");
+
+    gboolean result = cmd_bookmark(args, *help);
+    assert_true(result);
+
+    free(help);
+}
+
+void cmd_bookmark_remove_shows_message_when_no_args_not_muc(void **state)
+{
+    mock_cons_show();
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    help->usage = "some usage";
+    gchar *args[] = { "remove", NULL };
+
+    mock_connection_status(JABBER_CONNECTED);
+    mock_current_win_type(WIN_CONSOLE);
+    expect_cons_show("Usage: some usage");
+
+    gboolean result = cmd_bookmark(args, *help);
+    assert_true(result);
+
+    free(help);
+}
+
+void cmd_bookmark_add_adds_bookmark_with_jid(void **state)
+{
+    mock_bookmark_add();
+    char *jid = "room@conf.server";
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    gchar *args[] = { "add", jid, NULL };
+
+    mock_connection_status(JABBER_CONNECTED);
+
+    expect_bookmark_add(jid, NULL, FALSE);
+
+    gboolean result = cmd_bookmark(args, *help);
+    assert_true(result);
+
+    free(help);
+}
+
+void cmd_bookmark_add_adds_bookmark_with_jid_nick(void **state)
+{
+    mock_bookmark_add();
+    char *jid = "room@conf.server";
+    char *nick = "bob";
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    gchar *args[] = { "add", jid, nick, NULL };
+
+    mock_connection_status(JABBER_CONNECTED);
+
+    expect_bookmark_add(jid, nick, FALSE);
+
+    gboolean result = cmd_bookmark(args, *help);
+    assert_true(result);
+
+    free(help);
+}
+
+void cmd_bookmark_add_adds_bookmark_with_jid_nick_autojoin(void **state)
+{
+    mock_bookmark_add();
+    char *jid = "room@conf.server";
+    char *nick = "bob";
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    gchar *args[] = { "add", jid, nick, "autojoin", NULL };
+
+    mock_connection_status(JABBER_CONNECTED);
+
+    expect_bookmark_add(jid, nick, TRUE);
+
+    gboolean result = cmd_bookmark(args, *help);
+    assert_true(result);
+
+    free(help);
+}
+
+void cmd_bookmark_add_adds_bookmark_with_room_details(void **state)
+{
+    mock_bookmark_add();
+    mock_ui_current_recipient();
+    char *jid = "room@conf.server";
+    char *nick = "bob";
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    gchar *args[] = { "add", NULL };
+
+    muc_init();
+    muc_join_room(jid, nick);
+
+    mock_connection_status(JABBER_CONNECTED);
+    mock_current_win_type(WIN_MUC);
+    ui_current_recipient_returns(jid);
+
+    expect_bookmark_add(jid, nick, FALSE);
+
+    gboolean result = cmd_bookmark(args, *help);
+    assert_true(result);
+
+    free(help);
+    muc_close();
+}
+
+void cmd_bookmark_add_adds_bookmark_with_room_details_autojoin(void **state)
+{
+    mock_bookmark_add();
+    mock_ui_current_recipient();
+    char *jid = "room@conf.server";
+    char *nick = "bob";
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+    gchar *args[] = { "add", "autojoin", NULL };
+
+    muc_init();
+    muc_join_room(jid, nick);
+
+    mock_connection_status(JABBER_CONNECTED);
+    mock_current_win_type(WIN_MUC);
+    ui_current_recipient_returns(jid);
+
+    expect_bookmark_add(jid, nick, TRUE);
+
+    gboolean result = cmd_bookmark(args, *help);
+    assert_true(result);
+
+    free(help);
+    muc_close();
+}