diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2011-02-25 16:41:31 -0500 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2011-02-28 11:34:18 -0500 |
commit | 47e7a121c37749e0d311913fc1145bd06c049348 (patch) | |
tree | 23cbed94b8c2887c5850b53d9dd4051f8aa5821b | |
parent | 234c4f7db330c69d572d736d12f73272dd444591 (diff) | |
download | telepathy-logger-47e7a121c37749e0d311913fc1145bd06c049348.tar.gz |
Add a XML log store test for add_event
-rw-r--r-- | tests/dbus/test-tpl-log-store-xml.c | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/tests/dbus/test-tpl-log-store-xml.c b/tests/dbus/test-tpl-log-store-xml.c index bc51434..3b4b3d6 100644 --- a/tests/dbus/test-tpl-log-store-xml.c +++ b/tests/dbus/test-tpl-log-store-xml.c @@ -243,6 +243,176 @@ test_clear_entity (XmlTestCaseFixture *fixture, g_assert_cmpint (g_list_length (hits), ==, 0); } +static void +assert_cmp_text_event (TplEvent *event, + TplEvent *stored_event) +{ + TplEntity *sender, *stored_sender; + TplEntity *receiver, *stored_receiver; + + g_assert (TPL_IS_TEXT_EVENT (event)); + g_assert (TPL_IS_TEXT_EVENT (stored_event)); + g_assert_cmpstr (tpl_event_get_account_path (event), ==, + tpl_event_get_account_path (stored_event)); + + sender = tpl_event_get_sender (event); + stored_sender = tpl_event_get_sender (stored_event); + + g_assert (_tpl_entity_compare (sender, stored_sender) == 0); + g_assert_cmpstr (tpl_entity_get_alias (sender), ==, + tpl_entity_get_alias (stored_sender)); + g_assert_cmpstr (tpl_entity_get_avatar_token (sender), ==, + tpl_entity_get_avatar_token (stored_sender)); + + receiver = tpl_event_get_receiver (event); + stored_receiver = tpl_event_get_receiver (stored_event); + + g_assert (_tpl_entity_compare (receiver, stored_receiver) == 0); + /* No support for receiver alias/token */ + + g_assert_cmpint (tpl_event_get_timestamp (event), ==, + tpl_event_get_timestamp (stored_event)); + g_assert_cmpint (tpl_text_event_get_message_type (TPL_TEXT_EVENT (event)), + ==, tpl_text_event_get_message_type (TPL_TEXT_EVENT (stored_event))); + g_assert_cmpstr (tpl_text_event_get_message (TPL_TEXT_EVENT (event)), + ==, tpl_text_event_get_message (TPL_TEXT_EVENT (stored_event))); +} + +static void +test_add_text_event (XmlTestCaseFixture *fixture, + gconstpointer user_data) +{ + TpAccount *account; + TplEntity *me, *contact, *room; + TplEvent *event; + GError *error = NULL; + GList *events; + + account = tp_account_new (fixture->bus, + TP_ACCOUNT_OBJECT_PATH_BASE "idle/irc/me", + &error); + g_assert_no_error (error); + g_assert (account != NULL); + + me = tpl_entity_new ("me", TPL_ENTITY_SELF, "my-alias", "my-avatar"); + contact = tpl_entity_new ("contact", TPL_ENTITY_CONTACT, "contact-alias", + "contact-token"); + room = tpl_entity_new_from_room_id ("room"); + + + /* 1. Outgoing message to a contact */ + event = g_object_new (TPL_TYPE_TEXT_EVENT, + /* TplEvent */ + "account", account, + "log-id", "my-log-id", + "sender", me, + "receiver", contact, + "timestamp", time (NULL), + /* TplTextEvent */ + "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, + "message", "my message 1", + NULL); + + _tpl_log_store_add_event (fixture->store, event, &error); + g_assert_no_error (error); + + events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, + TPL_EVENT_MASK_TEXT, 1, NULL, NULL); + + g_assert_cmpint (g_list_length (events), ==, 1); + g_assert (TPL_IS_TEXT_EVENT (events->data)); + + assert_cmp_text_event (event, events->data); + + g_object_unref (event); + g_object_unref (events->data); + g_list_free (events); + + /* 2. Incoming message from contact (a /me action) */ + event = g_object_new (TPL_TYPE_TEXT_EVENT, + /* TplEvent */ + "account", account, + "log-id", "my-log-id", + "sender", contact, + "receiver", me, + "timestamp", time (NULL), + /* TplTextEvent */ + "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION, + "message", "my message 1", + NULL); + + _tpl_log_store_add_event (fixture->store, event, &error); + g_assert_no_error (error); + + events = _tpl_log_store_get_filtered_events (fixture->store, account, contact, + TPL_EVENT_MASK_TEXT, 1, NULL, NULL); + + g_assert_cmpint (g_list_length (events), ==, 1); + g_assert (TPL_IS_TEXT_EVENT (events->data)); + + assert_cmp_text_event (event, events->data); + + g_object_unref (event); + g_object_unref (events->data); + g_list_free (events); + + /* 3. Outgoing message to a room */ + event = g_object_new (TPL_TYPE_TEXT_EVENT, + /* TplEvent */ + "account", account, + "log-id", "my-log-id", + "sender", me, + "receiver", room, + "timestamp", time (NULL), + /* TplTextEvent */ + "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, + "message", "my message 1", + NULL); + + _tpl_log_store_add_event (fixture->store, event, &error); + g_assert_no_error (error); + + events = _tpl_log_store_get_filtered_events (fixture->store, account, room, + TPL_EVENT_MASK_TEXT, 1, NULL, NULL); + + g_assert_cmpint (g_list_length (events), ==, 1); + g_assert (TPL_IS_TEXT_EVENT (events->data)); + + assert_cmp_text_event (event, events->data); + + g_object_unref (event); + g_object_unref (events->data); + g_list_free (events); + + /* 4. Incoming message from a room */ + event = g_object_new (TPL_TYPE_TEXT_EVENT, + /* TplEvent */ + "account", account, + "log-id", "my-log-id", + "sender", contact, + "receiver", room, + "timestamp", time (NULL), + /* TplTextEvent */ + "message-type", TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL, + "message", "my message 1", + NULL); + + _tpl_log_store_add_event (fixture->store, event, &error); + g_assert_no_error (error); + + events = _tpl_log_store_get_filtered_events (fixture->store, account, room, + TPL_EVENT_MASK_TEXT, 1, NULL, NULL); + + g_assert_cmpint (g_list_length (events), ==, 1); + g_assert (TPL_IS_TEXT_EVENT (events->data)); + + assert_cmp_text_event (event, events->data); + + g_object_unref (event); + g_object_unref (events->data); + g_list_free (events); +} + gint main (gint argc, gchar **argv) { @@ -267,5 +437,9 @@ gint main (gint argc, gchar **argv) XmlTestCaseFixture, GINT_TO_POINTER (TRUE), setup_for_writing, test_clear_entity, teardown); + g_test_add ("/log-store-xml/add-text-event", + XmlTestCaseFixture, NULL, + setup_for_writing, test_add_text_event, teardown); + return g_test_run (); } |