Package org.apache.wicket.markup.html.internal

Source Code of org.apache.wicket.markup.html.internal.TestPage

/*
* 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.markup.html.internal;

import java.io.IOException;

import org.apache.wicket.MarkupContainer;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.resource.DummyApplication;
import org.apache.wicket.util.diff.DiffUtil;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.tester.FormTester;
import org.apache.wicket.util.tester.WicketTester;


/**
*
* @author Juergen Donnerstag
*/
public class EnclosureTest extends WicketTestCase
{
  /**
   * Construct.
   *
   * @param name
   */
  public EnclosureTest(final String name)
  {
    super(name);
  }

  /**
   *
   * @see org.apache.wicket.WicketTestCase#setUp()
   */

  @Override
  protected void setUp() throws Exception
  {
    WebApplication app = new DummyApplication();
    tester = new WicketTester(app);
  }

  /**
   * @throws Exception
   */
  public void testRenderHomePage() throws Exception
  {
    executeTest(EnclosurePage_1.class, "EnclosurePageExpectedResult_1.html");
  }

  /**
   * @throws Exception
   */
  public void testRenderHomePage2() throws Exception
  {
    executeTest(EnclosurePage_2.class, "EnclosurePageExpectedResult_2.html");
  }

  /**
   * @throws Exception
   */
  public void testRenderHomePage3() throws Exception
  {
    executeTest(EnclosurePage_3.class, "EnclosurePageExpectedResult_3.html");
  }

  /**
   * @throws Exception
   */
  public void testRenderHomePage4() throws Exception
  {
    executeTest(EnclosurePage_4.class, new PageParameters("visible=false"),
      "EnclosurePageExpectedResult_4.html");
  }

  /**
   * @throws Exception
   */
  public void testRenderHomePage4_1() throws Exception
  {
    executeTest(EnclosurePage_4.class, new PageParameters("visible=true"),
      "EnclosurePageExpectedResult_4-1.html");
  }

  /**
   * @throws Exception
   */
  public void testRenderHomePage5() throws Exception
  {
    executeTest(EnclosurePage_5.class, new PageParameters("visible=false"),
      "EnclosurePageExpectedResult_5.html");
  }

  /**
   * @throws Exception
   */
  public void testRenderHomePage5_1() throws Exception
  {
    executeTest(EnclosurePage_5.class, new PageParameters("visible=true"),
      "EnclosurePageExpectedResult_5-1.html");
  }

  /**
   * Tests visibility of children after enclosure has been made hidden and visible again
   *
   * @throws Exception
   */
  public void testVisibilityOfChildren() throws Exception
  {
    // render with enclosure initally visible
    tester.startPage(EnclosurePage_6.class);
    String doc = tester.getServletResponse().getDocument();
    assertTrue(doc.contains("content1"));
    assertTrue(doc.contains("content2"));

    // render with enclosure hidden
    tester.clickLink("link");
    doc = tester.getServletResponse().getDocument();
    assertFalse(doc.contains("content1"));
    assertFalse(doc.contains("content2"));

    // render with enclosure visible again
    tester.clickLink("link");
    doc = tester.getServletResponse().getDocument();
    assertTrue(doc.contains("content1"));
    assertTrue(doc.contains("content2"));
  }

  /**
   *
   */
  public void testRender()
  {
    tester = new WicketTester(EnclosurePage_7.class);
    tester.startPage(EnclosurePage_7.class);
  }

  /**
   * @throws Exception
   *
   */
  public void testRender8() throws Exception
  {
    executeTest(EnclosurePage_8.class, "EnclosurePageExpectedResult_8.html");
  }

  /**
   *
   * @param page
   * @param file
   * @throws Exception
   */
  private void executePage(final EnclosurePage_9 page, final String file) throws Exception
  {
    page.reset();
    tester.startPage(page);
    tester.assertRenderedPage(page.getClass());
    assertResultPage(file);
  }

  private void assertResultPage(final String file) throws IOException
  {
    String document = tester.getServletResponse().getDocument();
    document = document.replaceAll(":form:[1-90]+:IFormSubmitListener:",
      ":form::IFormSubmitListener:");
    DiffUtil.validatePage(document, getClass(), file, true);
  }

  /**
   * @throws Exception
   */
  public void testRender9() throws Exception
  {
    Class<? extends Page> clazz = EnclosurePage_9.class;
    tester = new WicketTester(clazz);

    executeTest(clazz, "EnclosurePageExpectedResult_9.html");
    EnclosurePage_9 page = (EnclosurePage_9)tester.getLastRenderedPage();
    assertTrue(page.inputOnBeforeRender);
    assertFalse(page.inputValidate);
    assertTrue(page.labelOnBeforeRender);

    page.reset();
    page.get("form:label").setVisible(false);
    executePage(page, "EnclosurePageExpectedResult_9-2.html");
    // It should be FALSE, but because of auto-component etc. it doesn't
    // assertFalse(page.inputOnBeforeRender);
    assertTrue(page.inputOnBeforeRender);
    assertFalse(page.inputValidate);
    assertFalse(page.labelOnBeforeRender);

    page.reset();
    page.get("form:label").setVisible(true);
    executePage(page, "EnclosurePageExpectedResult_9.html");
    assertTrue(page.inputOnBeforeRender);
    assertFalse(page.inputValidate);
    assertTrue(page.labelOnBeforeRender);

    page.reset();
    page.get("form:input").setVisible(false);
    executePage(page, "EnclosurePageExpectedResult_9-3.html");
    assertFalse(page.inputOnBeforeRender);
    assertFalse(page.inputValidate);
    assertTrue(page.labelOnBeforeRender);

    page.reset();
    page.get("form:label").setVisible(false);
    executePage(page, "EnclosurePageExpectedResult_9-2.html");
    assertFalse(page.inputOnBeforeRender);
    assertFalse(page.inputValidate);
    assertFalse(page.labelOnBeforeRender);

    page.reset();
    page.get("form:label").setVisible(true);
    executePage(page, "EnclosurePageExpectedResult_9-3.html");
    assertFalse(page.inputOnBeforeRender);
    assertFalse(page.inputValidate);
    assertTrue(page.labelOnBeforeRender);

    page.reset();
    page.get("form:input").setVisible(true);
    executePage(page, "EnclosurePageExpectedResult_9.html");
    assertTrue(page.inputOnBeforeRender);
    assertFalse(page.inputValidate);
    assertTrue(page.labelOnBeforeRender);
  }

  /**
   * @throws Exception
   */
  public void testRender9a() throws Exception
  {
    Class<? extends Page> clazz = EnclosurePage_9.class;
    tester = new WicketTester(clazz);

    executeTest(clazz, "EnclosurePageExpectedResult_9.html");
    EnclosurePage_9 page = (EnclosurePage_9)tester.getLastRenderedPage();

    page.reset();
    FormTester formTester = tester.newFormTester("form");
    tester.getServletRequest().setParameter(((CheckBox)page.get("form:input")).getInputName(),
      "true");
    page.get("form:label").setVisible(true);
    formTester.submit();
    tester.assertRenderedPage(clazz);
    assertResultPage("EnclosurePageExpectedResult_9-4.html");
    assertTrue(page.inputOnBeforeRender);
    assertTrue(page.inputValidate);
    assertTrue(page.labelOnBeforeRender);

    page.reset();
    tester.getServletRequest().setParameter(((CheckBox)page.get("form:input")).getInputName(),
      "true");
    page.get("form:label").setVisible(false);
    tester.submitForm("form");
    tester.assertRenderedPage(clazz);
    assertResultPage("EnclosurePageExpectedResult_9-2.html");
    // It should be FALSE, but because of auto-component etc. it doesn't
    // assertFalse(page.inputOnBeforeRender);
    assertTrue(page.inputOnBeforeRender);
    // It should be FALSE, but because of auto-component etc. it doesn't
    // assertFalse(page.inputValidate);
    assertTrue(page.inputValidate);
    assertFalse(page.labelOnBeforeRender);
  }

  /**
   * It must not be a difference if the enclosure controller child is a FormComponent.
   *
   * @throws Exception
   */
  public void testRender10() throws Exception
  {
    Class<? extends Page> clazz = EnclosurePage_10.class;
    executeTest(clazz, "EnclosurePageExpectedResult_10.html");

    Page page = tester.getLastRenderedPage();
    page.get("input").setVisible(false);
    tester.startPage(page);
    tester.assertRenderedPage(clazz);
    tester.assertResultPage(getClass(), "EnclosurePageExpectedResult_10-2.html");

    page.get("input").setVisible(true);
    tester.startPage(page);
    tester.assertRenderedPage(clazz);
    tester.assertResultPage(getClass(), "EnclosurePageExpectedResult_10.html");

    page.get("label").setVisible(false);
    tester.startPage(page);
    tester.assertRenderedPage(clazz);
    tester.assertResultPage(getClass(), "EnclosurePageExpectedResult_10-3.html");

    page.get("input").setVisible(false);
    tester.startPage(page);
    tester.assertRenderedPage(clazz);
    tester.assertResultPage(getClass(), "EnclosurePageExpectedResult_10-2.html");

    page.get("input").setVisible(true);
    tester.startPage(page);
    tester.assertRenderedPage(clazz);
    tester.assertResultPage(getClass(), "EnclosurePageExpectedResult_10-3.html");

    page.get("label").setVisible(true);
    tester.startPage(page);
    tester.assertRenderedPage(clazz);
    tester.assertResultPage(getClass(), "EnclosurePageExpectedResult_10.html");
  }

  /**
   * @throws Exception
   */
  public void testRenderPage11() throws Exception
  {
    executeTest(EnclosurePage_11.class, "EnclosurePageExpectedResult_11.html");
  }

  /**
   *
   */
  public void testBadEnclosure1()
  {
    class TestPage extends WebPage implements IMarkupResourceStreamProvider
    {
      public TestPage()
      {
        add(new WebMarkupContainer("d"));
        add(new Label("msg", "hi"));
      }

      public IResourceStream getMarkupResourceStream(MarkupContainer container,
        Class<?> containerClass)
      {
        return new StringResourceStream(
          "<html><body><div wicket:id='d'><div wicket:enclosure='msg'><span wicket:id='msg'></span></div></div></body></html>");
      }
    }

    try
    {
      tester.startPage(new TestPage());
    }
    catch (WicketRuntimeException e)
    {
      assertTrue(e.getMessage().startsWith("Could not find child"));
    }
  }

  /**
   *
   */
  public void testAttribute()
  {
    class TestPage extends WebPage implements IMarkupResourceStreamProvider
    {
      public TestPage()
      {
        final Label l = new Label("msg", "$label$");
        add(l);
        add(new Link<Void>("b")
        {
          private static final long serialVersionUID = 1L;

          @Override
          public void onClick()
          {
            l.setVisible(!l.isVisible());
          }
        });
      }

      public IResourceStream getMarkupResourceStream(MarkupContainer container,
        Class<?> containerClass)
      {
        return new StringResourceStream(
          "<html><body><div wicket:enclosure='msg'><span wicket:id='msg'></span></div><input type='button' value='Toggle' wicket:id='b'></body></html>");
      }
    }

    tester.startPage(new TestPage());
    assertTrue(tester.getServletResponse().getDocument().contains("$label$"));

    // toggle visibility of enclosure to false
    tester.clickLink("b");
    assertFalse(tester.getServletResponse().getDocument().contains("$label$"));

    // toggle visibility of enclosure to back to true
    tester.clickLink("b");
    assertTrue(tester.getServletResponse().getDocument().contains("$label$"));

  }
}
TOP

Related Classes of org.apache.wicket.markup.html.internal.TestPage

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.