Fix for issue #4632
This commit is contained in:
parent
b559310216
commit
b11d6e20b0
2
src/js/select2/data/select.js
vendored
2
src/js/select2/data/select.js
vendored
@ -244,7 +244,7 @@ define([
|
|||||||
};
|
};
|
||||||
|
|
||||||
SelectAdapter.prototype._normalizeItem = function (item) {
|
SelectAdapter.prototype._normalizeItem = function (item) {
|
||||||
if (!$.isPlainObject(item)) {
|
if(item !== Object(item)){
|
||||||
item = {
|
item = {
|
||||||
id: item,
|
id: item,
|
||||||
text: item
|
text: item
|
||||||
|
@ -4,6 +4,15 @@ var ArrayData = require('select2/data/array');
|
|||||||
var $ = require('jquery');
|
var $ = require('jquery');
|
||||||
var Options = require('select2/options');
|
var Options = require('select2/options');
|
||||||
|
|
||||||
|
var UserDefinedType = function( id, text ){
|
||||||
|
var self=this;
|
||||||
|
|
||||||
|
self.id=id;
|
||||||
|
self.text=text;
|
||||||
|
|
||||||
|
return self;
|
||||||
|
};
|
||||||
|
|
||||||
var arrayOptions = new Options({
|
var arrayOptions = new Options({
|
||||||
data: [
|
data: [
|
||||||
{
|
{
|
||||||
@ -17,7 +26,8 @@ var arrayOptions = new Options({
|
|||||||
{
|
{
|
||||||
id: '2',
|
id: '2',
|
||||||
text: '2'
|
text: '2'
|
||||||
}
|
},
|
||||||
|
new UserDefinedType(1, 'aaaaaa')
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -216,7 +226,7 @@ test('option tags are automatically generated', function (assert) {
|
|||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
$select.find('option').length,
|
$select.find('option').length,
|
||||||
3,
|
4,
|
||||||
'An <option> element should be created for each object'
|
'An <option> element should be created for each object'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -487,3 +487,68 @@ test('select option construction accepts id="" (empty string) value',
|
|||||||
'Built option value should be an empty string.'
|
'Built option value should be an empty string.'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('user-defined types are normalized properly', function (assert) {
|
||||||
|
var $select = $('#qunit-fixture .user-defined'),
|
||||||
|
|
||||||
|
UserDefinedType = function( id, text ){
|
||||||
|
var self=this;
|
||||||
|
|
||||||
|
self.id=id;
|
||||||
|
self.text=text;
|
||||||
|
|
||||||
|
return self;
|
||||||
|
};
|
||||||
|
|
||||||
|
var testData = [
|
||||||
|
'Test',
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
text: 'item'
|
||||||
|
},
|
||||||
|
new UserDefinedType(1, 'aaaaaa')
|
||||||
|
];
|
||||||
|
|
||||||
|
var data = new SelectData($select, selectOptions);
|
||||||
|
|
||||||
|
var normalizedItem = data._normalizeItem(testData[0]);
|
||||||
|
var normalizedItem2 = data._normalizeItem(testData[1]);
|
||||||
|
var normalizedItem3 = data._normalizeItem(testData[2]);
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
testData[0],
|
||||||
|
normalizedItem.id,
|
||||||
|
'id property should be equal to text after normalize'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
testData[0],
|
||||||
|
normalizedItem.text,
|
||||||
|
'text property should be equal after normalize'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
testData[1].id,
|
||||||
|
normalizedItem2.id,
|
||||||
|
'id property should be equal after normalize'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
testData[1].text,
|
||||||
|
normalizedItem2.text,
|
||||||
|
'text property should be equal after normalize'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
testData[2].id,
|
||||||
|
normalizedItem3.id,
|
||||||
|
'id property should be equal after normalize'
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.equal(
|
||||||
|
testData[2].text,
|
||||||
|
normalizedItem3.text,
|
||||||
|
'text property should be equal after normalize'
|
||||||
|
);
|
||||||
|
|
||||||
|
});
|
||||||
|
@ -46,6 +46,8 @@
|
|||||||
<option value="two">Two</option>
|
<option value="two">Two</option>
|
||||||
<option value="one">Uno</option>
|
<option value="one">Uno</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select class="user-defined"></select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="vendor/qunit-1.23.1.js" type="text/javascript"></script>
|
<script src="vendor/qunit-1.23.1.js" type="text/javascript"></script>
|
||||||
|
Loading…
Reference in New Issue
Block a user