ctrf_rs/test/
step.rs

1// crate import(s)
2use crate::{impl_extra, test::Status};
3
4// std import(s)
5use std::collections::HashMap;
6
7// other import(s)
8use serde::{Deserialize, Serialize};
9use serde_json::Value;
10
11/// Step element for a CTRF report.
12/// Corresponds to the spec's ["Step"](https://www.ctrf.io/docs/specification/test#step-object) object.
13#[derive(Deserialize, Serialize, Debug, PartialEq)]
14#[serde(rename_all = "camelCase")]
15pub struct Step {
16    /// Required
17    pub name: String,
18    /// Required
19    pub status: Status,
20    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
21    extra: HashMap<String, Value>,
22}
23
24impl Step {
25    /// Creates an `Attachment` instance with the provided arguments and empty `extra`
26    pub fn new(name: String, status: Status) -> Self {
27        Self {
28            name,
29            status,
30            extra: HashMap::new(),
31        }
32    }
33}
34
35impl_extra!(Step);