69 lines
2.3 KiB
Rust
69 lines
2.3 KiB
Rust
//! 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"
|
||
|
|
);
|
||
|
|
}
|