wptreport 0.0.5

Tools for working with WPT reports
Documentation
use std::collections::BTreeMap;

use crate::score_summary::{FocusArea, RunSummary, ScoreSummaryReport};
use crate::wpt_report::WptRunInfo;
use crate::AreaScores;

pub struct RunInfoWithScores {
    pub date: String,
    pub info: WptRunInfo,
    pub scores: BTreeMap<String, AreaScores>,
}

pub fn summarize_results(
    runs: &Vec<RunInfoWithScores>,
    focus_areas: &Vec<FocusArea>,
) -> ScoreSummaryReport {
    let focus_areas = (*focus_areas).clone();
    let scores = runs
        .iter()
        .map(|run| RunSummary {
            date: run.date.clone(),
            wpt_revision: run.info.revision[0..9].to_string(),
            product_version: run
                .info
                .browser_version
                .clone()
                .unwrap_or_else(|| String::from("unknown")),
            scores: focus_areas
                .iter()
                .map(|area| run.scores.get(&area.name).unwrap().interop_score())
                .collect(),
        })
        .collect();

    ScoreSummaryReport {
        focus_areas,
        scores,
    }
}