Addition of tooltip behavior.
[utils] / wicket / components / src / test / java / org / wamblee / wicket / jquery / AbstractJQueryBehaviorTest.java
index 92fcf16e38e6da9563e8a242288613dcc8cc68d2..2646ac08fda22739be55a809a47a3d6ac4ba6e52 100644 (file)
@@ -16,6 +16,7 @@
 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;
@@ -25,6 +26,8 @@ import org.junit.Before;
 import org.junit.Test;
 import org.wamblee.wicket.MyPage;
 
+import flexjson.JSONSerializer;
+
 import static junit.framework.TestCase.*;
 
 public class AbstractJQueryBehaviorTest {
@@ -39,9 +42,9 @@ 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);
@@ -52,19 +55,106 @@ public class AbstractJQueryBehaviorTest {
         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);
+    }
+    
+
 }