Merge pull request #111 from polyphony-chat/feature/relationships
Feature/relationships
This commit is contained in:
commit
d7894ff006
|
@ -58,8 +58,8 @@
|
|||
### User Management
|
||||
- [ ] [User profile customization](https://github.com/polyphony-chat/chorus/issues/41)
|
||||
- [x] Gettings users and user profiles
|
||||
- [ ] [Friend requests](https://github.com/polyphony-chat/chorus/issues/92)
|
||||
- [ ] [Blocking users](https://github.com/polyphony-chat/chorus/issues/92)
|
||||
- [x] [Friend requests](https://github.com/polyphony-chat/chorus/issues/92)
|
||||
- [x] [Blocking users](https://github.com/polyphony-chat/chorus/issues/92)
|
||||
- [ ] User presence (online, offline, idle, etc.)
|
||||
- [ ] User status (custom status, etc.)
|
||||
- [x] Account deletion
|
||||
|
|
|
@ -143,7 +143,7 @@ impl UserMeta {
|
|||
self.belongs_to.borrow().urls.get_api(),
|
||||
user_id
|
||||
);
|
||||
let request = Client::new().post(url).bearer_auth(self.token());
|
||||
let request = Client::new().delete(url).bearer_auth(self.token());
|
||||
handle_request_as_option(request, self, crate::api::limits::LimitType::Global).await
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ use crate::types::Snowflake;
|
|||
|
||||
use super::PublicUser;
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, Default)]
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, Default, PartialEq, Eq)]
|
||||
/// See https://discord-userdoccers.vercel.app/resources/user#relationship-structure
|
||||
pub struct Relationship {
|
||||
pub id: Snowflake,
|
||||
|
@ -17,7 +17,7 @@ pub struct Relationship {
|
|||
pub since: Option<DateTime<Utc>>,
|
||||
}
|
||||
|
||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default)]
|
||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Default, Eq, PartialEq)]
|
||||
#[repr(u8)]
|
||||
/// See https://discord-userdoccers.vercel.app/resources/user#relationship-type
|
||||
pub enum RelationshipType {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use chorus::types::{self, RegisterSchema, RegisterSchemaOptions};
|
||||
use chorus::types::{self, RegisterSchema, RegisterSchemaOptions, Relationship, RelationshipType};
|
||||
|
||||
mod common;
|
||||
|
||||
|
@ -47,6 +47,98 @@ async fn test_get_relationships() {
|
|||
};
|
||||
other_user.send_friend_request(friend_request_schema).await;
|
||||
let relationships = user.get_relationships().await.unwrap();
|
||||
println!("{:?}", relationships);
|
||||
assert_eq!(relationships.get(0).unwrap().id, other_user.object.id);
|
||||
common::teardown(bundle).await
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_modify_relationship_friends() {
|
||||
let register_schema = RegisterSchemaOptions {
|
||||
date_of_birth: Some("2000-01-01".to_string()),
|
||||
..RegisterSchema::builder("integrationtestuser2", true)
|
||||
}
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
let mut bundle = common::setup().await;
|
||||
let belongs_to = &mut bundle.instance;
|
||||
let user = &mut bundle.user;
|
||||
let mut other_user = belongs_to.register_account(®ister_schema).await.unwrap();
|
||||
other_user
|
||||
.modify_user_relationship(
|
||||
&user.object.id.to_string(),
|
||||
types::RelationshipType::Friends,
|
||||
)
|
||||
.await;
|
||||
let relationships = user.get_relationships().await.unwrap();
|
||||
assert_eq!(relationships.get(0).unwrap().id, other_user.object.id);
|
||||
assert_eq!(
|
||||
relationships.get(0).unwrap().relationship_type,
|
||||
RelationshipType::Incoming
|
||||
);
|
||||
let relationships = other_user.get_relationships().await.unwrap();
|
||||
assert_eq!(relationships.get(0).unwrap().id, user.object.id);
|
||||
assert_eq!(
|
||||
relationships.get(0).unwrap().relationship_type,
|
||||
RelationshipType::Outgoing
|
||||
);
|
||||
user.modify_user_relationship(
|
||||
other_user.object.id.to_string().as_str(),
|
||||
RelationshipType::Friends,
|
||||
)
|
||||
.await;
|
||||
assert_eq!(
|
||||
other_user
|
||||
.get_relationships()
|
||||
.await
|
||||
.unwrap()
|
||||
.get(0)
|
||||
.unwrap()
|
||||
.relationship_type,
|
||||
RelationshipType::Friends
|
||||
);
|
||||
user.remove_relationship(other_user.object.id.to_string().as_str())
|
||||
.await;
|
||||
assert_eq!(
|
||||
other_user.get_relationships().await.unwrap(),
|
||||
Vec::<Relationship>::new()
|
||||
);
|
||||
common::teardown(bundle).await
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_modify_relationship_block() {
|
||||
let register_schema = RegisterSchemaOptions {
|
||||
date_of_birth: Some("2000-01-01".to_string()),
|
||||
..RegisterSchema::builder("integrationtestuser2", true)
|
||||
}
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
let mut bundle = common::setup().await;
|
||||
let belongs_to = &mut bundle.instance;
|
||||
let user = &mut bundle.user;
|
||||
let mut other_user = belongs_to.register_account(®ister_schema).await.unwrap();
|
||||
other_user
|
||||
.modify_user_relationship(
|
||||
&user.object.id.to_string(),
|
||||
types::RelationshipType::Blocked,
|
||||
)
|
||||
.await;
|
||||
let relationships = user.get_relationships().await.unwrap();
|
||||
assert_eq!(relationships, Vec::<Relationship>::new());
|
||||
let relationships = other_user.get_relationships().await.unwrap();
|
||||
assert_eq!(relationships.get(0).unwrap().id, user.object.id);
|
||||
assert_eq!(
|
||||
relationships.get(0).unwrap().relationship_type,
|
||||
RelationshipType::Blocked
|
||||
);
|
||||
other_user
|
||||
.remove_relationship(user.object.id.to_string().as_str())
|
||||
.await;
|
||||
assert_eq!(
|
||||
other_user.get_relationships().await.unwrap(),
|
||||
Vec::<Relationship>::new()
|
||||
);
|
||||
common::teardown(bundle).await
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue