Clone in a terminal:
Commit 3d5115c
Johan Mattsson - 2026-07-14T22:08:03+00:00
3d5115c5b250637ad2d37509c5362c6ff0b96701johan.mattsson.m@gmail.com

Another attribute test

Changed files (5)

Diff

diff --git a/tests/alltests.rs b/tests/alltests.rsindex 947634b..2e54731 100644--- a/tests/alltests.rs+++ b/tests/alltests.rs@@ -5,6 +5,6 @@ pub use common::setup_test;  wasm_bindgen_test_configure!(run_in_browser); -mod componentref;+mod componentattribute; mod simple; mod smallcomponent;diff --git a/tests/componentattribute.rs b/tests/componentattribute.rsnew file mode 100644index 0000000..9745daf--- /dev/null+++ b/tests/componentattribute.rs@@ -0,0 +1,83 @@+#[path = "common.rs"]+mod common;++use kaja_web::prelude::*;+use kaja_web_component::component;+use wasm_bindgen_test::*;++#[wasm_bindgen_test]+fn test_attributes_in_component() {+    common::setup_test();++    let id = "test-id-for-component";+    let content = html! {{+        <test-get-set-id id="$id" number="1" test_attribute="initial-value-for-attribute"></test-get-set-id>+    }};++    inner_html("#test-div", &content).unwrap();++    let component = Test2Component::get_component(id).expect("Component not found in global store");++    let attr = component.get_attribute_string("number").unwrap();+    assert_eq!(attr, "1");++    let typed_attr: i32 = component.get_attribute("number").unwrap();+    assert_eq!(typed_attr, 1);++    let _ = component.set_attribute("number", "100");+    let attr = component.get_attribute_string("number").unwrap();+    assert_eq!(attr, "100");++    let typed_attr = component.get_attribute::<i32>("number").unwrap();+    assert_eq!(typed_attr, 100);++    let _ = component.set_attribute("number", "SOMETHING_NOT_i32"); // NAN++    let attr = component.get_attribute_string("number").unwrap();+    assert_eq!(attr, "100");++    let typed_attr: i32 = component.get_attribute("number").unwrap();+    assert_eq!(typed_attr, 100);++    {+        let test2_inner = component.get_attributes();+        let test2 = test2_inner.borrow();+        log!("test2 number:", test2.number);+    }++    {+        let element = get_element_by_id(id);+        assert!(element.is_some());++        let element = element.unwrap();+        let err = element.set_attribute("number", "SOMETHING_NOT_i32_in_JS");+        assert!(err.is_err());+    }+}++#[component("test-get-set-id")]+struct Test2 {+    test: bool,+    number: i32,+}++impl Component for Test2Component {+    fn connected(&self) {+        log!("Connected:", self.get_id());+    }++    fn disconnected(&self) {+        log!("Disconnected:", self.get_id());+    }++    fn attribute_changed(&self, name: &str, old_value: &str, new_value: &str) {+        log!(+            "Attribute changed:",+            name,+            "old:",+            old_value,+            "new:",+            new_value+        );+    }+}diff --git a/tests/componentref.rs b/tests/componentref.rsdeleted file mode 100644index 9a74405..0000000--- a/tests/componentref.rs+++ /dev/null@@ -1,75 +0,0 @@-#[path = "common.rs"]-mod common;--use kaja_web::prelude::*;-use kaja_web_component::component;-use wasm_bindgen_test::*;--#[wasm_bindgen_test]-fn test_new_component() {-    common::setup_test();--    let id = "test-id-for-component";-    let content = html! {{-        <test-get-set-id id="$id" number="1" test_attribute="initial-value-for-attribute"></test-get-set-id>-    }};--    inner_html("#test-div", &content).unwrap();--    let component = Test2Component::get_component(id).expect("Component not found in global store");--    let attr = component.get_attribute_string("number").unwrap();-    assert_eq!(attr, "1");--    let typed_attr: i32 = component.get_attribute("number").unwrap();-    assert_eq!(typed_attr, 1);--    let _ = component.set_attribute("number", "100");-    let attr = component.get_attribute_string("number").unwrap();-    assert_eq!(attr, "100");--    let typed_attr = component.get_attribute::<i32>("number").unwrap();-    assert_eq!(typed_attr, 100);--    let _ = component.set_attribute("number", "SOMETHING_NOT_i32"); // NAN--    let attr = component.get_attribute_string("number").unwrap();-    assert_eq!(attr, "100");--    let typed_attr: i32 = component.get_attribute("number").unwrap();-    assert_eq!(typed_attr, 100);--    {-        let test2_inner = component.get_attributes();-        let test2 = test2_inner.borrow();-        log!("test2 number:", test2.number);-    }-}--#[component("test-get-set-id")]-struct Test2 {-    test: bool,-    number: i32,-}--impl Component for Test2Component {-    fn connected(&self) {-        log!("Connected:", self.get_id());-        log!("Set number");-    }--    fn disconnected(&self) {-        log!("Disconnected:", self.get_id());-    }--    fn attribute_changed(&self, name: &str, old_value: &str, new_value: &str) {-        log!(-            "Attribute changed:",-            name,-            "old:",-            old_value,-            "new:",-            new_value-        );-    }-}diff --git a/tests/simple.rs b/tests/simple.rsnew file mode 100644index 0000000..04c1638--- /dev/null+++ b/tests/simple.rs@@ -0,0 +1,22 @@+use kaja_web::{get_cookie_value, set_cookie_value};+use wasm_bindgen_test::*;++wasm_bindgen_test_configure!(run_in_browser);++#[wasm_bindgen_test]+fn test_dom() {+    let window = web_sys::window().unwrap();+    let document = window.document().unwrap();+    assert!(document.body().is_some());+}++#[wasm_bindgen_test]+fn test_cookie() {+    set_cookie_value("test-cookie-value", "some-value").unwrap();++    let val = get_cookie_value("test-cookie-value").unwrap();+    assert_eq!(val, "some-value");++    let not_in_cookie = get_cookie_value("not-in-cookie");+    assert!(not_in_cookie.is_none());+}diff --git a/tests/smallcomponent.rs b/tests/smallcomponent.rsnew file mode 100644index 0000000..8f200bb--- /dev/null+++ b/tests/smallcomponent.rs@@ -0,0 +1,33 @@+#![allow(unreachable_code, dead_code)]++#[path = "common.rs"]+mod common;++use kaja_web::prelude::*;+use kaja_web_component::component;+use wasm_bindgen_test::*;++#[wasm_bindgen_test]+fn test_small_component() {+    common::setup_test();++    let content = html! {{+        <test-component></test-component>+    }};++    inner_html("#test-div", &content).unwrap();++    let element = get_element("test-component").unwrap();+    let id = element.id();+    assert_ne!(id, "");++    let component =+        Test1Component::get_component(id.as_str()).expect("Component not found in global store");++    assert_ne!(component.get_id(), "");+}++#[component("test-component")]+struct Test1 {}++impl Component for Test1Component {}

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112