yew_styles/
utils.rs

1extern crate rand;
2extern crate wasm_bindgen;
3extern crate web_sys;
4use rand::{distributions::Alphanumeric, thread_rng, Rng};
5use wasm_bindgen::JsCast;
6use wasm_bindgen_test::*;
7use web_sys::{window, HtmlElement};
8use yew::utils;
9
10pub fn create_style(style: String, value: String, wrap: String) {
11    let element = get_html_element_by_class(&wrap, 0);
12
13    element.style().set_property(&style, &value).unwrap();
14}
15
16pub fn get_random_string(len: usize) -> String {
17    thread_rng()
18        .sample_iter(&Alphanumeric)
19        .take(len)
20        .map(char::from)
21        .collect()
22}
23
24pub fn get_html_element_by_class(class_name: &str, index: u32) -> HtmlElement {
25    utils::document()
26        .get_elements_by_class_name(class_name)
27        .get_with_index(index)
28        .unwrap()
29        .dyn_into::<HtmlElement>()
30        .unwrap()
31}
32
33wasm_bindgen_test_configure!(run_in_browser);
34
35#[wasm_bindgen_test]
36fn should_set_style_prop() {
37    let body = window().unwrap().document().unwrap().body().unwrap();
38
39    let element = window()
40        .unwrap()
41        .document()
42        .unwrap()
43        .create_element("div")
44        .unwrap();
45
46    element.set_text_content(Some("item"));
47    element.set_class_name("item");
48    body.append_child(&element).unwrap();
49
50    create_style(
51        "padding".to_string(),
52        "10px".to_string(),
53        "item".to_string(),
54    );
55
56    let item = window()
57        .unwrap()
58        .document()
59        .unwrap()
60        .get_elements_by_class_name("item")
61        .get_with_index(0)
62        .unwrap()
63        .dyn_into::<HtmlElement>()
64        .unwrap();
65
66    let value = item.style().get_property_value("padding").unwrap();
67
68    assert_eq!(value, "10px");
69}
70
71#[wasm_bindgen_test]
72fn should_generate_random_string() {
73    let mut random_values: Vec<String> = vec![];
74    let mut i = 0;
75    loop {
76        random_values.push(get_random_string(10));
77        i += 1;
78
79        if i == 1000 {
80            break;
81        }
82    }
83
84    for (i, value) in random_values.iter().enumerate() {
85        let mut index = 0;
86        let repeat = &random_values.iter().any(move |random_value| {
87            let exist = random_value == value && i != index;
88            index += 1;
89            exist
90        });
91        assert!(!*repeat);
92    }
93}