diff --git a/src/test/fakes.rs b/src/test/fakes.rs index a3372a68d..15cc910c4 100644 --- a/src/test/fakes.rs +++ b/src/test/fakes.rs @@ -59,10 +59,7 @@ impl<'a> FakeRelease<'a> { docsrs_version: "docs.rs 1.0.0 (000000000 1970-01-01)".into(), build_log: "It works!".into(), successful: true, - doc_coverage: Some(DocCoverage { - total_items: 10, - documented_items: 6, - }), + doc_coverage: None, }, source_files: Vec::new(), rustdoc_files: Vec::new(), @@ -186,6 +183,14 @@ impl<'a> FakeRelease<'a> { self } + pub(crate) fn coverage(mut self, documented_items: i32, total_items: i32) -> Self { + self.build_result.doc_coverage = Some(DocCoverage { + total_items, + documented_items, + }); + self + } + /// Returns the release_id pub(crate) fn create(self) -> Result { use std::fs; @@ -277,11 +282,9 @@ impl<'a> FakeRelease<'a> { &self.registry_crate_data, )?; crate::db::add_build_into_database(&mut db.conn(), release_id, &self.build_result)?; - crate::db::add_doc_coverage( - &mut db.conn(), - release_id, - self.build_result.doc_coverage.clone().unwrap(), - )?; + if let Some(coverage) = self.build_result.doc_coverage { + crate::db::add_doc_coverage(&mut db.conn(), release_id, coverage)?; + } Ok(release_id) } diff --git a/src/web/mod.rs b/src/web/mod.rs index 23dc8912b..b3e42df76 100644 --- a/src/web/mod.rs +++ b/src/web/mod.rs @@ -668,14 +668,6 @@ mod test { node.select("#clipboard").unwrap().count() == 1 } - fn check_doc_coverage_is_present_for_path(path: &str, web: &TestFrontend) -> bool { - let data = web.get(path).send().unwrap().text().unwrap(); - let node = kuchiki::parse_html().one(data); - node.select(".pure-menu-heading") - .unwrap() - .any(|e| e.text_contents().contains("Coverage")) - } - #[test] fn test_index_returns_success() { wrapper(|env| { @@ -689,20 +681,27 @@ mod test { fn test_doc_coverage_for_crate_pages() { wrapper(|env| { env.fake_release() - .name("fake_crate") + .name("foo") .version("0.0.1") .source_file("test.rs", &[]) - .create() - .unwrap(); + .coverage(6, 10) + .create()?; let web = env.frontend(); - assert!(check_doc_coverage_is_present_for_path( - "/crate/fake_crate/0.0.1", - web - )); - assert!(check_doc_coverage_is_present_for_path( - "/fake_crate/0.0.1/fake_crate", - web - )); + + let foo_crate = kuchiki::parse_html().one(web.get("/crate/foo/0.0.1").send()?.text()?); + for value in &["60%", "6", "10"] { + assert!(foo_crate + .select(".pure-menu-item b") + .unwrap() + .any(|e| e.text_contents().contains(value))); + } + + let foo_doc = kuchiki::parse_html().one(web.get("/foo/0.0.1/foo").send()?.text()?); + assert!(foo_doc + .select(".pure-menu-link b") + .unwrap() + .any(|e| e.text_contents().contains("60%"))); + Ok(()) }); } diff --git a/templates/crate/details.html b/templates/crate/details.html index d83b65ceb..4868474a9 100644 --- a/templates/crate/details.html +++ b/templates/crate/details.html @@ -19,7 +19,7 @@ {%- if details.documented_items and details.total_items -%} {% set percent = details.documented_items * 100 / details.total_items %}
  • Coverage
  • -
  • {{ percent | round(precision=2) }} %
    +
  • {{ percent | round(precision=2) }}%
    {{ details.documented_items }} out of {{ details.total_items }} items documented
  • {%- endif -%} diff --git a/templates/rustdoc/body.html b/templates/rustdoc/body.html index eb5b87b62..17ce5cf03 100644 --- a/templates/rustdoc/body.html +++ b/templates/rustdoc/body.html @@ -117,21 +117,7 @@ - {%- if krate.documented_items and krate.total_items -%} - {% set percent = krate.documented_items * 100 / krate.total_items %} - - {%- endif -%} - -
    + + {%- if krate.documented_items and krate.total_items -%} + {% set percent = krate.documented_items * 100 / krate.total_items %} + + {%- endif -%}