/* * Copyright 2005-2010 the original author or authors. * * Licensed 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.wamblee.wicket.jquery; import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.util.tester.TagTester; import org.apache.wicket.util.tester.WicketTester; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.wamblee.wicket.MyPage; import flexjson.JSONSerializer; import static junit.framework.TestCase.*; public class AbstractJQueryBehaviorTest { private WicketTester wicket; @Before public void setUp() { wicket = new WicketTester(); } @After public void tearDown() { wicket.destroy(); } @Test public void testVerifyBasicFunc() { MyPage page = new MyPage(); page.getLabel().add(new AbstractJQueryBehavior("initfunc")); wicket.startPage(page); wicket.assertRenderedPage(MyPage.class); TagTester tag = wicket.getTagByWicketId("label"); assertNotNull(tag.getAttribute("id")); String doc = wicket.getServletResponse().getDocument(); assertTrue(doc.contains("jquery-noconflict")); assertTrue(doc.contains("initfunc")); } @Test public void testCreateReadyJavascript() { Component component = new Label("label"); component.setOutputMarkupId(true); AbstractJQueryBehavior behavior = new AbstractJQueryBehavior("myfunc"); behavior.bind(component); String readyHandler = behavior.createReadyFunction(); assertEquals("jQuery(function(){myfunc(\"#" + component.getMarkupId() + "\",null);});", readyHandler); } @Test public void testCreateReadyJavaScriptWithCustomConfigJavascript() { Component component = new Label("label"); component.setOutputMarkupId(false); AbstractJQueryBehavior behavior = new AbstractJQueryBehavior("myfunc") { @Override protected String getConfigurationJavascript() { return "bla"; } }; behavior.bind(component); String readyHandler = behavior.createReadyFunction(); assertEquals("jQuery(function(){myfunc(\"#" + component.getMarkupId() + "\",bla);});", readyHandler); } public static final class X { private int x = 10; public int getX() { return x; } } @Test public void testCreateReadyJavaScriptWithConfig() { Component component = new Label("label"); component.setOutputMarkupId(false); AbstractJQueryBehavior behavior = new AbstractJQueryBehavior("myfunc") { @Override protected Object getConfigurationObject() { return new X(); } }; behavior.bind(component); String readyHandler = behavior.createReadyFunction(); String config = new JSONSerializer().serialize(new X()); assertEquals("jQuery(function(){myfunc(\"#" + component.getMarkupId() + "\"," + config + ");});", readyHandler); } @Test public void testCreateReadyJavaScriptWithConfigWithCustomSerializer() { Component component = new Label("label"); component.setOutputMarkupId(false); AbstractJQueryBehavior behavior = new AbstractJQueryBehavior("myfunc") { @Override protected Object getConfigurationObject() { return new X(); } @Override protected JSONSerializer getCustomSerializer() { return new JSONSerializer().exclude("x"); } }; behavior.bind(component); String readyHandler = behavior.createReadyFunction(); String config = new JSONSerializer().exclude("x").serialize(new X()); assertEquals("jQuery(function(){myfunc(\"#" + component.getMarkupId() + "\"," + config + ");});", readyHandler); } }