Package org.wicketstuff.jwicket.ui.tooltip

Source Code of org.wicketstuff.jwicket.ui.tooltip.TestJQueryUiTooltip

/* Copyright (c) 2013 Martin Knopf
*
* Licensed under the MIT license;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://opensource.org/licenses/MIT
*
* 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.wicketstuff.jwicket.ui.tooltip;

import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import org.apache.wicket.Component;
import org.apache.wicket.markup.head.CssReferenceHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.wicketstuff.jwicket.JsOption;

/**
*
* @author Martin Knopf
*
*/
public class TestJQueryUiTooltip
{
  private Component component;
  private JQueryUiTooltip tooltip;
  private JQueryUiWidget widget;
  private WicketTester tester;

  @Before
  public void setUp() throws Exception
  {
    tester = new WicketTester();
    component = new Label("id");
    tester.startComponentInPage(component);
    widget = Mockito.mock(JQueryUiWidget.class);
    when(widget.buildJS(Mockito.anyString())).thenReturn("test JavaScript");
    tooltip = new JQueryUiTooltip(widget);
    component.add(tooltip);
  }

  @Test
  public void shouldAddDefaultCssToResponse()
  {
    IHeaderResponse response = mock(IHeaderResponse.class);

    tooltip.renderHead(component, response);

    verify(response, times(1)).render(
      Mockito.eq(CssReferenceHeaderItem.forReference(tooltip.uiTooltipCss_1_10_3)));
  }

  @Test
  public void shouldAddCustomCssToResponse()
  {
    IHeaderResponse response = mock(IHeaderResponse.class);
    CssResourceReference customCssResourceReference = new CssResourceReference(
      JQueryUiTooltip.class, "test.css");

    tooltip.addCssResource(customCssResourceReference);
    tooltip.renderHead(component, response);

    verify(response, times(1)).render(
      Mockito.eq(CssReferenceHeaderItem.forReference(customCssResourceReference)));
  }

  @SuppressWarnings("static-access")
  @Test
  public void shouldAvoidAddingCssToResponseMultipleTimes()
  {
    IHeaderResponse response = mock(IHeaderResponse.class);
    CssResourceReference customCssResourceReference = new CssResourceReference(
      JQueryUiTooltip.class, "test.css");

    tooltip.renderHead(component, response);
    tooltip.addCssResource(customCssResourceReference);
    tooltip.renderHead(component, response);

    verify(response, times(1)).render(
      Mockito.eq(CssReferenceHeaderItem.forReference(tooltip.uiTooltipCss_1_10_3)));
  }

  @SuppressWarnings("static-access")
  @Test
  public void shouldNotAddCssToResponse()
  {
    IHeaderResponse response = mock(IHeaderResponse.class);
    CssResourceReference customCssResourceReference = new CssResourceReference(
      JQueryUiTooltip.class, "test.css");

    tooltip.addCssResource(customCssResourceReference);
    tooltip.withoutCss();
    tooltip.renderHead(component, response);

    verify(response, never()).render(
      CssReferenceHeaderItem.forReference(tooltip.uiTooltipCss_1_10_3));
  }

  @Test
  public void shouldUseDefaultContentWhenNoContentProvided()
  {
    verify(widget).setOption("content", "function(){" /**/
      + "var title=$(this).attr('title');" /**/
      + "if(typeof title!=='undefined' && title!==false){return title;}" /**/
      + "else{return $(this).attr('data-tooltip');}" /**/
      + "}");
  }

  @Test
  public void shouldSurroundContentOptionWithSingleQuotes()
  {
    tooltip.setContent("<h1>tooltip content</h1>");

    verify(widget).setOption("content", "'<h1>tooltip content</h1>'");
  }

  @Test
  public void shouldCreateMarkupGetterForContentOption()
  {
    tooltip.setContent(component);

    verify(widget).setOption("content", "$('#" + component.getMarkupId() + "').html()");
  }

  @Test
  public void shouldConvertDisabledOptionToString()
  {
    tooltip.setDisabled(true);

    verify(widget).setOption("disabled", "true");

    tooltip.setDisabled(false);

    verify(widget).setOption("disabled", "false");
  }

  @Test
  public void shouldConvertHideOptionFromBooleanToString()
  {
    tooltip.setHide(true);

    verify(widget).setOption("hide", "true");

    tooltip.setHide(false);

    verify(widget).setOption("hide", "false");
  }

  @Test
  public void shouldConvertHideOptionFromIntToString()
  {
    tooltip.setHide(5);

    verify(widget).setOption("hide", "5");
  }

  @Test
  public void shouldSurroundHideOptionWithSingleQuotes()
  {
    tooltip.setHide("slideUp");

    verify(widget).setOption("hide", "'slideUp'");
  }

  @Test
  public void shouldConvertHideOptionFromJsOptionsToString()
  {
    JsOption effect = new JsOption("effect", "'explode'");
    JsOption duration = new JsOption("duration", "1000");
    tooltip.setHide(effect, duration);

    verify(widget).setOption("hide", "{effect:'explode',duration:1000}");
  }

  @Test
  public void shouldSurroundItemsOptionWithSingleQuotes()
  {
    tooltip.setItems(".someItem");

    verify(widget).setOption("items", "'.someItem'");
  }

  @Test
  public void shouldUseMarkupIdAsDefaultItemsOption()
  {
    tooltip.getJsBuilder();

    verify(widget, atLeastOnce()).setOption("items", "'#" + component.getMarkupId() + "'");
  }

  @Test
  public void shouldUseDocumentAsDefaultItemsOptionWhenAddedToPage()
  {
    tester = new WicketTester();
    TestPage page = new TestPage();
    tester.startPage(page);
    JQueryUiTooltip tooltip = new JQueryUiTooltip(widget);
    page.add(tooltip);

    tooltip.getJsBuilder();

    verify(widget, atLeastOnce()).setOption("items", "document");
  }

  @Test
  public void shouldConvertPositionOptionFromJsOptionsToString()
  {
    JsOption my = new JsOption("my", "'left+15 center'");
    JsOption at = new JsOption("at", "'right center'");
    tooltip.setPosition(my, at);

    verify(widget).setOption("position", "{my:'left+15 center',at:'right center'}");
  }

  @Test
  public void shouldConvertShowOptionFromBooleanToString()
  {
    tooltip.setHide(true);

    verify(widget).setOption("hide", "true");

    tooltip.setHide(false);

    verify(widget).setOption("hide", "false");
  }

  @Test
  public void shouldConvertShowOptionFromIntToString()
  {
    tooltip.setHide(5);

    verify(widget).setOption("hide", "5");
  }

  @Test
  public void shouldSurroundShowOptionWithSingleQuotes()
  {
    tooltip.setHide("slideUp");

    verify(widget).setOption("hide", "'slideUp'");
  }

  @Test
  public void shouldonvertShowOptionFromJsOptionsToString()
  {
    JsOption effect = new JsOption("effect", "'explode'");
    JsOption duration = new JsOption("duration", "1000");
    tooltip.setHide(effect, duration);

    verify(widget).setOption("hide", "{effect:'explode',duration:1000}");
  }

  @Test
  public void shouldSurroundTooltipClassOptionWithSingleQuotes()
  {
    tooltip.setTooltipClass(".someClass");

    verify(widget).setOption("tooltipClass", "'.someClass'");
  }

  @Test
  public void shouldConvertTrackOptionToString()
  {
    tooltip.setTrack(true);

    verify(widget).setOption("track", "true");

    tooltip.setTrack(false);

    verify(widget).setOption("track", "false");
  }

  @Test
  public void shouldBuildTheJQuerySelector()
  {
    IHeaderResponse response = mock(IHeaderResponse.class);

    tooltip.renderHead(component, response);

    verify(widget).buildJS("'#" + component.getMarkupId() + "'");
  }

}
TOP

Related Classes of org.wicketstuff.jwicket.ui.tooltip.TestJQueryUiTooltip

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.