aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2024-01-13 04:36:58 +0000
committerGitHub <noreply@github.com>2024-01-13 04:36:58 +0000
commitc78db05996af04e52d6b16f961a8b247a60c3e88 (patch)
tree53149c8ee8aa68fa680d23e5011a4c3adfd5b5de /tests
parentUse tokio::fs instead of std::fs to enable async file operations (fixes #445) (diff)
parentSet default sorting order and method with arguments (diff)
downloadminiserve-c78db05996af04e52d6b16f961a8b247a60c3e88.tar.gz
miniserve-c78db05996af04e52d6b16f961a8b247a60c3e88.zip
Merge pull request #1308 from ElliottLandsborough/set_sorting_order_with_arguments
Set default sorting order and method with arguments
Diffstat (limited to 'tests')
-rw-r--r--tests/navigation.rs30
-rw-r--r--tests/utils/mod.rs16
2 files changed, 45 insertions, 1 deletions
diff --git a/tests/navigation.rs b/tests/navigation.rs
index 3bd7415..34eee2f 100644
--- a/tests/navigation.rs
+++ b/tests/navigation.rs
@@ -1,12 +1,13 @@
mod fixtures;
mod utils;
-use fixtures::{server, Error, TestServer, DEEPLY_NESTED_FILE, DIRECTORIES};
+use fixtures::{server, Error, TestServer, FILES, DEEPLY_NESTED_FILE, DIRECTORIES};
use pretty_assertions::{assert_eq, assert_ne};
use rstest::rstest;
use select::document::Document;
use std::process::{Command, Stdio};
use utils::get_link_from_text;
+use utils::get_link_hrefs_from_text_with_prefix;
#[rstest(
input,
@@ -147,3 +148,30 @@ fn can_navigate_using_breadcrumbs(
Ok(())
}
+
+#[rstest]
+#[case(server(&["--default-sorting-method", "date", "--default-sorting-order", "desc"]))]
+#[case(server(&["--default-sorting-method", "date", "--default-sorting-order", "asc"]))]
+/// We can specify the default sorting order
+fn can_specify_default_sorting_order(#[case] server: TestServer) -> Result<(), Error> {
+ let slash = String::from("/");
+ let base_url = server.url();
+ let nested_url = base_url.join(&slash)?;
+
+ let resp = reqwest::blocking::get(nested_url.as_str())?;
+ let body = resp.error_for_status()?;
+ let parsed = Document::from_read(body)?;
+
+ let links = get_link_hrefs_from_text_with_prefix(&parsed, "/");
+ let first_created_file = slash + FILES.first().unwrap();
+
+ if links.first().unwrap() == &first_created_file {
+ assert_eq!("/very/?sort=date&order=asc", links.last().unwrap());
+ }
+
+ if links.last().unwrap() == &first_created_file {
+ assert_eq!("/very/?sort=date&order=desc", links.first().unwrap());
+ }
+
+ Ok(())
+}
diff --git a/tests/utils/mod.rs b/tests/utils/mod.rs
index 734d33b..64433fc 100644
--- a/tests/utils/mod.rs
+++ b/tests/utils/mod.rs
@@ -12,3 +12,19 @@ pub fn get_link_from_text(document: &Document, text: &str) -> Option<String> {
.next()?;
Some(a_elem.attr("href")?.to_string())
}
+
+/// Return the href attributes of all links that start with the specified prefix `text`.
+pub fn get_link_hrefs_from_text_with_prefix(document: &Document, text: &str) -> Vec<String> {
+ let mut vec: Vec<String> = Vec::new();
+
+ let a_elem = document.find(Name("a"));
+
+ for element in a_elem {
+ let str = element.attr("href").unwrap_or("");
+ if str.to_string().starts_with(text) {
+ vec.push(str.to_string());
+ }
+ }
+
+ return vec;
+}