chorus/tests/channel.rs

138 lines
3.6 KiB
Rust

use chorus::types::{
self, Channel, GetChannelMessagesSchema, MessageSendSchema, PermissionFlags,
PermissionOverwrite, Snowflake,
};
mod common;
#[tokio::test]
async fn get_channel() {
let mut bundle = common::setup().await;
let bundle_channel = bundle.channel.clone();
let bundle_user = &mut bundle.user;
assert_eq!(
bundle_channel,
Channel::get(bundle_user, bundle_channel.id).await.unwrap()
);
common::teardown(bundle).await
}
#[tokio::test]
async fn delete_channel() {
let mut bundle = common::setup().await;
let result = Channel::delete(bundle.channel.clone(), &mut bundle.user).await;
assert!(result.is_ok());
common::teardown(bundle).await
}
#[tokio::test]
async fn modify_channel() {
let mut bundle = common::setup().await;
let modify_data: types::ChannelModifySchema = types::ChannelModifySchema {
name: Some("beepboop".to_string()),
channel_type: None,
topic: None,
icon: None,
bitrate: None,
user_limit: None,
rate_limit_per_user: None,
position: None,
permission_overwrites: None,
parent_id: None,
nsfw: None,
rtc_region: None,
default_auto_archive_duration: None,
default_reaction_emoji: None,
flags: None,
default_thread_rate_limit_per_user: None,
video_quality_mode: None,
};
let result = Channel::modify(modify_data, bundle.channel.id, &mut bundle.user)
.await
.unwrap();
assert_eq!(result.name, Some("beepboop".to_string()));
let permission_override = PermissionFlags::from_vec(Vec::from([
PermissionFlags::MANAGE_CHANNELS,
PermissionFlags::MANAGE_MESSAGES,
]));
let permission_override = PermissionOverwrite {
id: bundle.user.object.id,
overwrite_type: "1".to_string(),
allow: permission_override,
deny: "0".to_string(),
};
Channel::edit_permissions(
&mut bundle.user,
bundle.channel.id,
permission_override.clone(),
)
.await
.unwrap();
Channel::delete_permission(&mut bundle.user, bundle.channel.id, permission_override.id)
.await
.unwrap();
common::teardown(bundle).await
}
#[tokio::test]
async fn get_channel_messages() {
let mut bundle = common::setup().await;
// First create some messages to read
for _ in 0..10 {
let _ = bundle
.user
.send_message(
&mut MessageSendSchema {
content: Some("A Message!".to_string()),
..Default::default()
},
bundle.channel.id,
None,
)
.await
.unwrap();
}
assert_eq!(
Channel::messages(
GetChannelMessagesSchema::before(Snowflake::generate()),
bundle.channel.id,
&mut bundle.user,
)
.await
.unwrap()
.len(),
10
);
// around is currently bugged in spacebar: https://github.com/spacebarchat/server/issues/1072
// assert_eq!(
// Channel::messages(
// GetChannelMessagesSchema::around(Snowflake::generate()).limit(10),
// bundle.channel.id,
// &mut bundle.user,
// )
// .await
// .unwrap()
// .len(),
// 5
// );
assert!(Channel::messages(
GetChannelMessagesSchema::after(Snowflake::generate()),
bundle.channel.id,
&mut bundle.user,
)
.await
.unwrap()
.is_empty());
common::teardown(bundle).await
}