public async Task TwoWay_should_clean_javascriptObject_listeners_when_object_is_not_part_of_the_graph_js() { var datacontext = new BasicFatherTestViewModel(); var child = new BasicTestViewNodel(); datacontext.Child = child; var test = new TestInContextAsync() { Bind = (win) => Bind(win, datacontext, JavascriptBindingMode.TwoWay), Test = async(mb) => { var js = mb.JsRootObject; var childJs = GetAttribute(js, "Child"); CheckReadOnly(childJs, false); var nullJs = Factory.CreateNull(); SetAttribute(js, "Child", nullJs); await Task.Delay(150); DoSafeUI(() => datacontext.Child.Should().BeNull()); child.ListenerCount.Should().Be(0); await Task.Delay(100); CheckHasListener(childJs, false); } }; await RunAsync(test); }
public async Task TwoWay_should_clean_javascriptObject_listeners_when_object_is_not_part_of_the_graph_array_js_context() { var datacontext = new BasicListTestViewModel(); var child = new BasicTestViewNodel(); datacontext.Children.Add(child); var test = new TestInContextAsync() { Bind = (win) => Bind(win, datacontext, JavascriptBindingMode.TwoWay), Test = async(mb) => { var js = mb.JsRootObject; CheckReadOnly(js, true); var childrenJs = GetCollectionAttribute(js, "Children"); var childJs = childrenJs.GetValue(0); CheckReadOnly(childJs, false); Call(childrenJs, "pop"); await Task.Delay(150); CheckHasListener(childJs, false); } }; await RunAsync(test); }
public async Task TwoWay_should_clean_javascriptObject_listeners_when_object_is_not_part_of_the_graph(BasicTestViewNodel remplacementChild) { var datacontext = new BasicFatherTestViewModel(); var child = new BasicTestViewNodel(); datacontext.Child = child; var test = new TestInContextAsync() { Bind = (win) => Bind(win, datacontext, JavascriptBindingMode.TwoWay), Test = async(mb) => { var js = mb.JsRootObject; var childJs = GetAttribute(js, "Child"); CheckReadOnly(childJs, false); DoSafeUI(() => datacontext.Child = remplacementChild); await Task.Delay(150); CheckHasListener(childJs, false); } }; await RunAsync(test); }