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}