about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--tests/test_cmd_disconnect.c34
-rw-r--r--tests/test_cmd_disconnect.h1
-rw-r--r--tests/testsuite.c3
-rw-r--r--tests/ui/stub_ui.c6
-rw-r--r--tests/ui/stub_ui.h1
-rw-r--r--tests/xmpp/stub_xmpp.c2
7 files changed, 47 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index 4639f8c8..3a5bf9ad 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -77,6 +77,7 @@ tests_sources = \
 	tests/test_cmd_statuses.c tests/test_cmd_statuses.h \
 	tests/test_cmd_sub.c tests/test_cmd_sub.h \
 	tests/test_cmd_win.c tests/test_cmd_win.h \
+	tests/test_cmd_disconnect.c tests/test_cmd_disconnect.h \
 	tests/test_common.c tests/test_common.h \
 	tests/test_contact.c tests/test_contact.h \
 	tests/test_form.c tests/test_form.h \
diff --git a/tests/test_cmd_disconnect.c b/tests/test_cmd_disconnect.c
new file mode 100644
index 00000000..43152872
--- /dev/null
+++ b/tests/test_cmd_disconnect.c
@@ -0,0 +1,34 @@
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "chat_session.h"
+#include "command/commands.h"
+#include "xmpp/xmpp.h"
+#include "roster_list.h"
+
+#include "ui/stub_ui.h"
+
+void clears_chat_sessions(void **state)
+{
+    CommandHelp *help = malloc(sizeof(CommandHelp));
+
+    chat_sessions_init();
+    chat_session_on_recipient_activity("bob@server.org", "laptop");
+    roster_init();
+
+    will_return(jabber_get_connection_status, JABBER_CONNECTED);
+    will_return(jabber_get_fulljid, "myjid@myserver.com");
+    expect_any_cons_show();
+
+    gboolean result = cmd_disconnect(NULL, *help);
+
+    assert_true(result);
+
+    ChatSession *session = chat_session_get("bob@server.org");
+    assert_null(session);
+    free(help);
+}
\ No newline at end of file
diff --git a/tests/test_cmd_disconnect.h b/tests/test_cmd_disconnect.h
new file mode 100644
index 00000000..856b501e
--- /dev/null
+++ b/tests/test_cmd_disconnect.h
@@ -0,0 +1 @@
+void clears_chat_sessions(void **state);
diff --git a/tests/testsuite.c b/tests/testsuite.c
index e333c93f..ebc4c7ac 100644
--- a/tests/testsuite.c
+++ b/tests/testsuite.c
@@ -33,6 +33,7 @@
 #include "test_muc.h"
 #include "test_cmd_roster.h"
 #include "test_cmd_win.h"
+#include "test_cmd_disconnect.h"
 #include "test_form.h"
 
 int main(int argc, char* argv[]) {
@@ -609,6 +610,8 @@ int main(int argc, char* argv[]) {
         unit_test(remove_text_multi_value_does_nothing_when_doesnt_exist),
         unit_test(remove_text_multi_value_removes_when_one),
         unit_test(remove_text_multi_value_removes_when_many),
+
+        unit_test(clears_chat_sessions),
     };
 
     return run_tests(all_tests);
diff --git a/tests/ui/stub_ui.c b/tests/ui/stub_ui.c
index 5361c08d..f0dd1195 100644
--- a/tests/ui/stub_ui.c
+++ b/tests/ui/stub_ui.c
@@ -20,6 +20,12 @@ expect_cons_show(char *expected)
 }
 
 void
+expect_any_cons_show(void)
+{
+    expect_any(cons_show, output);
+}
+
+void
 expect_cons_show_error(char *expected)
 {
     expect_string(cons_show_error, output, expected);
diff --git a/tests/ui/stub_ui.h b/tests/ui/stub_ui.h
index f64eba02..3e6e435f 100644
--- a/tests/ui/stub_ui.h
+++ b/tests/ui/stub_ui.h
@@ -1,4 +1,5 @@
 void expect_cons_show(char *expected);
+void expect_any_cons_show(void);
 void expect_cons_show_error(char *expected);
 void expect_ui_current_print_line(char *message);
 void expect_ui_current_print_formatted_line(char show_char, int attrs, char *message);
\ No newline at end of file
diff --git a/tests/xmpp/stub_xmpp.c b/tests/xmpp/stub_xmpp.c
index a6058058..cc5ad5fc 100644
--- a/tests/xmpp/stub_xmpp.c
+++ b/tests/xmpp/stub_xmpp.c
@@ -29,7 +29,7 @@ void jabber_shutdown(void) {}
 void jabber_process_events(void) {}
 const char * jabber_get_fulljid(void)
 {
-    return NULL;
+    return (char *)mock();
 }
 
 const char * jabber_get_domain(void)