diff options
Diffstat (limited to 'vendor/web-sys/tests/wasm/button_element.rs')
-rw-r--r-- | vendor/web-sys/tests/wasm/button_element.rs | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/vendor/web-sys/tests/wasm/button_element.rs b/vendor/web-sys/tests/wasm/button_element.rs new file mode 100644 index 000000000..d94160aac --- /dev/null +++ b/vendor/web-sys/tests/wasm/button_element.rs @@ -0,0 +1,122 @@ +use wasm_bindgen::prelude::*; +use wasm_bindgen_test::*; +use web_sys::{HtmlButtonElement, HtmlFormElement, Node}; + +#[wasm_bindgen(module = "/tests/wasm/element.js")] +extern "C" { + fn new_button() -> HtmlButtonElement; + fn new_form() -> HtmlFormElement; +} + +#[wasm_bindgen_test] +fn test_button_element() { + let element = new_button(); + let location = web_sys::window().unwrap().location().href().unwrap(); + assert!(!element.autofocus(), "Shouldn't have autofocus"); + element.set_autofocus(true); + assert!(element.autofocus(), "Should have autofocus"); + + assert!(!element.disabled(), "Shouldn't be disabled"); + element.set_disabled(true); + assert!(element.disabled(), "Should be disabled"); + + match element.form() { + None => assert!(true, "Shouldn't have a form"), + _ => assert!(false, "Shouldn't have a form"), + }; + + assert_eq!( + element.form_action(), + location, + "Should have the pages location" + ); + element.set_form_action("http://boop.com/"); + assert_eq!( + element.form_action(), + "http://boop.com/", + "Should have a form_action" + ); + + assert_eq!(element.form_enctype(), "", "Should have no enctype"); + element.set_form_enctype("text/plain"); + assert_eq!( + element.form_enctype(), + "text/plain", + "Should have a plain text enctype" + ); + + assert_eq!(element.form_method(), "", "Should have no method"); + element.set_form_method("POST"); + assert_eq!(element.form_method(), "post", "Should have a POST method"); + + assert!(!element.form_no_validate(), "Should validate"); + element.set_form_no_validate(true); + assert!(element.form_no_validate(), "Should not validate"); + + assert_eq!(element.form_target(), "", "Should have no target"); + element.set_form_target("_blank"); + assert_eq!( + element.form_target(), + "_blank", + "Should have a _blank target" + ); + + assert_eq!(element.name(), "", "Shouldn't have a name"); + element.set_name("button-name"); + assert_eq!(element.name(), "button-name", "Should have a name"); + + assert_eq!(element.type_(), "submit", "Shouldn't have a type"); + element.set_type("reset"); + assert_eq!(element.type_(), "reset", "Should have a reset type"); + + assert_eq!(element.value(), "", "Shouldn't have a value"); + element.set_value("value1"); + assert_eq!(element.value(), "value1", "Should have a value"); + + assert_eq!(element.will_validate(), false, "Shouldn't validate"); + assert_eq!( + element.validation_message().unwrap(), + "", + "Shouldn't have a value" + ); + assert_eq!(element.check_validity(), true, "Should be valid"); + assert_eq!(element.report_validity(), true, "Should be valid"); + element.set_custom_validity("Boop"); // Method exists but doesn't impact validity + assert_eq!(element.check_validity(), true, "Should be valid"); + assert_eq!(element.report_validity(), true, "Should be valid"); + + assert_eq!( + element.labels().length(), + 0, + "Should return a node list with no elements" + ); +} + +#[wasm_bindgen_test] +fn test_button_element_in_form() { + let button = new_button(); + button.set_type("reset"); + let form = new_form(); + form.set_name("test-form"); + + // TODO: implement `Clone` for types in `web_sys` to make this easier. + let button = JsValue::from(button); + let as_node = Node::from(button.clone()); + Node::from(JsValue::from(form)) + .append_child(&as_node) + .unwrap(); + + let element = HtmlButtonElement::from(button); + match element.form() { + None => assert!(false, "Should have a form"), + Some(form) => { + assert!(true, "Should have a form"); + assert_eq!( + form.name(), + "test-form", + "Form should have a name of test-form" + ); + } + }; + assert_eq!(element.type_(), "reset", "Should have a type"); +} |