45 lines
1.4 KiB
Ruby
45 lines
1.4 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
RSpec.describe 'shared/nav/_sidebar.html.haml' do
|
||
|
let(:project) { build(:project, id: non_existing_record_id) }
|
||
|
let(:context) { Sidebars::Projects::Context.new(current_user: nil, container: project)}
|
||
|
let(:sidebar) { Sidebars::Projects::Panel.new(context) }
|
||
|
|
||
|
before do
|
||
|
assign(:project, project)
|
||
|
assign(:sidebar, sidebar)
|
||
|
|
||
|
allow(sidebar).to receive(:renderable_menus).and_return([])
|
||
|
end
|
||
|
|
||
|
context 'when sidebar has a scope menu' do
|
||
|
it 'renders the scope menu' do
|
||
|
render
|
||
|
|
||
|
expect(rendered).to render_template('shared/nav/_scope_menu')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when sidebar does not have a scope menu' do
|
||
|
let(:scope_menu_view_path) { 'shared/nav/' }
|
||
|
let(:scope_menu_view_name) { 'scope_menu.html.haml' }
|
||
|
let(:scope_menu_view) { "#{scope_menu_view_path}#{scope_menu_view_name}" }
|
||
|
let(:scope_menu_partial) { "#{scope_menu_view_path}_#{scope_menu_view_name}" }
|
||
|
let(:content) { 'Custom test content' }
|
||
|
|
||
|
context 'when sidebar has a custom scope menu partial defined' do
|
||
|
it 'renders the custom partial' do
|
||
|
allow(sidebar).to receive(:render_raw_scope_menu_partial).and_return(scope_menu_view)
|
||
|
allow(sidebar).to receive(:scope_menu).and_return(nil)
|
||
|
stub_template(scope_menu_partial => content)
|
||
|
|
||
|
render
|
||
|
|
||
|
expect(rendered).to have_text(content)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|