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('
' +
'' +
'' +
'
' +
'' +
'' +
'' +
'', 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);
}
});
});