From 3b54e46d7fee28cbc47d0b1542bde87634097567 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 4 May 2022 06:30:18 +0200 Subject: [PATCH] add test case for test for bug #2653 --- packages/yew/src/dom_bundle/btag/mod.rs | 43 +++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/packages/yew/src/dom_bundle/btag/mod.rs b/packages/yew/src/dom_bundle/btag/mod.rs index aeaa19a519e..e3c635095c4 100644 --- a/packages/yew/src/dom_bundle/btag/mod.rs +++ b/packages/yew/src/dom_bundle/btag/mod.rs @@ -931,6 +931,49 @@ mod tests { "
" ); } + + // test for bug: https://github.com/yewstack/yew/pull/2653 + #[test] + fn test_index_map_attribute_diff() { + let (root, scope, parent) = setup_parent(); + + let test_ref = NodeRef::default(); + + // We want to test appy_diff with Attributes::IndexMap, so we + // need to create the VTag manually + + // Create
+ let mut vtag = VTag::new("div"); + vtag.node_ref = test_ref.clone(); + vtag.add_attribute("disabled", "disabled"); + vtag.add_attribute("tabindex", "0"); + + let elem = VNode::VTag(Box::new(vtag)); + + let (_, mut elem) = elem.attach(&root, &scope, &parent, NodeRef::default()); + + // Create
(removed first attribute "disabled") + let mut vtag = VTag::new("div"); + vtag.node_ref = test_ref.clone(); + vtag.add_attribute("tabindex", "0"); + let next_elem = VNode::VTag(Box::new(vtag)); + let elem_vtag = assert_vtag(next_elem); + + + // Sync happens here + // this should remove the the "disabled" attribute + elem_vtag.reconcile_node(&root, &scope, &parent, NodeRef::default(), &mut elem); + + assert_eq!( + test_ref + .get() + .unwrap() + .dyn_ref::() + .unwrap() + .outer_html(), + "
" + ) + } } #[cfg(all(test, feature = "wasm_test"))]