forked from jmug/stoatchat
feat: add id field to role (#470)
This commit is contained in:
@@ -151,29 +151,20 @@ mod test {
|
||||
name: "Hidden Channel".to_string(),
|
||||
description: None,
|
||||
nsfw: Some(false),
|
||||
voice: None
|
||||
voice: None,
|
||||
},
|
||||
true,
|
||||
)
|
||||
.await
|
||||
.expect("Failed to make new channel");
|
||||
|
||||
let role = Role {
|
||||
name: "Show Hidden Channel".to_string(),
|
||||
permissions: OverrideField { a: 0, d: 0 },
|
||||
colour: None,
|
||||
hoist: false,
|
||||
rank: 5,
|
||||
};
|
||||
|
||||
let role_id = role
|
||||
.create(&harness.db, &server.id)
|
||||
let role = Role::create(&harness.db, &server, "Show Hidden Channel".to_string())
|
||||
.await
|
||||
.expect("Failed to create the role");
|
||||
|
||||
let mut overrides = HashMap::new();
|
||||
overrides.insert(
|
||||
role_id.clone(),
|
||||
role.id.clone(),
|
||||
OverrideField {
|
||||
a: (ChannelPermission::ViewChannel) as i64,
|
||||
d: 0,
|
||||
@@ -281,7 +272,7 @@ mod test {
|
||||
"Mention failed to be scrubbed when the user cannot see the channel"
|
||||
);
|
||||
|
||||
let second_member_roles = vec![role_id.clone()];
|
||||
let second_member_roles = vec![role.id.clone()];
|
||||
let partial = PartialMember {
|
||||
id: None,
|
||||
joined_at: None,
|
||||
@@ -290,7 +281,7 @@ mod test {
|
||||
timeout: None,
|
||||
roles: Some(second_member_roles),
|
||||
can_publish: None,
|
||||
can_receive: None
|
||||
can_receive: None,
|
||||
};
|
||||
second_member
|
||||
.update(&harness.db, partial, vec![])
|
||||
@@ -496,7 +487,7 @@ mod test {
|
||||
let (_, _, other_user) = harness.new_user().await;
|
||||
let (server, _) = harness.new_server(&user).await;
|
||||
let channel = harness.new_channel(&server).await;
|
||||
let (role_id, _role) = harness
|
||||
let role = harness
|
||||
.new_role(
|
||||
&server,
|
||||
1,
|
||||
@@ -518,7 +509,7 @@ mod test {
|
||||
Some(&harness.amqp),
|
||||
channel.clone(),
|
||||
v0::DataMessageSend {
|
||||
content: Some(format!("Mentioning @everyone and role <%{}>", &role_id)),
|
||||
content: Some(format!("Mentioning @everyone and role <%{}>", &role.id)),
|
||||
nonce: None,
|
||||
attachments: None,
|
||||
replies: None,
|
||||
@@ -563,7 +554,7 @@ mod test {
|
||||
Some(&harness.amqp),
|
||||
channel.clone(),
|
||||
v0::DataMessageSend {
|
||||
content: Some(format!("Mentioning `@everyone` and role `<%{}>`", &role_id)),
|
||||
content: Some(format!("Mentioning `@everyone` and role `<%{}>`", &role.id)),
|
||||
nonce: None,
|
||||
attachments: None,
|
||||
replies: None,
|
||||
@@ -605,7 +596,7 @@ mod test {
|
||||
"Role mentions detected when inside codeblock"
|
||||
);
|
||||
|
||||
other_member.roles.push(role_id.clone());
|
||||
other_member.roles.push(role.id.clone());
|
||||
harness
|
||||
.db
|
||||
.update_member(
|
||||
@@ -615,10 +606,10 @@ mod test {
|
||||
id: None,
|
||||
joined_at: None,
|
||||
nickname: None,
|
||||
roles: Some(vec![role_id.clone()]),
|
||||
roles: Some(vec![role.id.clone()]),
|
||||
timeout: None,
|
||||
can_publish: None,
|
||||
can_receive: None
|
||||
can_receive: None,
|
||||
},
|
||||
vec![],
|
||||
)
|
||||
@@ -632,7 +623,7 @@ mod test {
|
||||
Some(&harness.amqp),
|
||||
channel.clone(),
|
||||
v0::DataMessageSend {
|
||||
content: Some(format!("Mentioning @everyone and role <%{}>", &role_id)),
|
||||
content: Some(format!("Mentioning @everyone and role <%{}>", &role.id)),
|
||||
nonce: None,
|
||||
attachments: None,
|
||||
replies: None,
|
||||
|
||||
@@ -40,17 +40,10 @@ pub async fn create(
|
||||
}));
|
||||
};
|
||||
|
||||
let role = Role {
|
||||
name: data.name,
|
||||
// Rank of the new role should be below the lowest role
|
||||
rank: server.roles.len() as i64,
|
||||
colour: None,
|
||||
hoist: false,
|
||||
permissions: Default::default(),
|
||||
};
|
||||
let role = Role::create(db, &server, data.name).await?;
|
||||
|
||||
Ok(Json(v0::NewRoleResponse {
|
||||
id: role.create(db, &server.id).await?,
|
||||
id: role.id.clone(),
|
||||
role: role.into(),
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ pub async fn delete(
|
||||
return Err(create_error!(NotElevated));
|
||||
}
|
||||
|
||||
role.delete(db, &server.id, &role_id).await?;
|
||||
role.delete(db, &server.id).await?;
|
||||
|
||||
for channel_id in &server.channels {
|
||||
let channel = Reference::from_unchecked(channel_id).as_channel(db).await?;
|
||||
|
||||
@@ -61,7 +61,6 @@ pub async fn edit(
|
||||
role.update(
|
||||
db,
|
||||
&server.id,
|
||||
&role_id,
|
||||
partial,
|
||||
remove.into_iter().map(Into::into).collect(),
|
||||
)
|
||||
|
||||
@@ -6,7 +6,7 @@ use futures::StreamExt;
|
||||
use rand::Rng;
|
||||
use redis_kiss::redis::aio::PubSub;
|
||||
use revolt_database::{
|
||||
events::client::EventV1, Channel, Database, Member, Message, Server, User, AMQP,
|
||||
events::client::EventV1, Channel, Database, Member, Message, PartialRole, Server, User, AMQP,
|
||||
};
|
||||
use revolt_database::{util::idempotency::IdempotencyKey, Role};
|
||||
use revolt_models::v0;
|
||||
@@ -139,21 +139,26 @@ impl TestHarness {
|
||||
server: &Server,
|
||||
rank: i64,
|
||||
overrides: Option<OverrideField>,
|
||||
) -> (String, Role) {
|
||||
let role = Role {
|
||||
name: TestHarness::rand_string(),
|
||||
permissions: overrides.unwrap_or(OverrideField { a: 0, d: 0 }),
|
||||
rank,
|
||||
colour: None,
|
||||
hoist: false,
|
||||
};
|
||||
|
||||
let id = role
|
||||
.create(&self.db, &server.id)
|
||||
) -> Role {
|
||||
let mut role = Role::create(&self.db, &server, TestHarness::rand_string())
|
||||
.await
|
||||
.expect("Failed to create test role");
|
||||
|
||||
(id, role)
|
||||
if let Some(overrides) = overrides {
|
||||
role.update(
|
||||
&self.db,
|
||||
&server.id,
|
||||
PartialRole {
|
||||
permissions: Some(overrides),
|
||||
..Default::default()
|
||||
},
|
||||
Vec::new(),
|
||||
)
|
||||
.await
|
||||
.expect("Failed to set test role overrides");
|
||||
};
|
||||
|
||||
role
|
||||
}
|
||||
|
||||
pub async fn new_channel(&self, server: &Server) -> Channel {
|
||||
@@ -165,7 +170,7 @@ impl TestHarness {
|
||||
name: "Test Channel".to_string(),
|
||||
description: None,
|
||||
nsfw: Some(false),
|
||||
voice: None
|
||||
voice: None,
|
||||
},
|
||||
true,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user