chorus/tests/messages.rs

146 lines
4.3 KiB
Rust
Raw Normal View History

2023-05-27 22:46:57 +02:00
use std::fs::File;
use std::io::{BufReader, Read};
2023-08-22 20:09:44 +02:00
use chorus::types::{self, Guild, Message, MessageSearchQuery};
2023-11-20 14:03:06 +01:00
// PRETTYFYME: Move common wasm setup to common.rs
#[cfg(target_arch = "wasm32")]
use wasm_bindgen_test::*;
#[cfg(target_arch = "wasm32")]
wasm_bindgen_test_configure!(run_in_browser);
mod common;
2023-05-27 22:46:57 +02:00
#[tokio::test]
async fn send_message() {
let mut bundle = common::setup().await;
let message = types::MessageSendSchema {
2023-06-19 14:21:27 +02:00
content: Some("A Message!".to_string()),
..Default::default()
};
let channel = bundle.channel.read().unwrap().clone();
let _ = bundle.user.send_message(message, channel.id).await.unwrap();
2023-05-27 22:46:57 +02:00
common::teardown(bundle).await
}
#[tokio::test]
async fn send_message_attachment() {
let f = File::open("./README.md").unwrap();
let mut reader = BufReader::new(f);
let mut buffer = Vec::new();
let mut bundle = common::setup().await;
reader.read_to_end(&mut buffer).unwrap();
let attachment = types::PartialDiscordFileAttachment {
id: None,
filename: "README.md".to_string(),
description: None,
content_type: None,
size: None,
url: None,
proxy_url: None,
width: None,
height: None,
ephemeral: None,
duration_secs: None,
waveform: None,
content: buffer,
};
let message = types::MessageSendSchema {
2023-06-19 14:21:27 +02:00
content: Some("trans rights now".to_string()),
attachments: Some(vec![attachment.clone()]),
..Default::default()
};
let channel = bundle.channel.read().unwrap().clone();
2023-05-27 22:46:57 +02:00
let vec_attach = vec![attachment.clone()];
let _arg = Some(&vec_attach);
bundle.user.send_message(message, channel.id).await.unwrap();
2023-05-27 22:46:57 +02:00
common::teardown(bundle).await
}
2023-08-22 19:23:05 +02:00
#[tokio::test]
async fn search_messages() {
let f = File::open("./README.md").unwrap();
let mut reader = BufReader::new(f);
let mut buffer = Vec::new();
let mut bundle = common::setup().await;
reader.read_to_end(&mut buffer).unwrap();
let attachment = types::PartialDiscordFileAttachment {
id: None,
filename: "README.md".to_string(),
description: None,
content_type: None,
size: None,
url: None,
proxy_url: None,
width: None,
height: None,
ephemeral: None,
duration_secs: None,
waveform: None,
content: buffer,
};
let message = types::MessageSendSchema {
content: Some("trans rights now".to_string()),
attachments: Some(vec![attachment.clone()]),
..Default::default()
};
let channel = bundle.channel.read().unwrap().clone();
let vec_attach = vec![attachment.clone()];
let _arg = Some(&vec_attach);
let message = bundle.user.send_message(message, channel.id).await.unwrap();
let query = MessageSearchQuery {
author_id: Some(Vec::from([bundle.user.object.read().unwrap().id])),
..Default::default()
};
let guild_id = bundle.guild.read().unwrap().id;
let query_result = Guild::search_messages(guild_id, query, &mut bundle.user)
.await
.unwrap();
assert!(!query_result.is_empty());
assert_eq!(query_result.get(0).unwrap().id, message.id);
}
2023-08-22 20:09:44 +02:00
#[tokio::test]
async fn test_stickies() {
let mut bundle = common::setup().await;
let message = types::MessageSendSchema {
content: Some("A Message!".to_string()),
..Default::default()
};
let channel = bundle.channel.read().unwrap().clone();
let message = bundle.user.send_message(message, channel.id).await.unwrap();
assert_eq!(
Message::get_sticky(channel.id, &mut bundle.user)
.await
.unwrap(),
Vec::<Message>::new()
);
Message::sticky(channel.id, message.id, None, &mut bundle.user)
2023-08-22 20:09:44 +02:00
.await
.unwrap();
assert_eq!(
Message::get_sticky(channel.id, &mut bundle.user)
.await
.unwrap()
.get(0)
.unwrap()
.id,
message.id
);
Message::unsticky(channel.id, message.id, None, &mut bundle.user)
2023-08-22 20:09:44 +02:00
.await
.unwrap();
assert_eq!(
Message::get_sticky(channel.id, &mut bundle.user)
.await
.unwrap(),
Vec::<Message>::new()
);
common::teardown(bundle).await
}