123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- 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");
- }
|