dojo
Version:
Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.
163 lines (151 loc) • 6.56 kB
JavaScript
define([
'intern!object',
'intern/chai!assert',
'../../dom-form',
'dojo/dom',
'dojo/dom-construct',
'dojo/json'
], function (registerSuite, assert, domForm, dom, domConstruct, JSON) {
var formContainer;
var f1 = {
blah: 'blah'
};
var f1_query = 'blah=blah';
var f2 = {
blah: 'blah',
multi: [ 'thud', 'thonk' ],
textarea: 'textarea_value'
};
var f2_query = 'blah=blah&multi=thud&multi=thonk&textarea=textarea_value';
var f3 = {
spaces: 'string with spaces'
};
var f3_query = 'spaces=string%20with%20spaces';
var f4 = {
action: 'Form with input named action'
};
var f4_query = 'action=Form%20with%20input%20named%20action';
var f5 = {
'blåh': 'bláh'
};
var f5_query = 'bl%C3%A5h=bl%C3%A1h';
var f6 = {
cb_group: 'foo',
radio_group: 'bam'
};
var f6_query = 'cb_group=foo&radio_group=bam';
var f6_1 = {
cb_group: 'boo',
radio_group: 'baz'
};
var f6_2 = {
cb_group: ['foo', 'boo'],
radio_group: 'baz'
};
registerSuite({
name: 'dojo/dom-form',
setup: function () {
formContainer = domConstruct.place('<div>' +
'<form id="f1" style="border: 1px solid black;">' +
'<input id="f1_blah" type="text" name="blah" value="blah">' +
'<input id="f1_no_value" type="text" name="no_value" value="blah" disabled>' +
'<input id="f1_no_value2" type="button" name="no_value2" value="blah">' +
'</form>' +
'<form id="f2" style="border: 1px solid black;">' +
'<input id="f2_blah" type="text" name="blah" value="blah">' +
'<input id="f2_no_value" type="text" name="no_value" value="blah" disabled>' +
'<input id="f2_no_value2" type="button" name="no_value2" value="blah">' +
'<select id="f2_multi" type="select" multiple name="multi" size="5">' +
'<option value="blah">blah</option>' +
'<option value="thud" selected>thud</option>' +
'<option value="thonk" selected>thonk</option>' +
'</select>' +
'<textarea id="f2_textarea" name="textarea">textarea_value</textarea>' +
'<button id="f2_button1" name="button1" value="buttonValue1">This is a button that should not be in formToObject.</button>' +
'<input id="f2_fileParam1" type="file" name="fileParam1" value="fileValue1"> File input should not show up in formToObject.' +
'</form>' +
'<form id="f3" style="border: 1px solid black;">' +
'<input id="f3_spaces" type="hidden" name="spaces" value="string with spaces">' +
'</form>' +
'<form id="f4" style="border: 1px solid black;" action="xhrDummyMethod.php">' +
'<input id="f4_action" type="hidden" name="action" value="Form with input named action">' +
'</form>' +
'<form id="f5" style="border: 1px solid black;">' +
'<input id="f5_blah" type="text" name="blåh" value="bláh">' +
'<input id="f5_no_value" type="text" name="no_value" value="blah" disabled>' +
'<input id="f5_no_value2" type="button" name="no_value2" value="blah">' +
'</form>' +
'<form id="f6" style="border: 1px solid black;">' +
'<input id="f6_checkbox1" type="checkbox" name="cb_group" value="foo" checked>' +
'<input id="f6_checkbox2" type="checkbox" name="cb_group" value="boo">' +
'<input id="f6_radio1" type="radio" name="radio_group" value="baz">' +
'<input id="f6_radio2" type="radio" name="radio_group" value="bam" checked>' +
'</form>' +
'</div>', document.body);
},
teardown: function () {
domConstruct.destroy(formContainer);
formContainer = null;
},
'.fieldToObject': {
'ids': function () {
assert.strictEqual(domForm.fieldToObject('f1_no_value'), null);
assert.strictEqual(domForm.fieldToObject('f1_no_value2'), 'blah');
assert.deepEqual(domForm.fieldToObject('f2_multi'), f2.multi);
assert.strictEqual(domForm.fieldToObject('f2_textarea'), f2.textarea);
assert.strictEqual(domForm.fieldToObject('f2_fileParam1'), '');
assert.strictEqual(domForm.fieldToObject('f4_action'), f4.action);
assert.strictEqual(domForm.fieldToObject('f6_checkbox1'), 'foo');
assert.strictEqual(domForm.fieldToObject('f6_checkbox2'), null);
assert.strictEqual(domForm.fieldToObject('f6_radio1'), null);
assert.strictEqual(domForm.fieldToObject('f6_radio2'), 'bam');
},
'nodes': function () {
assert.strictEqual(domForm.fieldToObject(dom.byId('f1_no_value')), null);
assert.strictEqual(domForm.fieldToObject(dom.byId('f1_no_value2')), 'blah');
assert.deepEqual(domForm.fieldToObject(dom.byId('f2_multi')), f2.multi);
assert.strictEqual(domForm.fieldToObject(dom.byId('f2_textarea')), f2.textarea);
assert.strictEqual(domForm.fieldToObject(dom.byId('f2_fileParam1')), '');
assert.strictEqual(domForm.fieldToObject(dom.byId('f4_action')), f4.action);
assert.strictEqual(domForm.fieldToObject(dom.byId('f6_checkbox1')), 'foo');
assert.strictEqual(domForm.fieldToObject(dom.byId('f6_checkbox2')), null);
assert.strictEqual(domForm.fieldToObject(dom.byId('f6_radio1')), null);
assert.strictEqual(domForm.fieldToObject(dom.byId('f6_radio2')), 'bam');
}
},
'.toObject': function () {
assert.deepEqual(domForm.toObject('f1'), f1);
assert.deepEqual(domForm.toObject('f2'), f2);
assert.deepEqual(domForm.toObject('f3'), f3);
assert.deepEqual(domForm.toObject('f4'), f4);
assert.deepEqual(domForm.toObject('f5'), f5);
assert.deepEqual(domForm.toObject('f6'), f6);
dom.byId('f6_checkbox1').checked = false;
dom.byId('f6_checkbox2').checked = true;
dom.byId('f6_radio1').checked = true;
assert.deepEqual(domForm.toObject('f6'), f6_1);
dom.byId('f6_checkbox1').checked = true;
assert.deepEqual(domForm.toObject('f6'), f6_2);
// reset to defaults
dom.byId('f6_checkbox1').checked = true;
dom.byId('f6_checkbox2').checked = false;
dom.byId('f6_radio2').checked = true;
},
'.toQuery': function () {
assert.strictEqual(domForm.toQuery('f1'), f1_query);
assert.strictEqual(domForm.toQuery('f2'), f2_query);
assert.strictEqual(domForm.toQuery('f3'), f3_query);
assert.strictEqual(domForm.toQuery('f4'), f4_query);
assert.strictEqual(domForm.toQuery('f5'), f5_query);
assert.strictEqual(domForm.toQuery('f6'), f6_query);
},
'.toJson': function () {
assert.deepEqual(JSON.parse(domForm.toJson('f1')), f1);
assert.deepEqual(JSON.parse(domForm.toJson('f2')), f2);
assert.deepEqual(JSON.parse(domForm.toJson('f3')), f3);
assert.deepEqual(JSON.parse(domForm.toJson('f4')), f4);
assert.deepEqual(JSON.parse(domForm.toJson('f5')), f5);
assert.deepEqual(JSON.parse(domForm.toJson('f6')), f6);
}
});
});