From 8e6fa2555ec37f010ac93b43816d8bcdb3ee835c Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sat, 18 Apr 2015 15:16:05 -0400 Subject: Add JS specs for replyWithSelectedText --- .../javascripts/shortcuts_issueable_spec.js.coffee | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 spec/javascripts/shortcuts_issueable_spec.js.coffee (limited to 'spec/javascripts') diff --git a/spec/javascripts/shortcuts_issueable_spec.js.coffee b/spec/javascripts/shortcuts_issueable_spec.js.coffee new file mode 100644 index 00000000000..5f206ddfda6 --- /dev/null +++ b/spec/javascripts/shortcuts_issueable_spec.js.coffee @@ -0,0 +1,83 @@ +#= require jquery +#= require jasmine-fixture + +#= require shortcuts_issueable + +describe 'ShortcutsIssueable', -> + beforeEach -> + @shortcut = new ShortcutsIssueable() + + describe '#replyWithSelectedText', -> + # Stub window.getSelection to return the provided String. + stubSelection = (text) -> + window.getSelection = -> text + + beforeEach -> + @selector = 'form.js-main-target-form textarea#note_note' + affix(@selector) + + describe 'with empty selection', -> + it 'does nothing', -> + stubSelection('') + @shortcut.replyWithSelectedText() + expect($(@selector).val()).toBe('') + + describe 'with any selection', -> + beforeEach -> + stubSelection('Selected text.') + + it 'leaves existing input intact', -> + $(@selector).val('This text was already here.') + expect($(@selector).val()).toBe('This text was already here.') + + @shortcut.replyWithSelectedText() + expect($(@selector).val()). + toBe("This text was already here.\n> Selected text.\n\n") + + it 'triggers `input`', -> + triggered = false + $(@selector).on 'input', -> triggered = true + @shortcut.replyWithSelectedText() + + expect(triggered).toBe(true) + + it 'triggers `focus`', -> + focused = false + $(@selector).on 'focus', -> focused = true + @shortcut.replyWithSelectedText() + + expect(focused).toBe(true) + + describe 'with a one-line selection', -> + it 'quotes the selection', -> + stubSelection('This text has been selected.') + + @shortcut.replyWithSelectedText() + + expect($(@selector).val()). + toBe("> This text has been selected.\n\n") + + describe 'with a multi-line selection', -> + it 'quotes the selected lines as a group', -> + stubSelection( + """ + Selected line one. + + Selected line two. + Selected line three. + + """ + ) + + @shortcut.replyWithSelectedText() + + expect($(@selector).val()). + toBe( + """ + > Selected line one. + > Selected line two. + > Selected line three. + + + """ + ) -- cgit v1.2.1