Hi,
no feedback so far. It would be really nice if s.o. familiar with
WicketTester could a look at this.
Thanx cheers,
Martin
On Thu, 2010-04-22 at 21:21 +0200, Martin Grotzke wrote:
Hi,
I have an issue with a simple app working fine when run in the app
server, but where the test (using WicketTester) that simulates the
performed behaviour fails.
Here are the details:
I have a custom RequestCycleProcessor with a custom
WebRequestCodingStrategy that mounts a page (for e.g. a shopping cart
item) to a url like
/myapp/myitem-id42.html
and knows according to the url pattern (s.th. + -id + id +
.html) that the item details page is to be resolved.
This item details page also contains a stateless form with a button that
adds the item to the shopping basket.
This works fine when it's run within the app: I can submit the form, the
item is added to the basket and I'm shown the details page again.
(the urls requested are shown at the end of the email [2])
Unfortunately, when I test this behaviour using WicketTester this fails,
as it cannot create the item details page when the form is submitted.
This is my test (it can also be found at github [1]):
private WicketTester _tester;
@BeforeMethod
public void setUp() {
_tester = new WicketTester( new WicketApplication() );
}
@Test
public void testSubmitChoice() {
_tester.startPage( DetailsPage.class, DetailsPage.pageParametersFor(
WicketApplication.MAKES_DB.get( 0 ) ) );
_tester.assertRenderedPage( DetailsPage.class );
final FormTester formTester = _tester.newFormTester( form, false );
formTester.submit( submit ); // -- this fails
_tester.assertRenderedPage( DetailsPage.class );
}
The test fails with an assertion on valid, provided page params in the
items detail page:
...
Caused by: java.lang.NullPointerException: No valid make provided!
(params: :submit = marked)
at
de.javakaffee.misc.wicket.ccs.DetailsPage.init(DetailsPage.java:58)
(remember that this does not happen when run in the app server!)
The complete example project can be found at github:
http://github.com/magro/misc/tree/master/wicket-tester-custom-coding-strategy/
the short link to the relevant classes (is actually a long link :-)):
http://github.com/magro/misc/tree/master/wicket-tester-custom-coding-strategy/src/main/java/de/javakaffee/misc/wicket/ccs
Can anyone help with this? Is this an issue of the request cycle
processor / coding strategy (in combination with WicketTester), or is
this an issue of WicketTester?
Thanx in advance,
cheers,
Martin
[1]
http://github.com/magro/misc/blob/master/wicket-tester-custom-coding-strategy/src/test/java/de/javakaffee/misc/wicket/ccs/TestDetailsPage.java
[2] -- urls requested:
1) GET item details page:
- GET http://localhost:8080/Cadillac-i1.html
- 200 OK
2) Submit form, add item to basket
- POST
http://localhost:8080/Cadillac-i1.html?wicket:interface=:0:form::IFormSubmitListener::
- 302 Found (Location ...)
- GET http://localhost:8080/Cadillac-i1.html
signature.asc
Description: This is a digitally signed message part