Exemple #1
0
def test_message_reply_validation(mocker, conversation, session_user2):
    """Ensure a new message reply goes through expected validation."""
    mocker.spy(MessageReplySchema, "load")
    mocker.spy(Markdown, "_validate")

    MessageReply(conversation, session_user2, "A new reply")

    assert MessageReplySchema.load.called
    assert Markdown._validate.call_args[0][1] == "A new reply"
Exemple #2
0
def test_replies_update_activity_time(conversation, db):
    """Ensure adding replies updates the last activity timestamp."""
    assert conversation.last_activity_time == conversation.created_time

    for _ in range(5):
        new_reply = MessageReply(conversation, conversation.recipient, "hi")
        db.add(new_reply)
        db.commit()

        assert conversation.last_activity_time == new_reply.created_time
Exemple #3
0
def test_replies_affect_num_replies(conversation, db):
    """Ensure adding replies to a conversation affects the reply count."""
    assert conversation.num_replies == 0

    # add replies and ensure each one increases the count
    for num in range(5):
        new_reply = MessageReply(conversation, conversation.recipient, "hi")
        db.add(new_reply)
        db.commit()
        db.refresh(conversation)
        assert conversation.num_replies == num + 1
Exemple #4
0
def post_message_reply(request: Request, markdown: str) -> HTTPFound:
    """Post a reply to a message conversation."""
    conversation = request.context
    new_reply = MessageReply(conversation=conversation,
                             sender=request.user,
                             markdown=markdown)
    request.db_session.add(new_reply)

    conversation_url = request.route_url(
        "message_conversation",
        conversation_id36=conversation.conversation_id36)
    raise HTTPFound(location=conversation_url)
Exemple #5
0
def post_message_reply(request: Request, markdown: str) -> dict:
    """Post a reply to a message conversation with Intercooler."""
    conversation = request.context
    new_reply = MessageReply(conversation=conversation,
                             sender=request.user,
                             markdown=markdown)
    request.db_session.add(new_reply)

    # commit and then re-query the reply to get complete data
    request.tm.commit()

    new_reply = (
        request.query(MessageReply).join_all_relationships().filter_by(
            reply_id=new_reply.reply_id).one())

    return {"message": new_reply}