BigW Consortium Gitlab

tab_helper_spec.rb 1.61 KB
Newer Older
1 2 3 4 5 6 7
require 'spec_helper'

describe TabHelper do
  include ApplicationHelper

  describe 'nav_link' do
    before do
8
      allow(controller).to receive(:controller_name).and_return('foo')
skv committed
9
      allow(self).to receive(:action_name).and_return('foo')
10 11 12
    end

    it "captures block output" do
13
      expect(nav_link { "Testing Blocks" }).to match(/Testing Blocks/)
14 15 16
    end

    it "performs checks on the current controller" do
17 18 19
      expect(nav_link(controller: :foo)).to match(/<li class="active">/)
      expect(nav_link(controller: :bar)).not_to match(/active/)
      expect(nav_link(controller: [:foo, :bar])).to match(/active/)
20 21 22
    end

    it "performs checks on the current action" do
23 24 25
      expect(nav_link(action: :foo)).to match(/<li class="active">/)
      expect(nav_link(action: :bar)).not_to match(/active/)
      expect(nav_link(action: [:foo, :bar])).to match(/active/)
26 27 28
    end

    it "performs checks on both controller and action when both are present" do
29 30 31
      expect(nav_link(controller: :bar, action: :foo)).not_to match(/active/)
      expect(nav_link(controller: :foo, action: :bar)).not_to match(/active/)
      expect(nav_link(controller: :foo, action: :foo)).to match(/active/)
32 33 34
    end

    it "accepts a path shorthand" do
35 36
      expect(nav_link(path: 'foo#bar')).not_to match(/active/)
      expect(nav_link(path: 'foo#foo')).to match(/active/)
37 38 39
    end

    it "passes extra html options to the list element" do
40 41
      expect(nav_link(action: :foo, html_options: { class: 'home' })).to match(/<li class="home active">/)
      expect(nav_link(html_options: { class: 'active' })).to match(/<li class="active">/)
42 43 44
    end
  end
end