Class FormTester


  • public class FormTester
    extends Object
    A helper class for testing validation and submission of FormComponents.
    Since:
    1.2.6
    Author:
    Ingram Chen, Frank Bille (frankbille)
    • Constructor Detail

      • FormTester

        protected FormTester​(String path,
                             Form<?> workingForm,
                             BaseWicketTester wicketTester,
                             boolean fillBlankString)
        Parameters:
        path - path to FormComponent
        workingForm - FormComponent to be tested
        wicketTester - WicketTester that creates FormTester
        fillBlankString - specifies whether to fill child TextComponents with blank Strings
        See Also:
        BaseWicketTester.newFormTester(String)
    • Method Detail

      • getInputValue

        public static String[] getInputValue​(FormComponent<?> formComponent)
        Gets request parameter values for the form component that represents its current model value
        Parameters:
        formComponent -
        Returns:
        array containing parameter values
      • getForm

        public Form<?> getForm()
        Retrieves the current Form object.
        Returns:
        the working Form
      • getTextComponentValue

        public String getTextComponentValue​(String id)
        Gets the value for an AbstractTextComponent with the provided id.
        Parameters:
        id - Component id
        Returns:
        the value of the text component
      • select

        public FormTester select​(String formComponentId,
                                 int index)
        Simulates selecting an option of a FormComponent. Supports RadioGroup, CheckGroup, and AbstractChoice family currently. The behavior is similar to interacting on the browser: For a single choice, such as Radio or DropDownList, the selection will toggle each other. For multiple choice, such as Checkbox or ListMultipleChoice, the selection will accumulate.
        Parameters:
        formComponentId - relative path (from Form) to the selectable FormComponent
        index - index of the selectable option, starting from 0
        Returns:
        This
      • selectMultiple

        public FormTester selectMultiple​(String formComponentId,
                                         int[] indexes)
        A convenience method to select multiple options for the FormComponent. The method only support multiple selectable FormComponents.
        Parameters:
        formComponentId - relative path (from Form) to the selectable FormComponent
        indexes - index of the selectable option, starting from 0
        Returns:
        This
        See Also:
        select(String, int)
      • selectMultiple

        public FormTester selectMultiple​(String formComponentId,
                                         int[] indexes,
                                         boolean replace)
        A convenience method to select multiple options for the FormComponent. The method only support multiple selectable FormComponents.
        Parameters:
        formComponentId - relative path (from Form) to the selectable FormComponent
        indexes - index of the selectable option, starting from 0
        replace - If true, than all previous selects are first reset, thus existing selects are replaced. If false, than the new indexes will be added.
        Returns:
        This
        See Also:
        select(String, int)
      • setValue

        public FormTester setValue​(String formComponentId,
                                   String value)
        Simulates filling in a field on a Form.
        Parameters:
        formComponentId - relative path (from Form) to the selectable FormComponent or IFormSubmittingComponent
        value - the field value
        Returns:
        This
      • setValue

        public FormTester setValue​(Component formComponent,
                                   String value)
        Simulates filling in a field on a Form.
        Parameters:
        formComponent - relative path (from Form) to the selectable FormComponent or IFormSubmittingComponent
        value - the field value
        Returns:
        This
      • setValue

        public FormTester setValue​(String checkBoxId,
                                   boolean value)
        Parameters:
        checkBoxId -
        value -
        Returns:
        This
      • setFile

        public FormTester setFile​(String formComponentId,
                                  File file,
                                  String contentType)
        Sets the File on a FileUploadField.
        Parameters:
        formComponentId - relative path (from Form) to the selectable FormComponent. The FormComponent must be of a type FileUploadField.
        file - the File to upload or null for an empty input
        contentType - the content type of the file. Must be a valid mime type.
        Returns:
        This
      • submit

        public FormTester submit()
        Submits the Form. Note that submit can be executed only once.
        Returns:
        This
      • submit

        public FormTester submit​(String buttonComponentId)
        A convenience method for submitting the Form with an alternate button.

        Note that if the button is associated with a model, it's better to use the setValue method instead:

         formTester.setValue("to:my:button", "value on the button");
         formTester.submit();
         
        Parameters:
        buttonComponentId - relative path (from Form) to the button
        Returns:
        This
      • submit

        public FormTester submit​(Component buttonComponent)
        A convenience method for submitting the Form with an alternate button.

        Note that if the button is associated with a model, it's better to use the setValue method instead:

         formTester.setValue(myButton, "value on the button");
         formTester.submit();
         
        Parameters:
        buttonComponent - relative path (from Form) to the button
        Returns:
        This
      • submitLink

        public FormTester submitLink​(String path,
                                     boolean pageRelative)
        A convenience method to submit the Form via a SubmitLink which may inside or outside of the Form.
        Parameters:
        path - The path to the SubmitLink
        pageRelative - if true, than the 'path' to the SubmitLink is relative to the page. Thus the link can be outside the form. If false, the path is relative to the form and thus the link is inside the form.
        Returns:
        This