about summary refs log tree commit diff stats
path: root/tests/test_server_events.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_server_events.c')
-rw-r--r--tests/test_server_events.c106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/test_server_events.c b/tests/test_server_events.c
new file mode 100644
index 00000000..a3f6dc02
--- /dev/null
+++ b/tests/test_server_events.c
@@ -0,0 +1,106 @@
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+
+#include "server_events.h"
+#include "roster_list.h"
+#include "config/preferences.h"
+#include "ui/ui.h"
+#include "ui/mock_ui.h"
+
+void console_doesnt_show_online_presence_when_set_none(void **state)
+{
+    mock_cons_show_contact_online();
+    stub_ui_chat_win_contact_online();
+    prefs_set_string(PREF_STATUSES_CONSOLE, "none");
+    roster_init();
+    roster_add("test1@server", "bob", NULL, "both", FALSE);
+    Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10, "caps");
+    
+    handle_contact_online("test1@server", resource, NULL);
+
+    roster_clear();
+}
+
+void console_shows_online_presence_when_set_online(void **state)
+{
+    mock_cons_show_contact_online();
+    stub_ui_chat_win_contact_online();
+    prefs_set_string(PREF_STATUSES_CONSOLE, "online");
+    roster_init();
+    roster_add("test1@server", "bob", NULL, "both", FALSE);
+    Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10, "caps");
+    PContact contact = roster_get_contact("test1@server");
+
+    expect_cons_show_contact_online(contact, resource, NULL);
+    
+    handle_contact_online("test1@server", resource, NULL);
+    
+    roster_clear();
+}
+
+void console_shows_online_presence_when_set_all(void **state)
+{
+    mock_cons_show_contact_online();
+    stub_ui_chat_win_contact_online();
+    prefs_set_string(PREF_STATUSES_CONSOLE, "all");
+    roster_init();
+    roster_add("test1@server", "bob", NULL, "both", FALSE);
+    Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10, "caps");
+    PContact contact = roster_get_contact("test1@server");
+
+    expect_cons_show_contact_online(contact, resource, NULL);
+    
+    handle_contact_online("test1@server", resource, NULL);
+    
+    roster_clear();
+}
+
+void console_doesnt_show_dnd_presence_when_set_none(void **state)
+{
+    mock_cons_show_contact_online();
+    stub_ui_chat_win_contact_online();
+    prefs_set_string(PREF_STATUSES_CONSOLE, "none");
+    roster_init();
+    roster_add("test1@server", "bob", NULL, "both", FALSE);
+    Resource *resource = resource_new("resource", RESOURCE_DND, NULL, 10, "caps");
+    
+    handle_contact_online("test1@server", resource, NULL);
+
+    roster_clear();
+}
+
+void console_doesnt_show_dnd_presence_when_set_online(void **state)
+{
+    mock_cons_show_contact_online();
+    stub_ui_chat_win_contact_online();
+    prefs_set_string(PREF_STATUSES_CONSOLE, "online");
+    roster_init();
+    roster_add("test1@server", "bob", NULL, "both", FALSE);
+    Resource *resource = resource_new("resource", RESOURCE_DND, NULL, 10, "caps");
+    
+    handle_contact_online("test1@server", resource, NULL);
+
+    roster_clear();
+}
+
+void console_shows_dnd_presence_when_set_all(void **state)
+{
+    mock_cons_show_contact_online();
+    stub_ui_chat_win_contact_online();
+    prefs_set_string(PREF_STATUSES_CONSOLE, "all");
+    roster_init();
+    roster_add("test1@server", "bob", NULL, "both", FALSE);
+    Resource *resource = resource_new("resource", RESOURCE_ONLINE, NULL, 10, "caps");
+    PContact contact = roster_get_contact("test1@server");
+
+    expect_cons_show_contact_online(contact, resource, NULL);
+    
+    handle_contact_online("test1@server", resource, NULL);
+    
+    roster_clear();
+}