Browse Source

Merge pull request #287 from gordonjcp/messagetests

Outline for some more unit tests for messages
Peter Justin 8 years ago
parent
commit
2ab1de9cd3

+ 1 - 0
tests/conftest.py

@@ -1,3 +1,4 @@
 from tests.fixtures.app import *  # noqa
 from tests.fixtures.forum import *  # noqa
 from tests.fixtures.user import *  # noqa
+from tests.fixtures.message import *  # noqa

+ 85 - 0
tests/endtoend/test_message_views.py

@@ -0,0 +1,85 @@
+import pytest
+from flask_login import login_user
+
+from flaskbb.message import views
+
+
+def test_message_not_logged_in(application):
+    """ check for redirect if not logged in """
+    with application.test_request_context():
+        resp = views.inbox()
+        assert resp.status != 302
+
+
+def test_message_inbox(application, default_settings, conversation_msgs, user):
+    with application.test_request_context():
+        login_user(user)
+        resp = views.inbox()
+        print resp
+        assert 'From <a href="/user/test_normal">test_normal</a>' in resp
+
+
+def test_message_view_conversation(
+        application, default_settings,
+        conversation_msgs, user):
+    with application.test_request_context():
+        login_user(user)
+        resp = views.view_conversation(conversation_msgs.id)
+        assert conversation_msgs.first_message.message in resp
+
+
+def test_message_trash_restore_conversation(
+        application, default_settings,
+        conversation_msgs, user):
+    with application.test_request_context():
+        login_user(user)
+        resp = views.move_conversation(conversation_msgs.id)
+        assert resp.status != 302
+        assert conversation_msgs.trash is True
+        resp = views.restore_conversation(conversation_msgs.id)
+        assert conversation_msgs.trash is False
+
+
+def test_message_delete_conversation(
+        application, default_settings,
+        conversation_msgs, user):
+    with application.test_request_context():
+        login_user(user)
+        resp = views.delete_conversation(conversation_msgs.id)
+        assert resp.status != 302
+
+
+def test_message_trash(application, default_settings, user):
+    # FIXME more sophisticated tests required
+    with application.test_request_context():
+        login_user(user)
+        resp = views.trash()
+        assert 'No conversations found' in resp
+
+
+def test_message_drafts(application, default_settings, user):
+    # FIXME more sophisticated tests required
+    with application.test_request_context():
+        login_user(user)
+        resp = views.drafts()
+        assert 'No conversations found' in resp
+
+
+def test_message_sent(application, default_settings, user):
+    # FIXME more sophisticated tests required
+    with application.test_request_context():
+        login_user(user)
+        resp = views.sent()
+        assert 'No conversations found' in resp
+
+
+def test_message_view_raw(
+        application, conversation_msgs,
+        default_settings, user):
+    with application.test_request_context():
+        login_user(user)
+        resp = views.raw_message(conversation_msgs.last_message.id)
+        assert conversation_msgs.last_message.message in resp
+
+        # FIXME needs to test line 188 for which we need to log in a
+        # different user

+ 32 - 0
tests/fixtures/message.py

@@ -0,0 +1,32 @@
+import pytest
+import uuid
+from flaskbb.message.models import Conversation, Message
+
+
+@pytest.fixture
+def conversation(database, user, admin_user):
+    conversation = Conversation(
+        user_id=user.id,
+        from_user_id=user.id,
+        to_user_id=admin_user.id,
+        shared_id=uuid.uuid4()
+    )
+    conversation.save()
+    return conversation
+
+
+@pytest.fixture
+def conversation_msgs(conversation, user, admin_user):
+    message = Message(
+        user_id=user.id,
+        conversation_id=conversation.id,
+        message="First message"
+    )
+    conversation.save(message=message)
+    message = Message(
+        user_id=admin_user.id,
+        conversation_id=conversation.id,
+        message="Second message"
+    )
+    conversation.save(message=message)
+    return conversation

+ 29 - 0
tests/unit/test_message_models.py

@@ -0,0 +1,29 @@
+from flaskbb.message.models import Message, Conversation
+
+
+def test_conversation_save(conversation):
+    """ also tests message.save() since we must create a message to save """
+    message = Message(
+        user_id=conversation.user_id,
+        conversation_id=conversation.id,
+        message="Hello World"
+    )
+    conversation.save(message=message)
+    assert conversation.shared_id is not None
+
+
+def test_first_message(conversation_msgs, user):
+    conversation = conversation_msgs
+    assert conversation.first_message.message == "First message"
+
+
+def test_last_message(conversation_msgs, user):
+    conversation = conversation_msgs
+    assert conversation.last_message.message == "Second message"
+
+    message = Message(
+        user_id=user.id,
+        message="Third message"
+    )
+    conversation.save(message=message)
+    assert conversation.last_message.message != "Second message"