/*
* 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.ajax;
import static org.apache.wicket.ajax.attributes.CallbackParameter.context;
import static org.apache.wicket.ajax.attributes.CallbackParameter.converted;
import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
import static org.apache.wicket.ajax.attributes.CallbackParameter.resolved;
import org.apache.wicket.util.tester.WicketTestCase;
import org.junit.Test;
public class AjaxCallbackFunctionTest extends WicketTestCase
{
@Test
public void testDefaultCallbackFunction()
{
AjaxCallbackPage page = tester.startPage(AjaxCallbackPage.class);
assertEquals(//
"function () {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.0-\"};\n" //
+ "var params = [];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior1().getCallbackFunction().toString());
assertEquals(//
"function () {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.1-\"," //
+ "\"ep\":[{\"name\":\"param1\",\"value\":123},{\"name\":\"param2\",\"value\":\"zh_CN\"}]};\n" //
+ "var params = [];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior2().getCallbackFunction().toString());
}
@Test
public void testCallbackFunctionWithContext()
{
AjaxCallbackPage page = tester.startPage(AjaxCallbackPage.class);
assertEquals(//
"function (context) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.0-\"};\n" //
+ "var params = [];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior1().getCallbackFunction(context("context")).toString());
assertEquals(//
"function (context) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.1-\"," //
+ "\"ep\":[{\"name\":\"param1\",\"value\":123},{\"name\":\"param2\",\"value\":\"zh_CN\"}]};\n" //
+ "var params = [];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior2().getCallbackFunction(context("context")).toString());
}
@Test
public void testCallbackFunctionWithExplicit()
{
AjaxCallbackPage page = tester.startPage(AjaxCallbackPage.class);
assertEquals(//
"function (explicit) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.0-\"};\n" //
+ "var params = [{\"name\":\"explicit\",\"value\":explicit}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior1().getCallbackFunction(explicit("explicit")).toString());
assertEquals(//
"function (explicit) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.1-\",\"ep\":[{\"name\":\"param1\",\"value\":123},{\"name\":\"param2\",\"value\":\"zh_CN\"}]};\n" //
+ "var params = [{\"name\":\"explicit\",\"value\":explicit}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior2().getCallbackFunction(explicit("explicit")).toString());
}
@Test
public void testCallbackFunctionWithResolved()
{
AjaxCallbackPage page = tester.startPage(AjaxCallbackPage.class);
assertEquals(//
"function () {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.0-\"};\n" //
+ "var params = [{\"name\":\"resolved\",\"value\":window.location.href}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior1()
.getCallbackFunction(resolved("resolved", "window.location.href"))
.toString());
assertEquals(//
"function () {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.1-\"," //
+ "\"ep\":[{\"name\":\"param1\",\"value\":123},{\"name\":\"param2\",\"value\":\"zh_CN\"}]};\n" //
+ "var params = [{\"name\":\"resolved\",\"value\":window.location.href}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior2()
.getCallbackFunction(resolved("resolved", "window.location.href"))
.toString());
}
@Test
public void testCallbackFunctionWithConverted()
{
AjaxCallbackPage page = tester.startPage(AjaxCallbackPage.class);
assertEquals(
//
"function (converted) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.0-\"};\n" //
+ "var params = [{\"name\":\"converted\",\"value\":converted.substring(0, 3)}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior1()
.getCallbackFunction(converted("converted", "converted.substring(0, 3)"))
.toString());
assertEquals(
//
"function (converted) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.1-\"," //
+ "\"ep\":[{\"name\":\"param1\",\"value\":123},{\"name\":\"param2\",\"value\":\"zh_CN\"}]};\n" //
+ "var params = [{\"name\":\"converted\",\"value\":converted.substring(0, 3)}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior2()
.getCallbackFunction(converted("converted", "converted.substring(0, 3)"))
.toString());
}
@Test
public void testCallbackFunctionWithAll()
{
AjaxCallbackPage page = tester.startPage(AjaxCallbackPage.class);
assertEquals(
//
"function (context,explicit,converted) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.0-\"};\n" //
+ "var params = [{\"name\":\"explicit\",\"value\":explicit},"
+ "{\"name\":\"resolved\",\"value\":window.location.href},"
+ "{\"name\":\"converted\",\"value\":converted.substring(0, 3)}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior1()
.getCallbackFunction(context("context"), explicit("explicit"),
resolved("resolved", "window.location.href"),
converted("converted", "converted.substring(0, 3)"))
.toString());
assertEquals(
//
"function (context,explicit,converted) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.1-\"," //
+ "\"ep\":[{\"name\":\"param1\",\"value\":123},{\"name\":\"param2\",\"value\":\"zh_CN\"}]};\n" //
+ "var params = [{\"name\":\"explicit\",\"value\":explicit},"
+ "{\"name\":\"resolved\",\"value\":window.location.href},"
+ "{\"name\":\"converted\",\"value\":converted.substring(0, 3)}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior2()
.getCallbackFunction(context("context"), explicit("explicit"),
resolved("resolved", "window.location.href"),
converted("converted", "converted.substring(0, 3)"))
.toString());
}
@Test
public void testJQueryUIEvent()
{
AjaxCallbackPage page = tester.startPage(AjaxCallbackPage.class);
assertEquals(
//
"function (event,ui) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.0-\"};\n" //
+ "var params = [{\"name\":\"sortIndex\",\"value\":$(this).find(':data(sortable-item)').index(ui.item)}," //
+ "{\"name\":\"sortItemId\",\"value\":$(ui.item).attr('id')}," //
+ "{\"name\":\"sortSenderId\",\"value\":$(ui.sender).attr('id')}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior1()
.getCallbackFunction(context("event"), context("ui"),
resolved("sortIndex", "$(this).find(':data(sortable-item)').index(ui.item)"),
resolved("sortItemId", "$(ui.item).attr('id')"),
resolved("sortSenderId", "$(ui.sender).attr('id')"))
.toString());
assertEquals(
//
"function (event,ui) {\n" //
+ "var attrs = {\"u\":\"./wicket/bookmarkable/org.apache.wicket.ajax.AjaxCallbackPage?0-1.1-\"," //
+ "\"ep\":[{\"name\":\"param1\",\"value\":123},{\"name\":\"param2\",\"value\":\"zh_CN\"}]};\n" //
+ "var params = [{\"name\":\"sortIndex\",\"value\":$(this).find(':data(sortable-item)').index(ui.item)}," //
+ "{\"name\":\"sortItemId\",\"value\":$(ui.item).attr('id')}," //
+ "{\"name\":\"sortSenderId\",\"value\":$(ui.sender).attr('id')}];\n" //
+ "attrs.ep = params.concat(attrs.ep || []);\n" //
+ "Wicket.Ajax.ajax(attrs);\n" //
+ "}\n", //
page.getBehavior2()
.getCallbackFunction(context("event"), context("ui"),
resolved("sortIndex", "$(this).find(':data(sortable-item)').index(ui.item)"),
resolved("sortItemId", "$(ui.item).attr('id')"),
resolved("sortSenderId", "$(ui.sender).attr('id')"))
.toString());
}
}