about summary refs log tree commit diff stats
path: root/tests/test_chat_session.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_chat_session.c')
-rw-r--r--tests/test_chat_session.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/test_chat_session.c b/tests/test_chat_session.c
new file mode 100644
index 00000000..b5e1f7b6
--- /dev/null
+++ b/tests/test_chat_session.c
@@ -0,0 +1,51 @@
+#include <stdarg.h>
+#include <string.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+#include <stdlib.h>
+
+#include "chat_session.h"
+
+void returns_false_when_chat_session_does_not_exist(void **state)
+{
+    ChatSession *session = chat_session_get("somejid@server.org");
+    assert_null(session);
+}
+
+void creates_chat_session_on_recipient_activity(void **state)
+{
+    char *barejid = "myjid@server.org";
+    char *resource = "tablet";
+
+    chat_session_recipient_active(barejid, resource, FALSE);
+    ChatSession *session = chat_session_get(barejid);
+
+    assert_non_null(session);
+    assert_string_equal(session->resource, resource);
+}
+
+void replaces_chat_session_on_recipient_activity_with_different_resource(void **state)
+{
+    char *barejid = "myjid@server.org";
+    char *resource1 = "tablet";
+    char *resource2 = "mobile";
+
+    chat_session_recipient_active(barejid, resource1, FALSE);
+    chat_session_recipient_active(barejid, resource2, FALSE);
+    ChatSession *session = chat_session_get(barejid);
+
+    assert_string_equal(session->resource, resource2);
+}
+
+void removes_chat_session(void **state)
+{
+    char *barejid = "myjid@server.org";
+    char *resource1 = "laptop";
+
+    chat_session_recipient_active(barejid, resource1, FALSE);
+    chat_session_remove(barejid);
+    ChatSession *session = chat_session_get(barejid);
+
+    assert_null(session);
+}
\ No newline at end of file