use zulip_api::client::Client;
use zulip_api::message::{Flag, MessageTo, MessageType, Operation};
use zulip_api::response::{ApiResult, Response};
use zulip_api::{send_message, update_message_flags};
#[tokio::test]
async fn test_update_message_flags() {
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}");
let msg_id = res.id().unwrap();
let messages = [msg_id];
let req = update_message_flags::Request::new()
.with_messages(messages.as_ref())
.with_op(Operation::Add)
.with_flag(Flag::Read);
let res = client.update_message_flags(&req).await.unwrap();
log::debug!("Update message flags (add) response: {res}");
assert_eq!(res.result(), ApiResult::Success);
let req = update_message_flags::Request::new()
.with_messages(messages.as_ref())
.with_op(Operation::Remove)
.with_flag(Flag::Read);
let res = client.update_message_flags(&req).await.unwrap();
log::debug!("Update message flags (remove) response: {res}");
assert_eq!(res.result(), ApiResult::Success);
}