// ========================================================================== // Project: SproutCore - JavaScript Application Framework // Copyright: ©2006-2011 Apple Inc. and contributors. // License: Licensed under MIT license (see license.js) // ========================================================================== /*global module test equals context ok same */ (function() { var fakeDelegate, fakeEditor, view; fakeDelegate = { acquireEditorCalled: NO, acquireEditorAllowed: YES, acquireEditor: function() { this.acquireEditorCalled = YES; return this.acquireEditorAllowed ? fakeEditor : null; }, shouldBeginCalled: NO, shouldBeginAllowed: YES, inlineEditorShouldBeginEditing: function() { this.shouldBeginCalled = YES; return this.shouldBeginAllowed; }, willBeginCalled: NO, inlineEditorWillBeginEditing: function() { this.willBeginCalled = YES; }, didBeginCalled: NO, inlineEditorDidBeginEditing: function() { ok(this.willBeginCalled, "willBegin was called before didBegin"); this.didBeginCalled = YES; }, inlineEditorShouldDiscardEditing: function() { return YES; } }; fakeEditor = SC.View.create(SC.InlineEditor, { inlineEditorDelegate: fakeDelegate, beginEditingCalled: NO, beginEditingAllowed: YES, beginEditing: function(original, editable) { this.beginEditingCalled = YES; var ret = original(editable); return this.beginEditingAllowed ? ret : NO; }.enhance() }); view = SC.View.create(SC.InlineEditable, { inlineEditorDelegate: fakeDelegate }); function reset() { if(fakeEditor.isEditing) fakeEditor.discardEditing(); fakeDelegate.shouldBeginCalled = NO; fakeDelegate.acquireEditorCalled = NO; fakeEditor.beginEditingCalled = NO; fakeDelegate.willBeginCalled = NO; fakeDelegate.didBeginCalled = NO; }; module("SC.InlineEditor.beginEditing"); test("beginEditing succeeds when passed a target", function() { reset(); ok(fakeEditor.beginEditing(view), "beginEditing succeeded"); }); test("beginEditing fails when not passed a target", function() { reset(); ok(!fakeEditor.beginEditing(), "beginEditing failed"); }); test("beginEditing calls willBegin and didBegin in order", function() { reset(); SC.run(function() { ok(fakeEditor.beginEditing(view), "beginEditing succeeded"); }, undefined, YES); ok(fakeDelegate.willBeginCalled, "willBegin was called"); ok(fakeDelegate.didBeginCalled, "didBegin was called"); }); test("beginEditing does not call delegate methods on failure", function() { reset(); SC.run(function() { ok(!fakeEditor.beginEditing(), "beginEditing failed"); }, undefined, YES); ok(!fakeDelegate.willBeginCalled, "willBegin was not called"); ok(!fakeDelegate.didBeginCalled, "didBegin was not called"); }); })();