diff options
author | Gaurav <allmanpride@gmail.com> | 2022-08-26 21:43:26 +0000 |
---|---|---|
committer | Gaurav <allmanpride@gmail.com> | 2022-08-26 21:54:59 +0000 |
commit | 7831056a0fdd2319778f1368601394e09aada27a (patch) | |
tree | 5d4cc6e34ca5e1c1c6f947560ea2ab15f1bcc3cb | |
parent | Appease `cargo fmt` (diff) | |
download | miniserve-7831056a0fdd2319778f1368601394e09aada27a.tar.gz miniserve-7831056a0fdd2319778f1368601394e09aada27a.zip |
Make cases for `--readme` test functions
* remove extra functions for directory check
* add directory listing check for with and without readme
Diffstat (limited to '')
-rw-r--r-- | tests/readme.rs | 75 |
1 files changed, 27 insertions, 48 deletions
diff --git a/tests/readme.rs b/tests/readme.rs index 59f3d65..ea4e301 100644 --- a/tests/readme.rs +++ b/tests/readme.rs @@ -1,15 +1,21 @@ mod fixtures; -use fixtures::{server, Error, TestServer, DIRECTORIES}; +use fixtures::{server, Error, TestServer, DIRECTORIES, FILES}; use rstest::rstest; -use select::document::Document; use select::predicate::Attr; +use select::{document::Document, node::Node}; #[rstest] /// Do not show readme contents by default fn no_readme_contents(server: TestServer) -> Result<(), Error> { let body = reqwest::blocking::get(server.url())?.error_for_status()?; let parsed = Document::from_read(body)?; + for &file in FILES { + assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + } + for &dir in DIRECTORIES { + assert!(parsed.find(|x: &Node| x.text() == dir).next().is_some()); + } assert!(parsed.find(Attr("id", "readme")).next().is_none()); assert!(parsed.find(Attr("id", "readme-filename")).next().is_none()); assert!(parsed.find(Attr("id", "readme-contents")).next().is_none()); @@ -17,11 +23,26 @@ fn no_readme_contents(server: TestServer) -> Result<(), Error> { Ok(()) } -#[rstest] +#[rstest( + dir, + content, + case("", "Test Hello Yes"), + case("/dira/", "This is dira/readme.md"), + case("/dirb/", "This is dirb/readme.md") +)] /// Show readme contents when told to if there is readme.md file -fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(), Error> { - let body = reqwest::blocking::get(server.url())?.error_for_status()?; +fn show_readme_contents( + #[with(&["--readme"])] server: TestServer, + dir: &str, + content: &str, +) -> Result<(), Error> { + let body = reqwest::blocking::get(server.url().join(dir)?)?.error_for_status()?; let parsed = Document::from_read(body)?; + + for &file in FILES { + assert!(parsed.find(|x: &Node| x.text() == file).next().is_some()); + } + assert!(parsed.find(Attr("id", "readme")).next().is_some()); assert!(parsed.find(Attr("id", "readme-filename")).next().is_some()); assert!( @@ -40,50 +61,8 @@ fn show_readme_contents(#[with(&["--readme"])] server: TestServer) -> Result<(), .unwrap() .text() .trim() - == "Test Hello Yes" + == content ); Ok(()) } - -#[rstest] -/// Show readme contents when told to if there is readme.md file on directories. -fn show_readme_contents_directories( - #[with(&["--readme"])] server: TestServer, -) -> Result<(), Error> { - let directories = DIRECTORIES.to_vec(); - - for directory in directories { - let dir_body = - reqwest::blocking::get(server.url().join(&directory)?)?.error_for_status()?; - let dir_body_parsed = Document::from_read(dir_body)?; - assert!(dir_body_parsed.find(Attr("id", "readme")).next().is_some()); - assert!(dir_body_parsed - .find(Attr("id", "readme-filename")) - .next() - .is_some()); - assert!( - dir_body_parsed - .find(Attr("id", "readme-filename")) - .next() - .unwrap() - .text() - == "readme.md" - ); - assert!(dir_body_parsed - .find(Attr("id", "readme-contents")) - .next() - .is_some()); - assert!( - dir_body_parsed - .find(Attr("id", "readme-contents")) - .next() - .unwrap() - .text() - .trim() - == &format!("This is {}readme.md", directory) - ); - } - - Ok(()) -} |