Package org.apache.wicket.util.tester.apps_3

Source Code of org.apache.wicket.util.tester.apps_3.FormTesterTest

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.wicket.util.tester.apps_3;

import java.util.Arrays;
import java.util.List;

import org.apache.wicket.Page;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.util.tester.FormTester;
import org.apache.wicket.util.tester.ITestPageSource;
import org.apache.wicket.util.tester.apps_1.Book;


/**
* @author Ingram Chen
*/
public class FormTesterTest extends WicketTestCase
{
  private Book[] books;

  private ChoicePage choicePage;

  private FormTester formTester;

  /**
   * Construct.
   *
   * @param name
   */
  public FormTesterTest(String name)
  {
    super(name);
  }

  @Override
  protected void setUp() throws Exception
  {
    super.setUp();

    books = new Book[] { new Book("1", "book1"), new Book("2", "book2"),
        new Book("3", "book3"), new Book("4", "book4") };

    choicePage = (ChoicePage)tester.startPage(new ITestPageSource()
    {
      private static final long serialVersionUID = 1L;

      public Page getTestPage()
      {
        return new ChoicePage(Arrays.asList(books));
      }
    });
    formTester = tester.newFormTester("choiceForm");
  }

  /**
   * @throws Exception
   */
  public void testSingleChoice() throws Exception
  {
    assertSame(books[1], choicePage.dropDownChoice);
    assertSame(books[3], choicePage.listChoice);
    assertSame(books[2], choicePage.radioChoice);
    assertSame(null, choicePage.radioGroup);
    formTester.select("dropDownChoice", 0);
    formTester.select("listChoice", 2);
    formTester.select("radioChoice", 1);
    formTester.select("radioGroup", 3);
    formTester.submit();
    assertSame(books[0], choicePage.dropDownChoice);
    assertSame(books[2], choicePage.listChoice);
    assertSame(books[1], choicePage.radioChoice);
    assertSame(books[3], choicePage.radioGroup);
  }

  /**
   * @throws Exception
   */
  public void testSingleChoice_toggle() throws Exception
  {
    assertSame(books[1], choicePage.dropDownChoice);
    assertSame(null, choicePage.radioGroup);
    formTester.select("dropDownChoice", 0);
    formTester.select("dropDownChoice", 1);// toggle to 1
    formTester.select("radioGroup", 3);
    formTester.select("radioGroup", 2);// toggle to 2
    formTester.submit();
    assertSame(books[1], choicePage.dropDownChoice);
    assertSame(books[2], choicePage.radioGroup);
  }

  /**
   * @throws Exception
   */
  public void testSingleChoiceComponentNotAllowSelectMuliple() throws Exception
  {
    try
    {
      formTester.selectMultiple("dropDownChoice", new int[] { 0 });
      throw new RuntimeException("WicketRuntimeException expected");
    }
    catch (WicketRuntimeException expected)
    {
    }

    try
    {
      formTester.selectMultiple("radioGroup", new int[] { 2, 1 });
      throw new RuntimeException("WicketRuntimeException expected");
    }
    catch (WicketRuntimeException expected)
    {
    }
  }

  /**
   * @throws Exception
   */
  public void testSelectMultiple() throws Exception
  {
    assertBooksEquals(new Book[0], choicePage.listMultipleChoice);
    assertBooksEquals(new Book[0], choicePage.checkBoxMultipleChoice);
    assertBooksEquals(new Book[0], choicePage.checkGroup);
    formTester.selectMultiple("listMultipleChoice", new int[] { 0, 3 });
    formTester.selectMultiple("checkBoxMultipleChoice", new int[] { 1, 0, 3 });
    formTester.selectMultiple("checkGroup", new int[] { 0, 1, 2, 3 });
    formTester.submit();

    assertBooksEquals(new Book[] { books[0], books[3] }, choicePage.listMultipleChoice);
    assertBooksEquals(new Book[] { books[0], books[1], books[3] },
      choicePage.checkBoxMultipleChoice);
    assertBooksEquals(books, choicePage.checkGroup);
  }

  /**
   * @throws Exception
   */
  public void testMultipleChoiceComponent_cumulate() throws Exception
  {
    assertBooksEquals(new Book[0], choicePage.listMultipleChoice);
    assertBooksEquals(new Book[0], choicePage.checkGroup);
    formTester.select("listMultipleChoice", 0);
    formTester.selectMultiple("listMultipleChoice", new int[] { 0, 3 });
    formTester.selectMultiple("listMultipleChoice", new int[] { 1 });

    formTester.selectMultiple("checkGroup", new int[] { 2 });
    formTester.selectMultiple("checkGroup", new int[] { 2, 3 });
    formTester.select("checkGroup", 0);
    formTester.submit();

    assertBooksEquals(new Book[] { books[0], books[1], books[3] },
      choicePage.listMultipleChoice);
    assertBooksEquals(new Book[] { books[0], books[2], books[3] }, choicePage.checkGroup);
  }

  private void assertBooksEquals(Book[] expectBooks, List actualBooks)
  {
    assertEquals(expectBooks.length, actualBooks.size());
    assertTrue(Arrays.asList(expectBooks).containsAll(actualBooks));
  }

  /**
   * @throws Exception
   */
  public void testMultipleButtonSubmit() throws Exception
  {
    formTester.submit();
    assertFalse(choicePage.anotherButtonPressed);

    formTester = tester.newFormTester("choiceForm");
    formTester.submit("anotherButton");
    assertTrue(choicePage.anotherButtonPressed);
  }

  /**
   * Tests proper initialization.
   */
  public void testInitialValues()
  {
    assertInitialValues();
    formTester.submit();
    assertInitialValues();
  }

  private void assertInitialValues()
  {
    assertSame(books[1], choicePage.dropDownChoice);
    assertSame(books[3], choicePage.listChoice);
    assertSame(books[2], choicePage.radioChoice);
    assertEquals(true, choicePage.checkBox);
    assertBooksEquals(new Book[] { books[2], books[1] }, choicePage.initialListMultipleChoice);
    assertBooksEquals(new Book[] { books[3], books[0] },
      choicePage.initialCheckBoxMultipleChoice);
    assertBooksEquals(new Book[] { books[3], books[2] }, choicePage.initialCheckGroup);
  }
}
TOP

Related Classes of org.apache.wicket.util.tester.apps_3.FormTesterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.