use wamp_core::event;
use wamp_core::messages::Event;
use serde_json::{json, Value};
// Create a event message with default values
let event = event!(1, 2);
// Which is the same as creating this:
let event2 = Event {
subscription: 1,
publication: 2,
details: json!({}),
args: Value::Null,
kwargs: Value::Null
};
assert_eq!(event, event2);
// Some other ways you can construct it using the macro
// Create a event with custom details but empty args and kwargs
let _ = event!(1, 2, json!( { "key": "value" } ));
// Create a event with custom args or kwargs, but empty details
let _ = event!(1, 2, args: json!( [ 1, 2, 3 ] ));
let _ = event!(1, 2, kwargs: json!( { "key": "value" } ));
// Create a event with custom args and kwargs, but empty details
let _ = event!(1, 2, args: json!([ 1, 2, 3 ]), kwargs: json!({ "key": "value" }));
// Create a event with custom details, and either custom args OR custom kwargs
let _ = event!(1, 2, json!( { "key": "value" } ), args: json!( [ 1, 2, 3 ] ));
let _ = event!(1, 2, json!( { "key": "value" } ), kwargs: json!( { "key": "value" } ));
// Create a event with custom details, and both custom args and kwargs
// Note that when you use all "required" arguments for the struuct, keyword arguments should not be used for args and kwargs
let _ = event!(1, 2, json!({}), json!([]), json!({}));