From 364205ca564296aa59ca2045f60666f67581e39e Mon Sep 17 00:00:00 2001 From: Katrina Uychaco Date: Sat, 9 Jan 2016 18:10:28 -0800 Subject: [PATCH] :white_check_mark: Ensure terminate handler is invoked only once --- spec/text-editor-spec.coffee | 19 +++++++++++++++++++ src/text-editor.coffee | 1 + 2 files changed, 20 insertions(+) diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index 8976c1b51..8d538f4eb 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -5835,3 +5835,22 @@ describe "TextEditor", -> expect(editor1.isPending()).toBe false expect(events).toEqual [editor1] + + it "only calls terminate handler once when text is modified twice", -> + editor1.insertText('Some text') + advanceClock(500) + + editor1.save() + + editor1.insertText('More text') + advanceClock(500) + + expect(editor1.isPending()).toBe false + expect(events).toEqual [editor1] + + it "only calls terminate handler once when terminatePendingState is called twice", -> + editor1.terminatePendingState() + editor1.terminatePendingState() + + expect(editor1.isPending()).toBe false + expect(events).toEqual [editor1] diff --git a/src/text-editor.coffee b/src/text-editor.coffee index 7410f8209..047ade98e 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -576,6 +576,7 @@ class TextEditor extends Model @emitter.on 'did-terminate-pending-state', callback terminatePendingState: -> + return if not @pending @pending = false @emitter.emit 'did-terminate-pending-state', this