diff --git a/tests/diffing.rs b/tests/diffing.rs index a876ffc03..3cc010673 100644 --- a/tests/diffing.rs +++ b/tests/diffing.rs @@ -756,3 +756,79 @@ fn add_nested_elements() { ] ); } + +#[test] +fn add_listeners() { + let vdom = new_dom(); + + let (_create, change) = vdom.diff_lazynodes( + rsx! { + div{} + }, + rsx! { + div{ + onkeyup: |_| {}, + onkeydown: |_| {}, + } + }, + ); + + assert_eq!( + change.edits, + [ + NewEventListener { event_name: "keyup", scope: ScopeId(0), root: 1 }, + NewEventListener { event_name: "keydown", scope: ScopeId(0), root: 1 }, + ] + ); +} + +#[test] +fn remove_listeners() { + let vdom = new_dom(); + + let (_create, change) = vdom.diff_lazynodes( + rsx! { + div{ + onkeyup: |_| {}, + onkeydown: |_| {}, + } + }, + rsx! { + div{} + }, + ); + + assert_eq!( + change.edits, + [ + RemoveEventListener { event: "keyup", root: 1 }, + RemoveEventListener { event: "keydown", root: 1 }, + ] + ); +} + +#[test] +fn diff_listeners() { + let vdom = new_dom(); + + let (_create, change) = vdom.diff_lazynodes( + rsx! { + div{ + onkeydown: |_| {}, + } + }, + rsx! { + div{ + onkeyup: |_| {}, + } + }, + ); + + assert_eq!( + change.edits, + [ + RemoveEventListener { root: 1, event: "keydown" }, + NewEventListener { event_name: "keyup", scope: ScopeId(0), root: 1 } + ] + ); +}