Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-4298

FormTester doesn't handle nested forms correctly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.4.19, 1.5.3, 6.0.0-beta1
    • 1.4.20, 1.5.4, 6.0.0-beta1
    • wicket
    • None

    Description

      While working on WICKET-4295, I discovered that FormTester doesn't handle nested form submits correctly.

      The browser will always submit the outermost form, because that is the only form it sees. Wicket will then determine the correct form by looking at the submitting component. If you create a FormTester on an inner form, however, the test request will point directly at that inner form. This is a problem for the new feature in WICKET-4295, but also in general since it does not correctly model the actual interaction. Also the submitting component is not found due to the wrong form being looked at. (form.getRootForm() == Form.this in Form#findSubmittingButton()) This means that for a nested form, the submitting component could never be found! I think it's mostly luck that this is not a bigger issue in tests

      It is possible to have the correct handling in a test, if you do newFormTester(outerForm) and then submit with a submit button in the inner form (formtester.submit("inner:submitButton")).

      I think FormTester should do the correct thing on its own though. The fix is trivial: in submit() don't just use the form it's pointing at, but use form.getRootForm(). This fixes both the correct request handling, as well as the issue with not finding the submitting component.

      I'll attach the appropriate patches.

      Attachments

        There are no Sub-Tasks for this issue.

        Activity

          People

            mgrigorov Martin Tzvetanov Grigorov
            cmenzel Carl-Eric Menzel
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: