use crate::domain::model::check::CheckViolation;
use crate::domain::model::issue::IssueEdit;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct IssueFinding {
pub violation: CheckViolation,
pub fix: Option<IssueEdit>,
}
impl IssueFinding {
pub fn report(violation: CheckViolation) -> Self {
Self {
violation,
fix: None,
}
}
}
#[cfg(test)]
pub mod strategy {
use super::IssueFinding;
use crate::domain::model::check::check_violation::strategy::check_violation;
use crate::domain::model::issue::edit::strategy::issue_edit;
use proptest::prelude::*;
prop_compose! {
pub fn issue_finding()(
violation in check_violation(),
fix in proptest::option::of(issue_edit()),
) -> IssueFinding {
IssueFinding { violation, fix }
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use proptest::prelude::*;
proptest! {
#[test]
fn report_carries_no_fix(v in crate::domain::model::check::check_violation::strategy::check_violation()) {
prop_assert!(IssueFinding::report(v).fix.is_none());
}
}
}