blob: e444be5bf2b2673458f6bbaed42c200b6a921528 [file] [log] [blame]
// Copyright 2006 The Closure Library Authors. All Rights Reserved.
//
// Licensed 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.
goog.provide('goog.dom.formsTest');
goog.setTestOnly('goog.dom.formsTest');
goog.require('goog.dom');
goog.require('goog.dom.forms');
goog.require('goog.testing.jsunit');
function testGetFormDataString() {
var el = goog.dom.getElement('testform1');
var result = goog.dom.forms.getFormDataString(el);
assertEquals(
'in1=foo&in2=bar&in2=baaz&in3=&pass=bar&textarea=foo%20bar%20baz&' +
'select1=1&select2=a&select2=c&select3=&checkbox1=on&radio=X&radio2=Y',
result);
}
function testGetFormDataMap() {
var el = goog.dom.getElement('testform1');
var result = goog.dom.forms.getFormDataMap(el);
assertArrayEquals(['foo'], result.get('in1'));
assertArrayEquals(['bar', 'baaz'], result.get('in2'));
assertArrayEquals(['1'], result.get('select1'));
assertArrayEquals(['a', 'c'], result.get('select2'));
assertArrayEquals(['on'], result.get('checkbox1'));
assertUndefined(result.get('select6'));
assertUndefined(result.get('checkbox2'));
assertArrayEquals(['X'], result.get('radio'));
assertArrayEquals(['Y'], result.get('radio2'));
}
function testHasFileInput() {
var el = goog.dom.getElement('testform1');
assertFalse(goog.dom.forms.hasFileInput(el));
el = goog.dom.getElement('testform2');
assertTrue(goog.dom.forms.hasFileInput(el));
}
function testGetValueOnAtypicalValueElements() {
var el = goog.dom.getElement('testdiv1');
var result = goog.dom.forms.getValue(el);
assertNull(result);
var el = goog.dom.getElement('testfieldset1');
var result = goog.dom.forms.getValue(el);
assertNull(result);
var el = goog.dom.getElement('testlegend1');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testHasValueInput() {
var el = goog.dom.getElement('in1');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testGetValueByNameForNonExistentElement() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'non_existent');
assertNull(result);
}
function testHasValueByNameInput() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'in1');
assertTrue(result);
}
function testHasValueInputEmpty() {
var el = goog.dom.getElement('in3');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameEmpty() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'in3');
assertFalse(result);
}
function testHasValueRadio() {
var el = goog.dom.getElement('radio1');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testHasValueByNameRadio() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'radio');
assertTrue(result);
}
function testHasValueRadioNotChecked() {
var el = goog.dom.getElement('radio2');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameRadioNotChecked() {
var form = goog.dom.getElement('testform3');
var result = goog.dom.forms.hasValueByName(form, 'radio3');
assertFalse(result);
}
function testHasValueSelectSingle() {
var el = goog.dom.getElement('select1');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testHasValueByNameSelectSingle() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'select1');
assertTrue(result);
}
function testHasValueSelectMultiple() {
var el = goog.dom.getElement('select2');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testHasValueByNameSelectMultiple() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'select2');
assertTrue(result);
}
function testHasValueSelectNotSelected() {
// select without value
var el = goog.dom.getElement('select3');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameSelectNotSelected() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'select3');
assertFalse(result);
}
function testHasValueSelectMultipleNotSelected() {
var el = goog.dom.getElement('select6');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameSelectMultipleNotSelected() {
var form = goog.dom.getElement('testform3');
var result = goog.dom.forms.hasValueByName(form, 'select6');
assertFalse(result);
}
// TODO(user): make this a meaningful selenium test
function testSetDisabledFalse() {
}
function testSetDisabledTrue() {
}
// TODO(user): make this a meaningful selenium test
function testFocusAndSelect() {
var el = goog.dom.getElement('in1');
goog.dom.forms.focusAndSelect(el);
}
function testGetValueInput() {
var el = goog.dom.getElement('in1');
var result = goog.dom.forms.getValue(el);
assertEquals('foo', result);
}
function testSetValueInput() {
var el = goog.dom.getElement('in3');
goog.dom.forms.setValue(el, 'foo');
assertEquals('foo', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, 3500);
assertEquals('3500', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, 0);
assertEquals('0', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, null);
assertEquals('', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, undefined);
assertEquals('', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, false);
assertEquals('false', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, {});
assertEquals({}.toString(), goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, {
toString: function() {
return 'test';
}
});
assertEquals('test', goog.dom.forms.getValue(el));
// unset
goog.dom.forms.setValue(el);
assertEquals('', goog.dom.forms.getValue(el));
}
function testGetValuePassword() {
var el = goog.dom.getElement('pass');
var result = goog.dom.forms.getValue(el);
assertEquals('bar', result);
}
function testGetValueByNamePassword() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'pass');
assertEquals('bar', result);
}
function testGetValueTextarea() {
var el = goog.dom.getElement('textarea1');
var result = goog.dom.forms.getValue(el);
assertEquals('foo bar baz', result);
}
function testGetValueByNameTextarea() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'textarea1');
assertEquals('foo bar baz', result);
}
function testSetValueTextarea() {
var el = goog.dom.getElement('textarea2');
goog.dom.forms.setValue(el, 'foo bar baz');
var result = goog.dom.forms.getValue(el);
assertEquals('foo bar baz', result);
}
function testGetValueSelectSingle() {
var el = goog.dom.getElement('select1');
var result = goog.dom.forms.getValue(el);
assertEquals('1', result);
}
function testGetValueByNameSelectSingle() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'select1');
assertEquals('1', result);
}
function testSetValueSelectSingle() {
var el = goog.dom.getElement('select4');
goog.dom.forms.setValue(el, '2');
var result = goog.dom.forms.getValue(el);
assertEquals('2', result);
// unset
goog.dom.forms.setValue(el);
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testSetValueSelectSingleEmptyString() {
var el = goog.dom.getElement('select7');
// unset
goog.dom.forms.setValue(el);
var result = goog.dom.forms.getValue(el);
assertNull(result);
goog.dom.forms.setValue(el, '');
result = goog.dom.forms.getValue(el);
assertEquals('', result);
}
function testGetValueSelectMultiple() {
var el = goog.dom.getElement('select2');
var result = goog.dom.forms.getValue(el);
assertArrayEquals(['a', 'c'], result);
}
function testGetValueSelectMultipleNotSelected() {
var el = goog.dom.getElement('select6');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueByNameSelectMultiple() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'select2');
assertArrayEquals(['a', 'c'], result);
}
function testSetValueSelectMultiple() {
var el = goog.dom.getElement('select5');
goog.dom.forms.setValue(el, ['a', 'c']);
var result = goog.dom.forms.getValue(el);
assertArrayEquals(['a', 'c'], result);
goog.dom.forms.setValue(el, 'a');
var result = goog.dom.forms.getValue(el);
assertArrayEquals(['a'], result);
// unset
goog.dom.forms.setValue(el);
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueCheckbox() {
var el = goog.dom.getElement('checkbox1');
var result = goog.dom.forms.getValue(el);
assertEquals('on', result);
var el = goog.dom.getElement('checkbox2');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueByNameCheckbox() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'checkbox1');
assertEquals('on', result);
result = goog.dom.forms.getValueByName(form, 'checkbox2');
assertNull(result);
}
function testGetValueRadio() {
var el = goog.dom.getElement('radio1');
var result = goog.dom.forms.getValue(el);
assertEquals('X', result);
var el = goog.dom.getElement('radio2');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueByNameRadio() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'radio');
assertEquals('X', result);
result = goog.dom.forms.getValueByName(form, 'radio2');
assertEquals('Y', result);
}
function testGetValueButton() {
var el = goog.dom.getElement('button');
var result = goog.dom.forms.getValue(el);
assertEquals('button', result);
}
function testGetValueSubmit() {
var el = goog.dom.getElement('submit');
var result = goog.dom.forms.getValue(el);
assertEquals('submit', result);
}
function testGetValueReset() {
var el = goog.dom.getElement('reset');
var result = goog.dom.forms.getValue(el);
assertEquals('reset', result);
}
function testGetFormDataHelperAndNonInputElements() {
var el = goog.dom.getElement('testform4');
goog.dom.forms.getFormDataHelper_(el, {}, goog.nullFunction);
}