Hi,
As suggested by message subject, you had a problem for testing
AjaxLazyLoadPanel and ModalWindow. You provided a solution for the first
case (great!), but there is nothing in this thread about testing
ModelWindow.
Does your solution apply to ModalWindow too ? Or is there another method ?
NB : I'm using the iframe version of ModalWindows...
Regards
Bernard
Antony Stubbs wrote:
>
> 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]
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
--
View this message in context:
http://old.nabble.com/unit-test-of-AjaxLazyLoadPanel-and-ModalWindow-tp16851306p26793515.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]