Skip to content

Commit

Permalink
add a spec for new optionsValue functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
mbest committed Jun 13, 2012
1 parent 7c70dd0 commit de95292
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion spec/defaultBindingsBehaviors.js
Expand Up @@ -476,12 +476,25 @@ describe('Binding: Options', {
{ name: 'bob', job: 'manager' },
{ name: 'frank', job: 'coder & tester' }
]);
testNode.innerHTML = "<select data-bind='options:myValues, optionsText: function (v) { return v[\"name\"] + \" (\" + v[\"job\"] + \")\"; }, optionsValue: \"id\"'><option>should be deleted</option></select>";
testNode.innerHTML = "<select data-bind='options:myValues, optionsText: function (v) { return v[\"name\"] + \" (\" + v[\"job\"] + \")\"; }'><option>should be deleted</option></select>";
ko.applyBindings({ myValues: modelValues }, testNode);
var displayedText = ko.utils.arrayMap(testNode.childNodes[0].childNodes, function (node) { return node.innerText || node.textContent; });
value_of(displayedText).should_be(["bob (manager)", "frank (coder & tester)"]);
},

'Should accept a function in optionsValue param to select subproperties of the model values (and use that for the option text)': function() {
var modelValues = new ko.observableArray([
{ name: 'bob', job: 'manager' },
{ name: 'frank', job: 'coder & tester' }
]);
testNode.innerHTML = "<select data-bind='options: myValues, optionsValue: function (v) { return v.name + \" (\" + v.job + \")\"; }'><option>should be deleted</option></select>";
ko.applyBindings({ myValues: modelValues }, testNode);
var values = ko.utils.arrayMap(testNode.childNodes[0].childNodes, function (node) { return node.value; });
value_of(values).should_be(["bob (manager)", "frank (coder & tester)"]);
var displayedText = ko.utils.arrayMap(testNode.childNodes[0].childNodes, function (node) { return node.innerText || node.textContent; });
value_of(displayedText).should_be(["bob (manager)", "frank (coder & tester)"]);
},

'Should update the SELECT node\'s options if the model changes': function () {
var observable = new ko.observableArray(["A", "B", "C"]);
testNode.innerHTML = "<select data-bind='options:myValues'><option>should be deleted</option></select>";
Expand Down

0 comments on commit de95292

Please sign in to comment.