use std::time::Duration;
use serde::{Serialize, Serializer};
#[derive(Default, Debug, Serialize)]
pub struct TestData {
#[serde(rename = "runs")]
pub run_data: Vec<RunData>,
}
impl TestData {
pub fn new() -> Self {
Self {
run_data: Vec::new(),
}
}
}
#[derive(Debug, Serialize)]
pub struct RunData {
pub name: String,
#[serde(rename = "requests")]
pub outcomes: Vec<RequestOutcome>,
}
impl RunData {
pub fn new(name: String) -> Self {
Self {
name,
outcomes: Vec::new(),
}
}
}
#[derive(Debug, Serialize)]
pub struct RequestOutcome {
pub name: String,
pub method: String,
pub url: String,
pub passing: bool,
pub breaking: bool,
pub status: Option<u16>,
pub response_body: Option<String>,
#[serde(serialize_with = "serialize_duration_as_seconds", rename = "duration_seconds")]
pub duration: Duration,
}
fn serialize_duration_as_seconds<S: Serializer>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error> {
serializer.serialize_f64(duration.as_secs_f64())
}