#![allow(dead_code)]
use crate::{named_style, style, Style};
use wasm_bindgen_test::*;
use web_sys::{window, Element};
wasm_bindgen_test_configure!(run_in_browser);
fn get_style_element(style: &Style) -> Element {
let window = window().unwrap();
let document = window.document().unwrap();
document.get_element_by_id(&style.css_name).unwrap()
}
fn assert_style_doesnt_exists(id: &str) {
let window = window().unwrap();
let document = window.document().unwrap();
assert!(document.get_element_by_id(id).is_none());
}
#[wasm_bindgen_test]
fn test_generate_css() {
let style = style!(
"
font-size: {} rem;;
&:hover {{
color : blue;
background-color: red;
}}
@media ( max-width: 80 0 px ) {{
max-width: 100rem;
max-height: 20 0rem;
}}
background-color: rgba(13 7, 137, 137, 0.1);
",
30
)
.unwrap();
let id = style.css_name.clone();
let style_element = get_style_element(&style);
let mut expected_css = style.css_name.clone();
expected_css += " {\n\tbackground-color: rgba(137, 137, 137, 0.1);\n\tfont-size: 30rem;\n\t&:hover {\n\t\tbackground-color: red;\n\t\tcolor: blue;\n\t}\n\t@media (max-width: 800px) {\n\t\tmax-height: 200rem;\n\t\tmax-width: 100rem;\n\t}\n}";
assert_eq!(style.css, expected_css);
assert_eq!(style.css, style.components.to_css(&style.css_name));
assert_eq!(style.css, style_element.inner_html());
style.delete().unwrap();
assert_style_doesnt_exists(&id);
}
#[wasm_bindgen_test]
fn test_mutate_css_1() {
let mut style = style!(
"
font-size: {} rem;;
&:hover {{
color : blue;
background-color: red;
}}
@media ( max-width: 80 0 px ) {{
max-width: 100rem;
max-height: 20 0rem;
}}
background-color: rgba(13 7, 137, 137, 0.1);
",
30
)
.unwrap();
style
.remove_keys(vec!["&:hover", "@media (max-width: 800px)", "font-size"])
.unwrap();
let id = style.css_name.clone();
let style_element = get_style_element(&style);
let mut expected_css = style.css_name.clone();
expected_css += " {\n\tbackground-color: rgba(137, 137, 137, 0.1);\n}";
assert_eq!(style.css, expected_css);
assert_eq!(style.css, style.components.to_css(&style.css_name));
assert_eq!(style.css, style_element.inner_html());
style.delete().unwrap();
assert_style_doesnt_exists(&id);
}
#[wasm_bindgen_test]
fn test_mutate_css_2() {
let mut style = named_style!(
".myClass",
"
font-size: {} rem;;
&:hover {{
color : blue;
background-color: red;
}}
",
30
)
.unwrap();
style.extend_from_css("&:hover { color: red; }").unwrap();
style
.extend_from_style(
&style!("&:hover {{ color: green; }} @media (max-width: 800px) {{ color: blue; }}")
.unwrap(),
)
.unwrap();
let id = style.css_name.clone();
let style_element = get_style_element(&style);
let mut expected_css = style.css_name.clone();
expected_css += " {\n\tfont-size: 30rem;\n\t&:hover {\n\t\tcolor: green;\n\t}\n\t@media (max-width: 800px) {\n\t\tcolor: blue;\n\t}\n}";
assert_eq!(style.css, expected_css);
assert_eq!(style.css, style.components.to_css(&style.css_name));
assert_eq!(style.css, style_element.inner_html());
style.delete().unwrap();
assert_style_doesnt_exists(&id);
}