require 'spec_helper' describe DashboardHelper do let(:user) { build(:user) } before do allow(helper).to receive(:current_user).and_return(user) allow(helper).to receive(:can?) { true } end describe '#dashboard_nav_links' do it 'has all the expected links by default' do menu_items = [:projects, :groups, :activity, :milestones, :snippets] expect(helper.dashboard_nav_links).to include(*menu_items) end it 'does not contain cross project elements when the user cannot read cross project' do expect(helper).to receive(:can?).with(user, :read_cross_project) { false } expect(helper.dashboard_nav_links).not_to include(:activity, :milestones) end end describe '#feature_entry' do context 'when implicitly enabled' do it 'considers feature enabled by default' do entry = feature_entry('Demo', href: 'demo.link') expect(entry).to include('

') expect(entry).to include('Demo') end end context 'when explicitly enabled' do it 'returns a link' do entry = feature_entry('Demo', href: 'demo.link', enabled: true) expect(entry).to include('

') expect(entry).to include('Demo') end it 'returns text if href is not provided' do entry = feature_entry('Demo', enabled: true) expect(entry).to include('

') expect(entry).not_to match(/]+>/) end end context 'when disabled' do it 'returns text without link' do entry = feature_entry('Demo', href: 'demo.link', enabled: false) expect(entry).to include('

') expect(entry).not_to match(/]+>/) expect(entry).to include('Demo') end end end describe '.has_start_trial?' do subject { helper.has_start_trial? } it { is_expected.to eq(false) } end end