// ========================================================================== // Project: SproutCore - JavaScript Application Framework // Copyright: ©2006-2011 Strobe Inc. and contributors. // Portions ©2008-2011 Apple Inc. All rights reserved. // License: Licensed under MIT license (see license.js) // ==========================================================================

/*global module test htmlbody ok equals same stop start */

(function() {

var pane = SC.ControlTestPane.design()
.add("with valid value", SC.View.extend(SC.Validatable), {
  value: SC.Object.create({ data: 'here is some data' })
})

.add("with error value", SC.View.extend(SC.Validatable), {
  value: SC.Error.create({ errorValue: 'bad data', message: 'Input is bad' })
});

pane.verifyInvalid = function(view, isInvalid) {

var layer = view.$();
if (isInvalid) {
  ok(layer.hasClass('invalid'), 'layer should have invalid class');
}
else {
  ok(!layer.hasClass('invalid'), 'layer should not have invalid class');
}

};

// .….….….….….….….….….….….….….….. // TEST INITIAL STATES //

module('SC.Validatable ui', pane.standardSetup());

test(“with valid value”, function() {

var view = pane.view('with valid value');
pane.verifyInvalid(view, NO);

});

test(“with invalid value”, function() {

var view = pane.view('with error value');
pane.verifyInvalid(view, YES);

});

// .….….….….….….….….….….….….….….. // TEST CHANGING VIEWS //

test(“changing from invalid to valid”, function() {

var view = pane.view('with error value');

SC.RunLoop.begin();
view.set('value', 'not an SC.Error instance');
SC.RunLoop.end();

pane.verifyInvalid(view, NO);

});

test(“changing from valid to invalid”, function() {

var view = pane.view('with valid value');

SC.RunLoop.begin();
view.set('value', SC.Error.create());
SC.RunLoop.end();

pane.verifyInvalid(view, YES);

});

})();