1
0
mirror of synced 2024-11-25 14:26:03 +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) { SelectAdapter.prototype._normalizeItem = function (item) {
if (!$.isPlainObject(item)) { if(item !== Object(item)){
item = { item = {
id: item, id: item,
text: item text: item

View File

@ -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'
); );
}); });

View File

@ -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'
);
});

View File

@ -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>