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

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

/*
* 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.util.regex.Pattern;

import org.apache.wicket.Component;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.mock.MockApplication;
import org.apache.wicket.protocol.http.WebApplication;
import org.junit.Test;


/**
* Simple test using the WicketTester
*/
public class TogglePageTest extends WicketTestCase
{

  @Override
  protected WebApplication newApplication()
  {
    WebApplication webApplication = new MockApplication()
    {
      @Override
      protected void init()
      {
        super.init();
        getMarkupSettings().setStripWicketTags(true);
      }
    };
    return webApplication;
  }

  @Test
  public void testNoAjaxPage()
  {
    {
      // On
      FullReloadPage noAjaxPage = tester.startPage(FullReloadPage.class);
      assertVisible(noAjaxPage.getToggleable());
      tester.clickLink(noAjaxPage.getLink().getPageRelativePath());
    }
    {
      // Off
      FullReloadPage noAjaxPage = (FullReloadPage)tester.getLastRenderedPage();
      assertInvisible(noAjaxPage.getToggleable());
      tester.clickLink(noAjaxPage.getLink().getPageRelativePath());
    }
    {
      // On
      FullReloadPage noAjaxPage = (FullReloadPage)tester.getLastRenderedPage();
      assertVisible(noAjaxPage.getToggleable());
      tester.clickLink(noAjaxPage.getLink().getPageRelativePath());
    }
    {
      // Off
      FullReloadPage noAjaxPage = (FullReloadPage)tester.getLastRenderedPage();
      assertInvisible(noAjaxPage.getToggleable());
    }
  }

  @Test
  public void testTraditionalAjaxEnclosurePage()
  {
    {
      // On
      TraditionalEnclosureAjaxPage ajaxPage = tester.startPage(TraditionalEnclosureAjaxPage.class);
      assertVisible(ajaxPage.getToggleable());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // Off
      TraditionalEnclosureAjaxPage ajaxPage = (TraditionalEnclosureAjaxPage)tester.getLastRenderedPage();
      tester.assertComponentOnAjaxResponse(ajaxPage.getTraditionalAjaxVisibilityToggleRequiresPlaceholder());
      assertInvisible(ajaxPage.getToggleable());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // On
      TraditionalEnclosureAjaxPage ajaxPage = (TraditionalEnclosureAjaxPage)tester.getLastRenderedPage();
      tester.assertComponentOnAjaxResponse(ajaxPage.getTraditionalAjaxVisibilityToggleRequiresPlaceholder());
      assertVisible(ajaxPage.getToggleable());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // Off
      TraditionalEnclosureAjaxPage ajaxPage = (TraditionalEnclosureAjaxPage)tester.getLastRenderedPage();
      tester.assertComponentOnAjaxResponse(ajaxPage.getTraditionalAjaxVisibilityToggleRequiresPlaceholder());
      assertInvisible(ajaxPage.getToggleable());
    }
  }

  @Test
  public void testInlineEnclosureWithAdditionalAjaxTarget()
  {
    {
      // On
      InlineEnclosureWithAdditionalAjaxTargetPage ajaxPage = tester.startPage(InlineEnclosureWithAdditionalAjaxTargetPage.class);
      assertVisible(ajaxPage.getLabel1());
      assertVisible(ajaxPage.getLabel2());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // Off
      InlineEnclosureWithAdditionalAjaxTargetPage ajaxPage = (InlineEnclosureWithAdditionalAjaxTargetPage)tester.getLastRenderedPage();
      tester.assertComponentOnAjaxResponse(ajaxPage.getLabel2());
      assertInVisible(ajaxPage.getLabel1());
      assertInVisible(ajaxPage.getLabel2());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // On
      InlineEnclosureWithAdditionalAjaxTargetPage ajaxPage = (InlineEnclosureWithAdditionalAjaxTargetPage)tester.getLastRenderedPage();
      // WICKET-5302 - only the InlineEnclosure is in the Ajax response
      // Label1 is inside the InlineEncosure
      tester.assertComponentOnAjaxResponse("wicket_InlineEnclosure-0");
      tester.assertComponentOnAjaxResponse(ajaxPage.getLabel2());
      assertVisible(ajaxPage.getLabel1());
      assertVisible(ajaxPage.getLabel2());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // Off
      InlineEnclosureWithAdditionalAjaxTargetPage ajaxPage = (InlineEnclosureWithAdditionalAjaxTargetPage)tester.getLastRenderedPage();
      tester.assertComponentOnAjaxResponse(ajaxPage.getLabel2());
      assertInVisible(ajaxPage.getLabel1());
      assertInVisible(ajaxPage.getLabel2());
    }
  }

  @Test
  public void testInlineEnclosureAjaxPage()
  {
    String inlineEnclosureIdPrefix = "wicket__InlineEnclosure_";

    String inlineEnclosureHiddenPattern = "<tr id=\"" + inlineEnclosureIdPrefix +
      "\\w+\" style=\"display:none\"></tr>";

    String inlineEnclosureVisiblePattern = "<tr bgcolor=\"red\" id=\"" +
      inlineEnclosureIdPrefix + "\\w+\">";

    {
      // On
      InlineEnclosureAjaxPage ajaxPage = tester.startPage(InlineEnclosureAjaxPage.class);
      assertVisible(ajaxPage.getToggleable());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // Off
      InlineEnclosureAjaxPage ajaxPage = (InlineEnclosureAjaxPage)tester.getLastRenderedPage();
      tester.assertContains(inlineEnclosureHiddenPattern);
      assertInvisible(ajaxPage.getToggleable());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // On
      InlineEnclosureAjaxPage ajaxPage = (InlineEnclosureAjaxPage)tester.getLastRenderedPage();
      tester.assertContains(inlineEnclosureVisiblePattern);
      assertVisible(ajaxPage.getToggleable());
      tester.clickLink(ajaxPage.getLink().getPageRelativePath(), true);
    }
    {
      // Off
      InlineEnclosureAjaxPage ajaxPage = (InlineEnclosureAjaxPage)tester.getLastRenderedPage();
      tester.assertContains(inlineEnclosureHiddenPattern);
      assertInvisible(ajaxPage.getToggleable());
    }
  }

  private final String toggledText = "This button (and red border) should appear and disappear by pressing toggle";


  /**
   * @param toggleable
   */
  protected void assertInvisible(Component toggleable)
  {
    tester.assertInvisible(toggleable.getPageRelativePath());
    assertDoesNotContain(toggledText);
    assertDoesNotContain("Also this");
  }

  /**
   * @param toggleable
   */
  protected void assertVisible(Component toggleable)
  {
    tester.assertVisible(toggleable.getPageRelativePath());
    tester.assertContains(Pattern.quote(toggledText));
    tester.assertContains(Pattern.quote("Also this"));
  }


  /**
   * @param label
   */
  protected void assertVisible(Label label)
  {
    tester.assertVisible(label.getPageRelativePath());
    tester.assertContains(Pattern.quote(label.getInnermostModel().getObject().toString()));
  }

  /**
   * @param label
   */
  protected void assertInVisible(Label label)
  {
    tester.assertInvisible(label.getPageRelativePath());
  }

  /**
   * @param string
   */
  private void assertDoesNotContain(String string)
  {
    assertFalse("Should not contain: " + string,
      tester.getLastResponseAsString().contains(string));
  }


}
TOP

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

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.