Actually, Page.detach() is not callable from a JUnit test that uses WicketTester in 1.3.0beta3. It throws an exception:
org.apache.wicket.WicketRuntimeException: No RequestCycle is currently set! at org.apache.wicket.Component.getRequest(Component.java:1443) at org.apache.wicket.Page.onDetach(Page.java:1406) at org.apache.wicket.markup.html.WebPage.onDetach(WebPage.java:360) at org.apache.wicket.Component.detach(Component.java:899) In 1.2.6, you could call Page.detachModels() and the test would run fine. -Dan Here's my test: --------------------- import junit.framework.TestCase; /* //1.2.6 import wicket.Component; import wicket.Page; import wicket.model.LoadableDetachableModel; import wicket.util.tester.WicketTester; */ //1.3 import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.util.tester.WicketTester; public class WicketDetachTest extends TestCase { public WicketDetachTest() { } public void testDetach() { WicketTester tester = new WicketTester(); Page page = tester.startPage(Wicket12Page.class); tester.debugComponentTrees(); Component c = tester.getComponentFromLastRenderedPage ("listView:0:labelWithDetachableModel"); LoadableDetachableModel childModel = (LoadableDetachableModel)c.getModel(); // Child currently attached due to rendering assertTrue(childModel.isAttached()); // Attached // Detach children //page.detachModels(); // 1.2.6 - Does not detach child models in 1.3 page.detach(); // 1.3 <---- FAILS - not in request cycle assertFalse(childModel.isAttached()); // Not attached // Cause attachment c.getModelObject(); assertTrue(childModel.isAttached()); // Attached } } On 10/2/07, Kent Tong <[EMAIL PROTECTED]> wrote: > > > > Dan Syrstad-2 wrote: > > > > Nope. I tried detach() too and that doesn't work - the test still fails. > I > > had to write my own method which was basically was a copy of the old > > Page.detachModels() code. > > > > The thing is that In beta3, Page now just acts like a Component as far > as > > detachModels() is concerned and Component.detachModels()/detach() does > > notdetach all of the child models. > > Component.detach(), in fact, calls detachChildren() which is an empty > > method. > > > > detachChildren() is overriden by MarkupContainer which does detach its > children > (see below). So there must be something wrong with your unit test. > > void detachChildren() > { > // Loop through child components > final Iterator iter = iterator(); > while (iter.hasNext()) > { > // Get next child > final Component child = (Component)iter.next(); > > // Call end request on the child > child.detach(); > } > super.detachChildren(); > } > -- > View this message in context: > http://www.nabble.com/Page.detachModels%28%29-not-working-like-it-used-to-tf4549247.html#a13000103 > Sent from the Wicket - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >