1
0
mirror of synced 2024-11-21 20:46:07 +03:00

Fix for issue #4632

This commit is contained in:
Julian Yuste 2017-10-25 18:25:50 +02:00
parent b559310216
commit b11d6e20b0
4 changed files with 80 additions and 3 deletions

View File

@ -244,7 +244,7 @@ define([
};
SelectAdapter.prototype._normalizeItem = function (item) {
if (!$.isPlainObject(item)) {
if(item !== Object(item)){
item = {
id: item,
text: item

View File

@ -4,6 +4,15 @@ var ArrayData = require('select2/data/array');
var $ = require('jquery');
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({
data: [
{
@ -17,7 +26,8 @@ var arrayOptions = new Options({
{
id: '2',
text: '2'
}
},
new UserDefinedType(1, 'aaaaaa')
]
});
@ -216,7 +226,7 @@ test('option tags are automatically generated', function (assert) {
assert.equal(
$select.find('option').length,
3,
4,
'An <option> element should be created for each object'
);
});

View File

@ -487,3 +487,68 @@ test('select option construction accepts id="" (empty string) value',
'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'
);
});

View File

@ -46,6 +46,8 @@
<option value="two">Two</option>
<option value="one">Uno</option>
</select>
<select class="user-defined"></select>
</div>
<script src="vendor/qunit-1.23.1.js" type="text/javascript"></script>