And here's a nicer version to add to your library:

    /**
     * Triggers an {...@link AjaxLazyLoadPanel} to fetch it's contents.
     *
     * @param wc the {...@link WicketTester} to execute the behaviour ( 
{...@link
WicketTester#executeBehavior} ).
     * @param container contains the {...@link AjaxLazyLoadPanel} to trigger
     */
    private void executeAjaxLazyLoadPanel(final WicketTester wc, Panel
container) {
        container.visitChildren( AjaxLazyLoadPanel.class, new
IVisitor<AjaxLazyLoadPanel>() {

            @Override
            public Object component(AjaxLazyLoadPanel component) {
                List<IBehavior> behaviors = component.getBehaviors();
                // get the AbstractAjaxBehaviour which is responsible for
                // getting the contents of the lazy panel
                AbstractAjaxBehavior b = (AbstractAjaxBehavior)
behaviors.get( 0 );
                // tell wicket tester to execute it :)
                wc.executeBehavior( b );
                // continue with visitation rights, or not, i don't care
                return CONTINUE_TRAVERSAL;
            }
        } );
    }


Antony Stubbs wrote:
> 
> And boom! Thanks for the  inspiration Frank! 
> 
>         final WicketTester wc = constructBasicPanel();
>         wc.debugComponentTrees();
>         wc.dumpPage();
> // delicious is the constructed panel, which contains a
> AjaxLazyLoadPanel...
> // visit it's children, looking for the AjaxLazyLoadPanel
>         delicious.visitChildren( AjaxLazyLoadPanel.class, new
> IVisitor<AjaxLazyLoadPanel>(){
> 
>             @Override
>             public Object component(AjaxLazyLoadPanel component) {
> // get the AbstractAjaxBehaviour which is responsible for getting the
> contents of the lazy panel
>                 List<IBehavior> behaviors = component.getBehaviors();
>                 final AbstractAjaxBehavior b;
>                 b = (AbstractAjaxBehavior) behaviors.get( 0 );
> // tell wicket tester to execute it :)
>                 wc.executeBehavior( b );
> // continue with visitation rights, or not, i don't care
>                 return null;
>             }} );
> 
>         wc.debugComponentTrees();
>         wc.dumpPage();
> // and volah, your lazy panel is now replaced with the contents :)
>         wc.assertComponent(
> "panel:lazy:content:repeaterContainer:bookmarks:1", Item.class );
>         wc.assertInvisible( "panel:lazy:content:noBookmarks" );
> 
> Let me know what you think or if you have any improvements!
> 
> 
> Antony Stubbs wrote:
>> 
>> Thanks for the info Frank. Any tips on how to do so?
>> 
>> 
>> Frank Bille wrote:
>>> 
>>> On Thu, Apr 24, 2008 at 8:10 PM, qk <[email protected]> wrote:
>>>>  1. after the page was rendered using WicketTester.startPage(), the
>>>> "real"
>>>>  content (the one that returned by getLazyLoadComponent()) was not
>>>> loaded by
>>>>  default. I always got an empty panel. Is there a way that I can have
>>>> the
>>>>  "real" content rendered?
>>> 
>>> Wicket tester doesn't parse javascript, so it can't execute the ajax
>>> callback. You have to do that yourself.
>>> 
>>> Frank
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>> 
>>> 
>>> 
>> 
>> 
> 
> 


-----
___________________________

http://stubbisms.wordpress.com http://stubbisms.wordpress.com 
-- 
View this message in context: 
http://www.nabble.com/unit-test-of-AjaxLazyLoadPanel-and-ModalWindow-tp16851306p23773356.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to