|
|
|
@ -273,122 +273,19 @@ impl RoomMap { |
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use std::time::{Duration, SystemTime};
|
|
|
|
|
|
|
|
use solstice_proto::server::RoomListResponse;
|
|
|
|
|
|
|
|
use crate::room::{
|
|
|
|
RoomMessage, RoomMessageHistory, RoomMembership, RoomState, RoomVisibility,
|
|
|
|
};
|
|
|
|
|
|
|
|
use super::RoomMap;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_membership() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomMembership>(r#""Member""#).unwrap(),
|
|
|
|
RoomMembership::Member
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_visibility() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomVisibility>(r#""Public""#).unwrap(),
|
|
|
|
RoomVisibility::Public
|
|
|
|
);
|
|
|
|
}
|
|
|
|
use crate::room::{RoomState, RoomVisibility};
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_message() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomMessage>(
|
|
|
|
r#"{
|
|
|
|
"received_at": { "secs_since_epoch": 42, "nanos_since_epoch": 1337 },
|
|
|
|
"user_name":"karandeep",
|
|
|
|
"message":"namaste"
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
RoomMessage {
|
|
|
|
received_at: SystemTime::UNIX_EPOCH
|
|
|
|
+ Duration::from_secs(42)
|
|
|
|
+ Duration::from_nanos(1337),
|
|
|
|
user_name: "karandeep".to_string(),
|
|
|
|
message: "namaste".to_string()
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_room() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomState>(
|
|
|
|
r#"{
|
|
|
|
"membership": "Joining",
|
|
|
|
"visibility": "PrivateOwned",
|
|
|
|
"operated": false,
|
|
|
|
"user_count": 3,
|
|
|
|
"owner": null,
|
|
|
|
"operators": ["op1", "op2"],
|
|
|
|
"members": ["m1", "m2"],
|
|
|
|
"messages": [
|
|
|
|
{
|
|
|
|
"received_at": { "secs_since_epoch": 43, "nanos_since_epoch": 0 },
|
|
|
|
"user_name": "u2",
|
|
|
|
"message": "msg2"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"received_at": { "secs_since_epoch": 42, "nanos_since_epoch": 0 },
|
|
|
|
"user_name": "u1",
|
|
|
|
"message": "msg1"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"tickers": [["t11", "t12"], ["t21", "t22"]]
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
RoomState {
|
|
|
|
membership: RoomMembership::Joining,
|
|
|
|
visibility: RoomVisibility::PrivateOwned,
|
|
|
|
operated: false,
|
|
|
|
user_count: 3,
|
|
|
|
owner: None,
|
|
|
|
operators: ["op1".to_string(), "op2".to_string()]
|
|
|
|
.iter()
|
|
|
|
.cloned()
|
|
|
|
.collect(),
|
|
|
|
members: ["m1".to_string(), "m2".to_string()]
|
|
|
|
.iter()
|
|
|
|
.cloned()
|
|
|
|
.collect(),
|
|
|
|
messages: RoomMessageHistory::new(vec![
|
|
|
|
RoomMessage {
|
|
|
|
received_at: SystemTime::UNIX_EPOCH + Duration::from_secs(42),
|
|
|
|
user_name: "u1".to_string(),
|
|
|
|
message: "msg1".to_string(),
|
|
|
|
},
|
|
|
|
RoomMessage {
|
|
|
|
received_at: SystemTime::UNIX_EPOCH + Duration::from_secs(43),
|
|
|
|
user_name: "u2".to_string(),
|
|
|
|
message: "msg2".to_string(),
|
|
|
|
}
|
|
|
|
]),
|
|
|
|
tickers: vec![
|
|
|
|
("t11".to_string(), "t12".to_string()),
|
|
|
|
("t21".to_string(), "t22".to_string()),
|
|
|
|
],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn room_map_new_is_empty() {
|
|
|
|
fn new_is_empty() {
|
|
|
|
assert_eq!(RoomMap::new().get_room_list(), vec![]);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn room_map_get_strict() {
|
|
|
|
fn get_strict() {
|
|
|
|
let mut rooms = RoomMap::new();
|
|
|
|
rooms.set_room_list(RoomListResponse {
|
|
|
|
rooms: vec![("room a".to_string(), 42), ("room b".to_string(), 1337)],
|
|
|
|
|