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"
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
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
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)
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}