215 lines
No EOL
5.9 KiB
JavaScript
215 lines
No EOL
5.9 KiB
JavaScript
/*
|
|
This file is part of Ext JS 3.4
|
|
|
|
Copyright (c) 2011-2013 Sencha Inc
|
|
|
|
Contact: http://www.sencha.com/contact
|
|
|
|
GNU General Public License Usage
|
|
This file may be used under the terms of the GNU General Public License version 3.0 as
|
|
published by the Free Software Foundation and appearing in the file LICENSE included in the
|
|
packaging of this file.
|
|
|
|
Please review the following information to ensure the GNU General Public License version 3.0
|
|
requirements will be met: http://www.gnu.org/copyleft/gpl.html.
|
|
|
|
If you are unsure which license is appropriate for your use, please contact the sales department
|
|
at http://www.sencha.com/contact.
|
|
|
|
Build date: 2013-04-03 15:07:25
|
|
*/
|
|
/**
|
|
* Tests Ext.data.Store functionality
|
|
* @author Ed Spencer
|
|
*/
|
|
(function() {
|
|
var suite = Ext.test.session.getSuite('Ext.form.CompositeField'),
|
|
assert = Y.Assert;
|
|
|
|
//builds a simple composite field
|
|
function buildField(config) {
|
|
config = config || {};
|
|
|
|
Ext.applyIf(config, {
|
|
items: [
|
|
{xtype: 'textfield', name: 'title', width: 40, fieldLabel: 'Title'},
|
|
{xtype: 'textfield', name: 'firstName', flex: 1, fieldLabel: 'First'},
|
|
{xtype: 'textfield', name: 'lastName', flex: 1, fieldLabel: 'Last'}
|
|
]
|
|
});
|
|
|
|
return new Ext.form.CompositeField(config);
|
|
};
|
|
|
|
//builds and renders a FormPanel containing a composite field
|
|
function createForm() {
|
|
this.field1 = new Ext.form.TextField({name: 'firstName', flex: 1, fieldLabel: 'First'});
|
|
this.field2 = new Ext.form.TextField({name: 'lastName', flex: 1, fieldLabel: 'Last'});
|
|
|
|
this.composite = new Ext.form.CompositeField({
|
|
items: [
|
|
{xtype: 'textfield', name: 'title', width: 40, fieldLabel: 'Title'},
|
|
this.field1,
|
|
this.field2
|
|
]
|
|
});
|
|
|
|
this.form = new Ext.form.FormPanel({
|
|
renderTo: Ext.getBody(),
|
|
items : [
|
|
this.composite
|
|
]
|
|
});
|
|
};
|
|
|
|
//use this to tearDown createForm
|
|
function destroyForm() {
|
|
this.form.destroy();
|
|
};
|
|
|
|
suite.add(new Y.Test.Case({
|
|
name: 'building the label',
|
|
|
|
testDefaultLabel: function() {
|
|
var field = buildField();
|
|
|
|
assert.areSame('Title, First, Last', field.fieldLabel);
|
|
},
|
|
|
|
testCustomFieldLabel: function() {
|
|
var field = buildField({fieldLabel: 'Custom label'});
|
|
|
|
assert.areSame('Custom label', field.fieldLabel);
|
|
}
|
|
}));
|
|
|
|
suite.add(new Y.Test.Case({
|
|
name: 'isDirty',
|
|
|
|
setUp : createForm,
|
|
tearDown: destroyForm,
|
|
|
|
testFalseIfDisabled: function() {
|
|
this.composite.disable();
|
|
|
|
assert.isFalse(this.composite.isDirty());
|
|
},
|
|
|
|
testIsClean: function() {
|
|
assert.isFalse(this.composite.isDirty());
|
|
},
|
|
|
|
testOneFieldDirty: function() {
|
|
this.field1.isDirty = function() {
|
|
return true;
|
|
};
|
|
|
|
assert.isTrue(this.composite.isDirty());
|
|
}
|
|
}));
|
|
|
|
suite.add(new Y.Test.Case({
|
|
name: 'reset',
|
|
|
|
setUp : createForm,
|
|
tearDown: destroyForm,
|
|
|
|
testPropagatesToChildren: function() {
|
|
var callCount = 0;
|
|
|
|
var resetFunc =function() {
|
|
callCount ++;
|
|
};
|
|
|
|
this.field1.reset = resetFunc;
|
|
this.field2.reset = resetFunc;
|
|
|
|
//we need to set this to avoid an unrelated error when resetting
|
|
//clearInvalid would otherwise try to clear a non-existent DOM node
|
|
this.composite.clearInvalid = Ext.emptyFn;
|
|
|
|
this.composite.reset();
|
|
|
|
assert.areEqual(2, callCount);
|
|
}
|
|
}));
|
|
|
|
suite.add(new Y.Test.Case({
|
|
name: 'enabling and disabling',
|
|
|
|
setUp : createForm,
|
|
tearDown: destroyForm,
|
|
|
|
testEnablePropagatesToChildren: function() {
|
|
var callCount = 0;
|
|
|
|
var enableFunc =function() {
|
|
callCount ++;
|
|
};
|
|
|
|
this.field1.enable = enableFunc;
|
|
this.field2.enable = enableFunc;
|
|
|
|
this.composite.onEnable();
|
|
|
|
assert.areEqual(2, callCount);
|
|
},
|
|
|
|
testDisablePropagatesToChildren: function() {
|
|
var callCount = 0;
|
|
|
|
var disableFunc = function() {
|
|
callCount ++;
|
|
};
|
|
|
|
this.field1.disable = disableFunc;
|
|
this.field2.disable = disableFunc;
|
|
|
|
this.composite.onDisable();
|
|
|
|
assert.areEqual(2, callCount);
|
|
}
|
|
}));
|
|
|
|
suite.add(new Y.Test.Case({
|
|
name: 'setting read only',
|
|
|
|
setUp : createForm,
|
|
tearDown: destroyForm,
|
|
|
|
testSetsSubFields: function() {
|
|
var callCount = 0;
|
|
|
|
var func = function() {
|
|
callCount ++;
|
|
};
|
|
|
|
this.field1.setReadOnly = func;
|
|
this.field2.setReadOnly = func;
|
|
|
|
this.composite.setReadOnly();
|
|
|
|
assert.areEqual(2, callCount);
|
|
},
|
|
|
|
testSetsReadOnly: function() {
|
|
var comp = this.composite;
|
|
|
|
assert.isFalse(comp.readOnly);
|
|
|
|
comp.setReadOnly();
|
|
|
|
assert.isTrue(comp.readOnly);
|
|
}
|
|
}));
|
|
|
|
// suite.add(new Y.Test.Case({
|
|
// name: 'resizing',
|
|
//
|
|
// setUp : createForm,
|
|
// tearDown: destroyForm,
|
|
//
|
|
// testResizing
|
|
//
|
|
// }));
|
|
})(); |