gitlab-org--gitlab-foss/spec/helpers/events_helper_spec.rb

90 lines
2.9 KiB
Ruby
Raw Normal View History

require 'spec_helper'
describe EventsHelper do
2016-05-11 16:17:16 -04:00
describe '#event_note' do
before do
allow(helper).to receive(:current_user).and_return(double)
end
it 'displays one line of plain text without alteration' do
2016-05-11 16:17:16 -04:00
input = 'A short, plain note'
expect(helper.event_note(input)).to match(input)
expect(helper.event_note(input)).not_to match(/\.\.\.\z/)
end
it 'displays inline code' do
2016-05-11 16:17:16 -04:00
input = 'A note with `inline code`'
expected = 'A note with <code>inline code</code>'
2016-05-11 16:17:16 -04:00
expect(helper.event_note(input)).to match(expected)
end
it 'truncates a note with multiple paragraphs' do
2016-05-11 16:17:16 -04:00
input = "Paragraph 1\n\nParagraph 2"
expected = 'Paragraph 1...'
2016-05-11 16:17:16 -04:00
expect(helper.event_note(input)).to match(expected)
end
it 'displays the first line of a code block' do
2016-05-11 16:17:16 -04:00
input = "```\nCode block\nwith two lines\n```"
expected = %r{<pre.+><code>Code block\.\.\.</code></pre>}
2016-05-11 16:17:16 -04:00
expect(helper.event_note(input)).to match(expected)
end
it 'truncates a single long line of text' do
2016-05-11 16:17:16 -04:00
text = 'The quick brown fox jumped over the lazy dog twice' # 50 chars
input = text * 4
expected = (text * 2).sub(/.{3}/, '...')
2016-05-11 16:17:16 -04:00
expect(helper.event_note(input)).to match(expected)
end
it 'preserves a link href when link text is truncated' do
2016-05-11 16:17:16 -04:00
text = 'The quick brown fox jumped over the lazy dog' # 44 chars
input = "#{text}#{text}#{text} " # 133 chars
link_url = 'http://example.com/foo/bar/baz' # 30 chars
input << link_url
expected_link_text = 'http://example...</a>'
2016-05-11 16:17:16 -04:00
expect(helper.event_note(input)).to match(link_url)
expect(helper.event_note(input)).to match(expected_link_text)
end
it 'preserves code color scheme' do
2016-05-11 16:17:16 -04:00
input = "```ruby\ndef test\n 'hello world'\nend\n```"
expected = '<pre class="code highlight js-syntax-highlight ruby">' \
"<code><span class=\"k\">def</span> <span class=\"nf\">test</span>\n" \
" <span class=\"s1\">\'hello world\'</span>\n" \
"<span class=\"k\">end</span>\n" \
2016-05-11 16:17:16 -04:00
'</code></pre>'
expect(helper.event_note(input)).to eq(expected)
end
it 'preserves style attribute within a tag' do
input = '<span class="" style="background-color: #44ad8e; color: #FFFFFF;"></span>'
expected = '<p><span style="background-color: #44ad8e; color: #FFFFFF;"></span></p>'
expect(helper.event_note(input)).to eq(expected)
end
end
describe '#event_commit_title' do
let(:message) { "foo & bar " + "A" * 70 + "\n" + "B" * 80 }
subject { helper.event_commit_title(message) }
it "returns the first line, truncated to 70 chars" do
is_expected.to eq(message[0..66] + "...")
end
it "is not html-safe" do
is_expected.not_to be_a(ActiveSupport::SafeBuffer)
end
it "handles empty strings" do
expect(helper.event_commit_title("")).to eq("")
end
end
end