Strange behaviour with computed
by nickkell
HTML
<script src="http://code.jquery.com/qunit/qunit-1.12.0.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
JavaScript
function viewModel() {
var serviceErrors = ko.observable([]),
isCancelImmediately = ko.observable(true),
futureDate = ko.observable(),
errors = ko.computed(function() {
var allErrors = serviceErrors(),
isImmediate = isCancelImmediately(),
selectedDate = futureDate();
if(!isImmediate && !selectedDate) {
allErrors.push('Please select a date if not immediate.');
}
return allErrors;
});
return {
futureDate: futureDate,
errors: errors,
isCancelImmediately: isCancelImmediately
};
}
test('should give error if user has not selected a date when closing immediately', function() {
var sut = viewModel();
ok(!sut.futureDate(), 'no date should be set to start with');
sut.isCancelImmediately(false);
equal(sut.errors().length, 1, 'should contain a future date error if user hasn\'t entered a date');
sut.futureDate('11/12/2014');
equal(sut.futureDate(), '11/12/2014', 'should have set future date');
equal(sut.errors().length, 0, 'should not be showing error');
});