This tests that events are properly propagated through View hierarchy. Running: testShowView View() View.show() View.wasShown() View.onResize() View.detach() View.willHide() Running: testAppendViaDOM View() Error: Attempt to add view via regular DOM operation. Running: testInsertViaDOM View() Error: Attempt to add view via regular DOM operation. Running: testAttachToOrphanNode View() View.show() Error: Attempt to attach view to orphan node Running: testImmediateParent Parent() Child() Child.show() OK Running: testDistantParent Parent() Child() Child.show() OK Running: testEvents Parent() Child() Parent.show() Parent.wasShown() Parent.onResize() Parent.doResize() Parent.onResize() Child.show() Child.wasShown() Child.onResize() Parent.doResize() Parent.onResize() Child.onResize() Parent.detach() Child.willHide() Parent.willHide() Parent.show() Parent.wasShown() Parent.onResize() Child.wasShown() Child.onResize() Child.detach() Child.willHide() Parent.detach() Parent.willHide() Running: testEventsHideOnDetach Parent() Child() Parent.show() Parent.wasShown() Parent.onResize() Parent.doResize() Parent.onResize() Child.show() Child.wasShown() Child.onResize() Parent.doResize() Parent.onResize() Child.onResize() Parent.detach() Child.willHide() Parent.willHide() Parent.show() Parent.wasShown() Parent.onResize() Child.wasShown() Child.onResize() Child.detach() Child.willHide() Parent.detach() Parent.willHide() Running: testViewCounter Parent() Parent.show() Parent.wasShown() Parent.onResize() Child() Child.show() Child.wasShown() Child.onResize() view counter: 1 Child 2() Child 2.show() Child 2.wasShown() Child 2.onResize() view counter: 2 Child.detach() Child.willHide() view counter: 1 Child 2.detach() Child 2.willHide() view counter: 0 Running: testRemoveChild Parent() Parent.show() Parent.wasShown() Parent.onResize() Child() Child.show() Child.wasShown() Child.onResize() Error: Attempt to remove element containing view via regular DOM operation Running: testImplicitRemoveChild Parent() Child() Child.show() Error: Attempt to remove element containing view via regular DOM operation Running: testRemoveChildren Parent() Child() Child.show() Error: Attempt to remove element containing view via regular DOM operation Running: testImplicitRemoveChildren Parent() Child() Child.show() Error: Attempt to remove element containing view via regular DOM operation Running: testShowOnWasShown Parent() Child() Parent.show() Parent.wasShown() Child.show() Parent.onResize() Child.wasShown() Child.onResize() Parent.detach() Child.willHide() Parent.willHide() Running: testDetachOnWasShown Parent() Child() Child.show() Parent.show() Parent.wasShown() Child.detach() Parent.onResize() Parent.detach() Parent.willHide() Running: testShowOnWillHide Parent() Child() Parent.show() Parent.wasShown() Parent.onResize() Child.show() Child.wasShown() Child.onResize() Parent.detach() Child.willHide() Parent.willHide() Child.show() Running: testDetachOnWillHide Parent() Child() Parent.show() Parent.wasShown() Parent.onResize() Child.show() Child.wasShown() Child.onResize() Parent.detach() Child.willHide() Parent.willHide() Child.detach() Running: testShowDetachesFromPrevious Parent1() Parent2() Child() Parent1.show() Parent1.wasShown() Parent1.onResize() Parent2.show() Parent2.wasShown() Parent2.onResize() Child.show() Child.wasShown() Child.onResize() Child.show() Child.detach() Child.willHide() Child.wasShown() Child.onResize()