Skip to content

Commit

Permalink
Repository tab is not displayed if no repository is set as the main r…
Browse files Browse the repository at this point in the history
…epository (#33953).

Patch by Yuichi HARADA.


git-svn-id: https://svn.redmine.org/redmine/trunk@21741 e93f8b46-1217-0410-a6f0-8f06a7374b81
  • Loading branch information
vividtone committed Jul 27, 2022
1 parent df305e3 commit 8c1fda0
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 3 deletions.
2 changes: 1 addition & 1 deletion app/controllers/repositories_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ def find_project_repository
if params[:repository_id].present?
@repository = @project.repositories.find_by_identifier_param(params[:repository_id])
else
@repository = @project.repository
@repository = @project.repository || @project.repositories.first
end
(render_404; return false) unless @repository
@path = params[:path].is_a?(Array) ? params[:path].join('/') : params[:path].to_s
Expand Down
2 changes: 1 addition & 1 deletion lib/redmine/preparation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ def self.prepare
menu.push :repository,
{:controller => 'repositories', :action => 'show',
:repository_id => nil, :path => nil, :rev => nil},
:if => Proc.new {|p| p.repository && !p.repository.new_record?}
:if => Proc.new {|p| p.repositories.any? {|r| !r.new_record?}}
menu.push :settings, {:controller => 'projects', :action => 'settings'},
:last => true
end
Expand Down
20 changes: 20 additions & 0 deletions test/functional/repositories_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,26 @@ def test_show_with_closed_project_should_not_fetch_changesets
end
end

def test_show_without_main_repository_should_display_first_repository
project = Project.find(1)
repos = project.repositories
repos << Repository::Subversion.create(:identifier => 'test', :url => 'svn://valid')
assert_equal true, repos.exists?(:is_default => true)

repos.update_all(:is_default => false)
repos.reload
assert_equal false, repos.exists?(:is_default => true)

repository = repos.first
@request.session[:user_id] = 2

get(:show, :params => {:id => 1})
assert_response :success
assert_select '#sidebar' do
assert_select 'a.repository.selected[href=?]', "/projects/#{project.identifier}/repository/#{repository.identifier_param}"
end
end

def test_show_should_show_diff_button_depending_on_browse_repository_permission
skip unless repository_configured?('subversion')

Expand Down
31 changes: 30 additions & 1 deletion test/integration/lib/redmine/menu_manager_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ class MenuManagerTest < Redmine::IntegrationTest
:roles,
:member_roles,
:members,
:enabled_modules
:enabled_modules,
:repositories

def test_project_menu_with_specific_locale
get '/projects/ecookbook/issues',
Expand Down Expand Up @@ -80,6 +81,34 @@ def test_project_menu_with_additional_menu_items
end
end

def test_project_menu_should_display_repository_tab_when_exists_repository
project = Project.find('ecookbook')
repos = project.repositories
assert_equal true, repos.exists?

log_user('jsmith', 'jsmith')

assert_equal true, repos.exists?(:is_default => true)
get '/projects/ecookbook'
assert_select '#main-menu' do
assert_select 'a.repository', :count => 1
end

repos.update_all(:is_default => false)
assert_equal false, repos.exists?(:is_default => true)
get '/projects/ecookbook'
assert_select '#main-menu' do
assert_select 'a.repository', :count => 1
end

repos.delete_all
assert_equal false, repos.exists?
get '/projects/ecookbook'
assert_select '#main-menu' do
assert_select 'a.repository', :count => 0
end
end

def test_main_menu_should_select_projects_tab_on_project_list
get '/projects'
assert_select '#main-menu' do
Expand Down

0 comments on commit 8c1fda0

Please sign in to comment.