use serde::{Deserialize, Serialize};
use super::condition::EvalCondition;
use super::ids::{JsonPath, TaskId};
use super::operator::ComparisonOperator;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct AssertionTask {
pub id: TaskId,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub context_path: Option<JsonPath>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub item_context_path: Option<JsonPath>,
pub operator: ComparisonOperator,
pub expected: serde_json::Value,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub depends_on: Vec<TaskId>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub condition: Option<EvalCondition>,
}