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) {
|
||||
if (!$.isPlainObject(item)) {
|
||||
if(item !== Object(item)){
|
||||
item = {
|
||||
id: item,
|
||||
text: item
|
||||
|
@ -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'
|
||||
);
|
||||
});
|
||||
|
@ -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'
|
||||
);
|
||||
|
||||
});
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user