summaryrefslogtreecommitdiff
path: root/spec/helpers/events_helper_spec.rb
blob: b392371deb4c427d6deb16b472462f8a0b4786e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
require 'spec_helper'

describe EventsHelper do
  include ApplicationHelper
  include GitlabMarkdownHelper

  let(:current_user) { create(:user, email: "current@email.com") }

  it 'should display one line of plain text without alteration' do
    input = 'A short, plain note'
    expect(event_note(input)).to match(input)
    expect(event_note(input)).not_to match(/\.\.\.\z/)
  end

  it 'should display inline code' do
    input = 'A note with `inline code`'
    expected = 'A note with <code>inline code</code>'

    expect(event_note(input)).to match(expected)
  end

  it 'should truncate a note with multiple paragraphs' do
    input = "Paragraph 1\n\nParagraph 2"
    expected = 'Paragraph 1...'

    expect(event_note(input)).to match(expected)
  end

  it 'should display the first line of a code block' do
    input = "```\nCode block\nwith two lines\n```"
    expected = '<pre class="code highlight white plaintext"><code>' \
               'Code block...</code></pre>'

    expect(event_note(input)).to match(expected)
  end

  it 'should truncate a single long line of text' do
    text = 'The quick brown fox jumped over the lazy dog twice' # 50 chars
    input = "#{text}#{text}#{text}#{text}" # 200 chars
    expected = "#{text}#{text}".sub(/.{3}/, '...')

    expect(event_note(input)).to match(expected)
  end

  it 'should preserve a link href when link text is truncated' do
    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>'

    expect(event_note(input)).to match(link_url)
    expect(event_note(input)).to match(expected_link_text)
  end

  it 'should preserve code color scheme' do
    input = "```ruby\ndef test\n  'hello world'\nend\n```"
    expected = '<pre class="code highlight white 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" \
      '</code></pre>'
    expect(event_note(input)).to eq(expected)
  end
end