From 3e08364cd5fdd3f3117b83e53754977203c44497 Mon Sep 17 00:00:00 2001 From: rasul Date: Sun, 2 Feb 2020 18:36:19 -0600 Subject: [PATCH] expand test to check html after post --- src/tests.rs | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/tests.rs b/src/tests.rs index deb6a1b..f55f773 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -23,7 +23,14 @@ fn get_index() { } #[test] -fn submit_html() { +fn submit_html_and_check_html() { + use askama::Template; + use syntect::html::ClassedHTMLGenerator; + + use crate::routes::view::View; + use crate::paste::Paste; + use crate::syntax::SYNTAX_SET; + let res = TEST_SERVER .client() .post( @@ -34,6 +41,44 @@ fn submit_html() { .perform() .unwrap(); assert_eq!(res.status(), StatusCode::SEE_OTHER); + + let location: String = res.headers().get("Location").unwrap().to_str().unwrap().into(); + let id: String = location.clone().split('/').last().unwrap().into(); + let mut new_url = CONFIG.url.clone(); + new_url.push_str(&location); + + let res = TEST_SERVER.client().get(new_url).perform().unwrap(); + assert_eq!(res.status(), StatusCode::OK); + let body = res.read_utf8_body().unwrap(); + + let mut path = CONFIG.data_directory.clone(); + path.push(&id); + let paste = Paste::from_file(path).unwrap(); + + let text_lines: Vec = paste.text.lines().map(|s| s.into()).collect(); + let index_len = format!("{}", text_lines.len()).len(); + let syntax = SYNTAX_SET + .find_syntax_by_name(&paste.lang) + .unwrap_or_else(|| SYNTAX_SET.find_syntax_plain_text()); + let mut high_lines: Vec = Vec::new(); + + for line in text_lines { + let mut html_generator = ClassedHTMLGenerator::new(&syntax, &SYNTAX_SET); + html_generator.parse_html_for_line(&line); + high_lines.push(html_generator.finalize()); + } + + let template: View = View { + id, + dt: paste.dt.format("%Y-%m-%dT%H:%MZ").to_string(), + text_lines: high_lines, + index_len, + site_url: CONFIG.url.clone(), + syntax: paste.lang, + }; + + let content = template.render().unwrap(); + assert_eq!(body, content); } #[test]