blob: af6f1b9e6b86c497e8a964de0a17b6a3b5230632 [file] [log] [blame]
/*
* 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.
*/
/*global ok: true, start: true, test: true, equal: true, deepEqual: true,
QUnit: true, module: true, expect: true */
jQuery(document).ready(function() {
"use strict";
module("encode");
test("Wicket.Form.encode ", function() {
expect(2);
var textInputValue = jQuery('#textInputId').val();
var encodedASCII = Wicket.Form.encode(textInputValue);
equal( encodedASCII, 'textValue', "Wicket.Form.encode() shouldn't change ASCII text'" );
var textInputUTFValue = jQuery('#textInputUTFId').val();
var encodedUTF = Wicket.Form.encode(textInputUTFValue);
// the expected value is the encoded version of 'нещо на български' (translation of 'something in Bulgarian')
equal( encodedUTF, '%D0%BD%D0%B5%D1%89%D0%BE%20%D0%BD%D0%B0%20%D0%B1%D1%8A%D0%BB%D0%B3%D0%B0%D1%80%D1%81%D0%BA%D0%B8', "Wicket.Form.encode() should encode UTF text'" );
});
module('serializeSelect');
test('Wicket.Form.serializeSelect', function() {
expect(2);
var select = Wicket.$('selectId');
var serializedSelect = Wicket.Form.serializeSelect(select);
serializedSelect = jQuery.param(serializedSelect, true);
equal(serializedSelect, 'select=0', 'Wicket.Form.serializeSelect should be able to serialize non-multiple select!');
var multipleSelect = Wicket.$('multipleSelectId');
var serializedMultipleSelect = Wicket.Form.serializeSelect(multipleSelect);
serializedMultipleSelect = jQuery.param(serializedMultipleSelect, true);
equal(serializedMultipleSelect, 'multipleSelect=0&multipleSelect=2', 'Wicket.Form.serializeSelect should be able to serialize multiple select!');
});
module('serializeInput');
test('Wicket.Form.serializeInput - input element', function() {
expect(1);
var actual = [];
jQuery('#testForm input').each(function() {
var serialized = Wicket.Form.serializeInput(this);
actual = actual.concat(serialized);
});
var expected = [
{ name: "textInput", value: "textValue" },
{ name: "textUTFInput", value: "нещо на български" },
{ name: "checkBoxInput1", value: "cbValue1" },
{ name: "checkBoxInput3", value: "cbValue3" },
{ name: "radioInput", value: "radioValue1" },
{ name: "emailInput", value: "m@g.com" },
{ name: "urlInput", value: "http://example.com" },
{ name: "searchInput", value: "wicket" },
{ name: "rangeInput", value: "67" },
{ name: "numberInput", value: "16" },
{ name: "colorInput", value: "#123456" }
];
deepEqual(actual, expected);
});
test('Wicket.Form.serializeInput - textarea element', function() {
expect(1);
var actual = [];
jQuery('#testForm textarea').each(function() {
var serialized = Wicket.Form.serializeInput(this);
actual = actual.concat(serialized);
});
var expected = [
{
name: "textArea",
value: "some text"
}
];
deepEqual(actual, expected);
});
module('Wicket.Form.serializeElement');
test("Wicket.Form.serializeElement should not serialize elements in Wicket.Form.excludeFromAjaxSerialization", function() {
Wicket.Form.excludeFromAjaxSerialization = {
textInputUTFId: "true"
};
expect(1);
var actual = [];
jQuery('input, textarea, select', jQuery('#testForm')).each(function() {
var serialized = Wicket.Form.serializeElement(this);
actual = actual.concat(serialized);
});
var expected = [
{ name: "textInput", value: "textValue" },
{ name: "checkBoxInput1", value: "cbValue1" },
{ name: "checkBoxInput3", value: "cbValue3" },
{ name: "radioInput", value: "radioValue1" },
{ name: "emailInput", value: "m@g.com" },
{ name: "urlInput", value: "http://example.com" },
{ name: "searchInput", value: "wicket" },
{ name: "rangeInput", value: "67" },
{ name: "numberInput", value: "16" },
{ name: "colorInput", value: "#123456" },
{ name: "multipleSelect", value: "0" },
{ name: "multipleSelect", value: "2" },
{ name: "select", value: "0" },
{ name: "textArea", value: "some text" }
];
deepEqual(actual, expected);
Wicket.Form.excludeFromAjaxSerialization = null;
});
test("Wicket.Form.serializeElement should serialize the HTMLFormElement's which a children of a non-HTMLFormElement", function() {
expect(1);
var actual = Wicket.Form.serializeElement('nonHtmlFormElement', true);
var expected = [
{ name: "textInput", value: "textValue" },
{ name: "textUTFInput", value: "нещо на български" },
{ name: "checkBoxInput1", value: "cbValue1" },
{ name: "checkBoxInput3", value: "cbValue3" },
{ name: "radioInput", value: "radioValue1" },
{ name: "emailInput", value: "m@g.com" },
{ name: "urlInput", value: "http://example.com" },
{ name: "searchInput", value: "wicket" },
{ name: "rangeInput", value: "67" },
{ name: "numberInput", value: "16" },
{ name: "colorInput", value: "#123456" },
{ name: "multipleSelect", value: "0" },
{ name: "multipleSelect", value: "2" },
{ name: "select", value: "0" },
{ name: "textArea", value: "some text" }
];
deepEqual(actual, expected);
});
test("Wicket.Form.serializeElement should serialize the HTMLFormElement's which a children of a non-HTMLFormElement", function() {
expect(1);
var actual = Wicket.Form.serializeElement('nonHtmlFormElement', false);
var expected = [];
deepEqual(actual, expected);
});
module('Wicket.Form.serializeForm');
test('Wicket.Form.serialize - form element WITHOUT searching for the parent form', function() {
var dontTryToFindRootForm = true,
queryString = '';
jQuery('#urlInputId').each(function() {
queryString = Wicket.Form.serialize(this, dontTryToFindRootForm);
});
queryString = jQuery.param(queryString, true);
equal(queryString, 'urlInput=http%3A%2F%2Fexample.com', 'Wicket.Form.serialize should not serialize the whole form when an element is passed and the parent form should not be searched');
});
test('Wicket.Form.serialize - form element WITH searching for the parent form', function() {
var dontTryToFindRootForm = false,
queryString = '';
jQuery('#urlInputId').each(function() {
queryString = Wicket.Form.serialize(this, dontTryToFindRootForm);
});
queryString = jQuery.param(queryString, true);
var space = jQuery.fn.jquery.indexOf("3") === 0 ? "%20" : "+";
equal(queryString, 'textInput=textValue&textUTFInput=%D0%BD%D0%B5%D1%89%D0%BE'+space+'%D0%BD%D0%B0'+space+'%D0%B1%D1%8A%D0%BB%D0%B3%D0%B0%D1%80%D1%81%D0%BA%D0%B8&checkBoxInput1=cbValue1&checkBoxInput3=cbValue3&radioInput=radioValue1&emailInput=m%40g.com&urlInput=http%3A%2F%2Fexample.com&searchInput=wicket&rangeInput=67&numberInput=16&colorInput=%23123456&multipleSelect=0&multipleSelect=2&select=0&textArea=some'+space+'text', 'Wicket.Form.serialize should serialize the whole form when an element is passed and the parent form should be searched');
});
test('Wicket.Form.serialize - form element WITH searching for the parent form', function() {
var dontTryToFindRootForm = true,
queryString = '';
jQuery('#testForm').each(function() {
queryString = Wicket.Form.serialize(this, dontTryToFindRootForm);
});
queryString = jQuery.param(queryString, true);
var space = jQuery.fn.jquery.indexOf("3") === 0 ? "%20" : "+";
equal(queryString, 'textInput=textValue&textUTFInput=%D0%BD%D0%B5%D1%89%D0%BE'+space+'%D0%BD%D0%B0'+space+'%D0%B1%D1%8A%D0%BB%D0%B3%D0%B0%D1%80%D1%81%D0%BA%D0%B8&checkBoxInput1=cbValue1&checkBoxInput3=cbValue3&radioInput=radioValue1&emailInput=m%40g.com&urlInput=http%3A%2F%2Fexample.com&searchInput=wicket&rangeInput=67&numberInput=16&colorInput=%23123456&multipleSelect=0&multipleSelect=2&select=0&textArea=some'+space+'text', 'Wicket.Form.serialize should serialize the whole form when a the form itself is passed');
});
test('Wicket.Form.serializeForm - serialize nested form (div element)', function() {
expect(1);
var $nestedForm = jQuery(
"<form>" +
"<input type='text' name='textInput' value='textInputValue'/>" +
"<div id='nestedForm'>" +
"<input type='checkbox' name='checkboxInput' value='checkboxInputValue' checked/>" +
"<input type='checkbox' name='checkboxInput' value='checkboxInputValue' checked/>" + // second time
"<input type='radio' name='radioInput' value='radioInputValue' checked/>" +
"<textarea name='textareaInput'>textareaValue</textarea>" +
"<select name='selectInput'>" +
"<option value='selectInputValue1'>Value 1</option>" +
"<option value='selectInputValue2' selected>Value 2</option>" +
"</select>" +
"</div>" +
"</form>"
);
jQuery("#qunit-fixture").append($nestedForm);
var nestedFormDiv = Wicket.$('nestedForm');
var actual = Wicket.Form.serializeForm(nestedFormDiv);
var expected = [
{
"name": "textInput",
"value": "textInputValue"
},
{
"name": "checkboxInput",
"value": "checkboxInputValue"
},
{
"name": "checkboxInput",
"value": "checkboxInputValue"
},
{
"name": "radioInput",
"value": "radioInputValue"
},
{
"name": "selectInput",
"value": "selectInputValue2"
},
{
"name": "textareaInput",
"value": "textareaValue"
}
];
deepEqual(actual, expected, "Nested form successfully serialized");
});
});