package org.wamblee.wicket.jquery;
import org.apache.wicket.Component;
+import org.apache.wicket.Page;
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.junit.Test;
import org.wamblee.wicket.MyPage;
+import flexjson.JSONSerializer;
+
import static junit.framework.TestCase.*;
public class AbstractJQueryBehaviorTest {
public void tearDown() {
wicket.destroy();
}
-
+
@Test
- public void testVerifyBasicFunc() {
+ public void testVerifyBasicFunc() {
MyPage page = new MyPage();
page.getLabel().add(new AbstractJQueryBehavior("initfunc"));
wicket.startPage(page);
assertTrue(doc.contains("jquery-noconflict"));
assertTrue(doc.contains("initfunc"));
}
-
+
@Test
- public void testCreateReadyJavascript() {
+ public void testCreateReadyJavascript() {
Component component = new Label("label");
- component.setOutputMarkupId(true);
- String readyHandler = AbstractJQueryBehavior.createReadyFunction("myfunc", component);
- assertEquals("jQuery(function(){org.wamblee.myfunc(\"#" + component.getMarkupId() + "\");});", readyHandler);
+ AbstractJQueryBehavior behavior = new AbstractJQueryBehavior("myfunc");
+ behavior.bind(component);
+ String readyHandler = behavior.createReadyFunction();
+ assertEquals("jQuery(function(){myfunc(\"#" + component.getMarkupId() +
+ "\",null);});", readyHandler);
}
@Test(expected = IllegalStateException.class)
- public void testCreateReadyJavascriptNoMarkupId() {
+ public void testNotAllowedOnPagePageBehavior() {
+ Page component = new Page() {
+ };
+ AbstractJQueryBehavior behavior = new AbstractJQueryBehavior("myfunc") {
+ @Override
+ protected boolean isPageAllowed() {
+ return false;
+ }
+ };
+ behavior.bind(component);
+ }
+
+ @Test
+ public void testCreateReadyJavascriptForPage() {
+ Page component = new Page() {
+ };
+ AbstractJQueryBehavior behavior = new AbstractJQueryBehavior("myfunc") {
+ @Override
+ protected boolean isPageAllowed() {
+ return true;
+ }
+ };
+ behavior.bind(component);
+ String readyHandler = behavior.createReadyFunction();
+ assertEquals("jQuery(function(){myfunc(\"body\",null);});", readyHandler);
+ }
+
+
+ @Test
+ public void testCreateReadyJavaScriptWithCustomConfigJavascript() {
Component component = new Label("label");
- String readyHandler = AbstractJQueryBehavior.createReadyFunction("myfunc", component);
+ 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);
+ }
+
+
}