zulip-api 0.0.8

Client library for interacting with the Zulip API
Documentation
use zulip_api::client::Client;
use zulip_api::message::{MessageTo, MessageType};
use zulip_api::response::{ApiResult, ErrorCode, Response};
use zulip_api::send_message;

#[tokio::test]
async fn test_send_message() {
    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
        .try_init()
        .ok();

    let client = Client::from_zuliprc("./tests/zuliprc").unwrap();

    let req = send_message::Request::new()
        .with_msg_type(MessageType::Channel)
        .with_topic("test topic")
        .with_to(MessageTo::channel_name("general"))
        .with_content("test message");

    let res = client.send_message(&req).await.unwrap();

    log::debug!("Send message response: {res}");

    assert_eq!(res.result(), ApiResult::Success);
}

#[tokio::test]
async fn test_send_message_no_topic() {
    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
        .try_init()
        .ok();

    let client = Client::from_zuliprc("./tests/zuliprc").unwrap();

    let req = send_message::Request::new()
        .with_msg_type(MessageType::Channel)
        .with_to(MessageTo::channel_name("general"))
        .with_content("no topic");

    let res = client.send_message(&req).await.unwrap();

    log::debug!("Send message result: {res}");

    assert_eq!(res.result(), ApiResult::Error);
    assert_eq!(res.code(), Some(ErrorCode::BadRequest));
}

#[tokio::test]
async fn test_send_message_no_recipient() {
    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
        .try_init()
        .ok();

    let client = Client::from_zuliprc("./tests/zuliprc").unwrap();

    let req = send_message::Request::new()
        .with_msg_type(MessageType::Channel)
        .with_topic("test topic")
        .with_content("no topic");

    let res = client.send_message(&req).await.unwrap();

    log::debug!("Send message result: {res}");

    assert_eq!(res.result(), ApiResult::Error);
    assert_eq!(res.code(), Some(ErrorCode::StreamDoesNotExist));
}

#[tokio::test]
async fn test_send_message_no_content() {
    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info"))
        .try_init()
        .ok();

    let client = Client::from_zuliprc("./tests/zuliprc").unwrap();

    let req = send_message::Request::new()
        .with_msg_type(MessageType::Channel)
        .with_to(MessageTo::channel_name("general"))
        .with_topic("test topic");

    let res = client.send_message(&req).await.unwrap();

    log::debug!("Send message result: {res}");

    assert_eq!(res.result(), ApiResult::Error);
    assert_eq!(res.code(), Some(ErrorCode::BadRequest));
}