generic add event
parent
00ac6d08f9
commit
854948fc6d
|
@ -64,3 +64,4 @@ serde_json = { version = "1.0.49" }
|
|||
tracing-subscriber = "0.2.3"
|
||||
tempfile = "3.1.0"
|
||||
mockito = "0.23.3"
|
||||
serde = "1.0.105"
|
||||
|
|
|
@ -9,12 +9,18 @@ mod test_it {
|
|||
use std::path::Path;
|
||||
|
||||
use crate::identifiers::UserId;
|
||||
use crate::events::collections::all::RoomEvent;
|
||||
use crate::events::{
|
||||
collections::all::RoomEvent,
|
||||
room::{
|
||||
power_levels::PowerLevelsEvent,
|
||||
},
|
||||
EventResult, FromRaw, TryFromRaw,
|
||||
};
|
||||
use crate::{AsyncClient, Session, SyncSettings};
|
||||
|
||||
use serde_json as json;
|
||||
use serde_json::Value;
|
||||
use mockito::{mock, Matcher};
|
||||
use serde::{Serialize, Deserialize};
|
||||
use serde::{de::DeserializeOwned, Deserialize, Serialize};
|
||||
use url::Url;
|
||||
|
||||
use std::convert::TryFrom;
|
||||
|
@ -22,9 +28,9 @@ mod test_it {
|
|||
use std::time::Duration;
|
||||
use std::panic;
|
||||
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct ResponseBuilder {
|
||||
events: Vec<RoomEvent>
|
||||
events: Vec<RoomEvent>,
|
||||
}
|
||||
|
||||
pub struct TestRunner {
|
||||
|
@ -40,34 +46,35 @@ mod test_it {
|
|||
impl ResponseBuilder {
|
||||
|
||||
/// Creates an `IncomingResponse` to hold events for a sync.
|
||||
pub fn create_sync_response(&mut self) -> &mut Self {
|
||||
pub fn create_sync_response(mut self) -> &mut Self {
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
/// Just throw events at the client, not part of a specific response.
|
||||
pub fn create_event_stream(&mut self) -> &mut Self {
|
||||
pub fn create_event_stream(mut self) -> Self {
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
/// Add an event either to the event stream or the appropriate `IncomingResponse` field.
|
||||
pub fn add_event_from_file<S: Serialize, P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
|
||||
let json = fs::read_to_string(path.as_ref()).expect(&format!("file not found {:?}", path.as_ref()));
|
||||
let event = serde_json::from_str::<S>(&json).expect("deserialization failed");
|
||||
self.events.push(event);
|
||||
pub fn add_event_from_file<Ev: TryFromRaw, P: AsRef<Path>>(mut self, path: P, variant: fn(Ev) -> RoomEvent) -> Self {
|
||||
let val = fs::read_to_string(path.as_ref()).expect(&format!("file not found {:?}", path.as_ref()));
|
||||
let json = serde_json::value::Value::from_str(&val).expect(&format!("not valid json {}", val));
|
||||
let event = serde_json::from_value::<ruma_events::EventResult<Ev>>(json).unwrap().into_result().unwrap();
|
||||
self.add_event(variant(event));
|
||||
self
|
||||
}
|
||||
|
||||
fn add_event<T, U>(&mut self, content: T, event: fn(T) -> RoomEvent) {
|
||||
self.events.push(event(content))
|
||||
fn add_event(&mut self, event: RoomEvent) {
|
||||
self.events.push(event)
|
||||
}
|
||||
|
||||
/// Consumes `ResponseBuilder and returns a `TestRunner`.
|
||||
///
|
||||
/// The `TestRunner` streams the events to the client and enables methods to set assertions
|
||||
/// about the state of the client.
|
||||
pub fn build(self) -> TestRunner {
|
||||
pub fn build(mut self) -> TestRunner {
|
||||
let mock = mock("POST", "/_matrix/client/r0/login")
|
||||
.with_status(200)
|
||||
.with_body_from_file("tests/data/login_response.json")
|
||||
|
@ -93,4 +100,12 @@ mod test_it {
|
|||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test() {
|
||||
let mut bld = ResponseBuilder::default();
|
||||
let runner = bld.add_event_from_file("./tests/data/events/power_levels.json", RoomEvent::RoomPowerLevels)
|
||||
.build();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"content": {
|
||||
"ban": 50,
|
||||
"events": {
|
||||
"m.room.avatar": 50,
|
||||
"m.room.canonical_alias": 50,
|
||||
"m.room.history_visibility": 100,
|
||||
"m.room.name": 50,
|
||||
"m.room.power_levels": 100,
|
||||
"m.room.message": 25
|
||||
},
|
||||
"events_default": 0,
|
||||
"invite": 0,
|
||||
"kick": 50,
|
||||
"redact": 50,
|
||||
"state_default": 50,
|
||||
"users": {
|
||||
"@example:localhost": 100,
|
||||
"@bob:localhost": 0
|
||||
},
|
||||
"users_default": 0
|
||||
},
|
||||
"event_id": "$15139375512JaHAW:localhost",
|
||||
"origin_server_ts": 1513937551359,
|
||||
"sender": "@example:localhost",
|
||||
"state_key": "",
|
||||
"type": "m.room.power_levels",
|
||||
"unsigned": {
|
||||
"age": 7034220535
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue