def test_moderate_user_as_admin() -> None:
    app = MessageBoards()
    board_id = app.create_message_board("Test board", ADMIN_ID)
    app.moderate_user(board_id, USER_ID, ADMIN_ID)
    assert_contains_event(
        app.repository,
        board_id,
        MessageBoard.UserFlaggedForModerationEvent,
        lambda e: e.user_id == USER_ID,
    )
def test_post_message_with_valid_reply_to() -> None:
    app = MessageBoards()
    board_id = app.create_message_board("Test board", ADMIN_ID)
    app.post_message(board_id, "message text", None, USER_ID)
    reply_id = app.post_message(board_id, "message text", 0, USER_ID)
    assert_contains_event(
        app.repository,
        board_id,
        MessageBoard.MessagePostedEvent,
        lambda e: e.message_id == reply_id and e.reply_to == 0,
    )
def test_post_message_with_moderated_user() -> None:
    app = MessageBoards()
    board_id = app.create_message_board("Test board", ADMIN_ID)
    app.moderate_user(board_id, USER_ID, ADMIN_ID)
    message_id = app.post_message(board_id, "message text", None, USER_ID)
    assert_contains_event(
        app.repository,
        board_id,
        MessageBoard.MessagePostedEvent,
        lambda e: e.message_id == message_id and e.requires_moderation is True,
    )
def test_reject_message_as_admin() -> None:
    app = MessageBoards()
    board_id = app.create_message_board("Test board", ADMIN_ID)
    app.moderate_user(board_id, USER_ID, ADMIN_ID)
    message_id = app.post_message(board_id, "message text", None, USER_ID)
    app.reject_message(board_id, message_id, ADMIN_ID)
    assert_contains_event(
        app.repository,
        board_id,
        MessageBoard.MessageRejectedEvent,
        lambda e: e.message_id == message_id,
    )