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