Skip to content

Commit

Permalink
test: Add test and better behavior for event ctors
Browse files Browse the repository at this point in the history
  • Loading branch information
mitsuhiko committed Mar 23, 2018
1 parent c09da41 commit 9428574
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ serde_json = "1.0"
serde_plain = "0.3.0"
url_serde = "0.2.0"
chrono = { version = "0.4.0", features = ["serde"] }
uuid = { version = "0.6.2", features = ["serde"] }
uuid = { version = "0.6.2", features = ["serde", "v4"] }

[patch.crates-io]
serde = { git = "https://github.com/mitsuhiko/serde", branch = "feature/flatten" }
Expand Down
26 changes: 19 additions & 7 deletions src/protocol/v7.rs
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,10 @@ pub struct ClientSdkInfo {
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(default)]
pub struct Event {
/// The ID of the event
#[serde(serialize_with = "serialize_event_id", rename = "event_id",
skip_serializing_if = "Option::is_none")]
pub id: Option<Uuid>,
/// The level of the event (defaults to error)
#[serde(skip_serializing_if = "Level::is_error")]
pub level: Level,
Expand Down Expand Up @@ -537,6 +541,7 @@ fn is_default_fingerprint(vec: &Vec<String>) -> bool {
impl Default for Event {
fn default() -> Event {
Event {
id: None,
level: Level::Error,
fingerprint: vec!["{{ default }}".into()],
culprit: None,
Expand Down Expand Up @@ -569,15 +574,11 @@ impl Default for Event {
}

impl Event {
/// Creates a new event without timestamp.
/// Creates a new event with the current timestamp and random id.
pub fn new() -> Event {
Default::default()
}

/// Creates a new event with the current timestamp.
pub fn new_with_current_timestamp() -> Event {
let mut rv = Event::new();
let mut rv: Event = Default::default();
rv.timestamp = Some(Utc::now());
rv.id = Some(Uuid::new_v4());
rv
}
}
Expand Down Expand Up @@ -699,6 +700,17 @@ impl ContextType {
}
}

fn serialize_event_id<S>(value: &Option<Uuid>, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
if let &Some(uuid) = value {
serializer.serialize_some(&uuid.simple().to_string())
} else {
serializer.serialize_none()
}
}

fn deserialize_context<'de, D>(deserializer: D) -> Result<HashMap<String, Context>, D::Error>
where
D: Deserializer<'de>,
Expand Down
29 changes: 29 additions & 0 deletions tests/test_protocol_v7.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,28 @@
extern crate sentry_types;
extern crate serde;
extern crate serde_json;
extern crate uuid;

use sentry_types::protocol::v7;

fn reserialize(event: &v7::Event) -> v7::Event {
let json = serde_json::to_string(event).unwrap();
serde_json::from_str(&json).unwrap()
}


#[test]
fn test_event_default_vs_new() {
let event_new = reserialize(&v7::Event::new());
let event_default = reserialize(&Default::default());

assert_eq!(event_default.id, None);
assert_eq!(event_default.timestamp, None);

assert!(event_new.id.unwrap() != uuid::Uuid::nil());
assert!(event_new.timestamp.is_some());
}

#[test]
fn test_basic_event() {
let mut event: v7::Event = Default::default();
Expand Down Expand Up @@ -72,3 +91,13 @@ fn test_multi_exception_list() {
});
assert_eq!(event, ref_event);
}

#[test]
fn test_basic_message_event() {
let mut event: v7::Event = Default::default();
event.level = v7::Level::Warning;
event.message = Some("Hello World!".into());
event.logger = Some("root".into());
let json = serde_json::to_string(&event).unwrap();
assert_eq!(&json, "{\"level\":\"warning\",\"message\":\"Hello World!\",\"logger\":\"root\"}");
}

0 comments on commit 9428574

Please sign in to comment.