use rtdlib::types::*;
#[test]
fn test_authorization_state() {
let json = r#"{"@type":"updateAuthorizationState","@extra":null,"authorization_state":{"@type":"authorizationStateWaitTdlibParameters","@extra":null}}"#;
let state: UpdateAuthorizationState = serde_json::from_str(&json[..]).expect("Json fail");
assert_eq!("updateAuthorizationState", state.td_name());
let rjson = state.to_json();
assert!(rjson.is_ok());
assert_eq!(json, rjson.unwrap());
}
#[test]
fn test_builder_set_tdlib_parameters() {
let set_tdlib_paramters = SetTdlibParameters::builder()
.parameters(
TdlibParameters::builder()
.use_test_dc(false)
.database_directory("/tmp/td")
.files_directory("/tmp/td")
.use_file_database(false)
.api_id(123)
.api_hash("abc")
.build()
).build();
println!("{}", set_tdlib_paramters.to_json().unwrap())
}
#[test]
fn test_json_td_type() {
let json_update_authorization_state = r#"
{"@type":"updateAuthorizationState","authorization_state":{"@type":"authorizationStateWaitTdlibParameters"}}
"#;
let (td_type, extra) = crate::detect_td_type_and_extra(json_update_authorization_state);
assert_eq!(td_type, Some("updateAuthorizationState".to_string()));
assert_eq!(extra, None);
let json_update_option = r#"
{"@type":"updateOption","name":"version","value":{"@type":"optionValueString","value":"1.6.4"}}
"#;
let (td_type, extra) = crate::detect_td_type_and_extra(json_update_option);
assert_eq!(td_type, Some("updateOption".to_string()));
assert_eq!(extra, None);
let json_error = r#"
{"@type":"error","code":401,"message":"Initialization parameters are needed: call setTdlibParameters first","@extra":"b51afb43-ea2a-45be-afa5-3957482206b3"}
"#;
let (td_type, extra) = crate::detect_td_type_and_extra(json_error);
assert_eq!(td_type, Some("error".to_string()));
assert_eq!(extra, Some("b51afb43-ea2a-45be-afa5-3957482206b3".to_string()));
let error: Error = serde_json::from_str(&json_error[..]).expect("Json fail");
let td_type = TdType::Error(error);
println!("{:?}", td_type);
}