Files

69 lines
2.3 KiB
Rust
Raw Permalink Normal View History

//! Kontroll av opplysningene rapporten skal bære: hvilket prosjekt, hvilken versjon og når.
use enok::data::Datakilde;
use enok::{inndata, kjor, rapport};
use std::path::{Path, PathBuf};
fn rapportkilde(versjon: Option<&str>, katalog: &str) -> String {
let mut b = inndata::les_bygning(Path::new("eksempler/referansebygg/smaahus.toml")).unwrap();
b.rapport.versjon = versjon.map(str::to_string);
let r = kjor::kjor(&b, &Datakilde::default()).unwrap();
let ut: PathBuf = std::env::temp_dir().join(katalog);
rapport::typst_ut::skriv(&r, &ut, &[]).unwrap();
std::fs::read_to_string(ut.join("rapport.typ")).unwrap()
}
fn oppsettlinjen(kilde: &str) -> String {
kilde
.lines()
.find(|l| l.starts_with("#show: oppsett.with("))
.unwrap_or_default()
.to_string()
}
/// Prosjektversjonen hører hjemme i internkontrollfeltet på forsiden.
#[test]
fn prosjektversjonen_staar_i_internkontrollfeltet() {
let kilde = rapportkilde(Some("v0.3.12"), "enok-rapport-med-versjon");
assert!(
kilde.contains("#internkontroll(("),
"mangler internkontrollfeltet"
);
assert!(
kilde.contains("(\"Prosjektversjon\", \"v0.3.12\")"),
"mangler prosjektversjonen"
);
assert!(kilde.contains("(\"Prosjekt\","), "mangler prosjektnavnet");
assert!(kilde.contains("(\"Dato\","), "mangler datoen");
assert!(
kilde.contains("(\"Beregnet med\", \"enok "),
"mangler enok-versjonen"
);
}
/// Uten oppgitt versjon står feltet der, men uten en tom versjonslinje.
#[test]
fn uten_versjon_staar_ingen_versjonslinje() {
let kilde = rapportkilde(None, "enok-rapport-uten-versjon");
assert!(kilde.contains("#internkontroll(("));
assert!(
!kilde.contains("Prosjektversjon"),
"skal ikke stå tom versjon"
);
}
/// Versjon og dato skal stå ett sted, på forsiden, ikke på hver eneste side.
#[test]
fn bunnteksten_gjentar_ikke_versjon_og_dato() {
let kilde = rapportkilde(Some("v0.3.12"), "enok-rapport-bunntekst");
let linje = oppsettlinjen(&kilde);
assert!(!linje.is_empty(), "fant ikke oppsettlinjen");
assert!(
!linje.contains("enok "),
"bunnteksten gjentar enok-versjonen: {linje}"
);
assert!(
!linje.contains("v0.3.12"),
"bunnteksten gjentar prosjektversjonen"
);
}