Add readme button to non-empty project page
This commit is contained in:
parent
7054ead450
commit
825b9435ed
|
@ -27,6 +27,7 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
|
|||
|
||||
def statistics_buttons(show_auto_devops_callout:)
|
||||
[
|
||||
readme_anchor_data,
|
||||
changelog_anchor_data,
|
||||
license_anchor_data,
|
||||
contribution_guide_anchor_data,
|
||||
|
@ -212,11 +213,11 @@ class ProjectPresenter < Gitlab::View::Presenter::Delegated
|
|||
end
|
||||
|
||||
def readme_anchor_data
|
||||
if current_user && can_current_user_push_to_default_branch? && repository.readme.blank?
|
||||
if current_user && can_current_user_push_to_default_branch? && repository.readme.nil?
|
||||
OpenStruct.new(enabled: false,
|
||||
label: _('Add Readme'),
|
||||
link: add_readme_path)
|
||||
elsif repository.readme.present?
|
||||
elsif repository.readme
|
||||
OpenStruct.new(enabled: true,
|
||||
label: _('Readme'),
|
||||
link: default_view != 'readme' ? readme_path : '#readme')
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add readme button to non-empty project page
|
||||
merge_request: 20104
|
||||
author:
|
||||
type: fixed
|
|
@ -5,6 +5,8 @@ describe 'Projects > Show > User sees setup shortcut buttons' do
|
|||
# see spec/features/projects/files/project_owner_creates_license_file_spec.rb
|
||||
# see spec/features/projects/files/project_owner_sees_link_to_create_license_file_in_empty_project_spec.rb
|
||||
|
||||
include FakeBlobHelpers
|
||||
|
||||
let(:user) { create(:user) }
|
||||
|
||||
describe 'empty project' do
|
||||
|
@ -141,11 +143,57 @@ describe 'Projects > Show > User sees setup shortcut buttons' do
|
|||
allow_any_instance_of(AutoDevopsHelper).to receive(:show_auto_devops_callout?).and_return(false)
|
||||
project.add_master(user)
|
||||
sign_in(user)
|
||||
end
|
||||
|
||||
visit project_path(project)
|
||||
context 'Readme button' do
|
||||
before do
|
||||
allow(Project).to receive(:find_by_full_path)
|
||||
.with(project.full_path, follow_redirects: true)
|
||||
.and_return(project)
|
||||
end
|
||||
|
||||
context 'when the project has a populated Readme' do
|
||||
it 'show the "Readme" anchor' do
|
||||
visit project_path(project)
|
||||
|
||||
expect(project.repository.readme).not_to be_nil
|
||||
|
||||
page.within('.project-stats') do
|
||||
expect(page).not_to have_link('Add Readme', href: presenter.add_readme_path)
|
||||
expect(page).to have_link('Readme', href: presenter.readme_path)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the project has an empty Readme' do
|
||||
it 'show the "Readme" anchor' do
|
||||
allow(project.repository).to receive(:readme).and_return(fake_blob(path: 'README.md', data: '', size: 0))
|
||||
|
||||
visit project_path(project)
|
||||
|
||||
page.within('.project-stats') do
|
||||
expect(page).not_to have_link('Add Readme', href: presenter.add_readme_path)
|
||||
expect(page).to have_link('Readme', href: presenter.readme_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the project does not have a Readme' do
|
||||
it 'shows the "Add Readme" button' do
|
||||
allow(project.repository).to receive(:readme).and_return(nil)
|
||||
|
||||
visit project_path(project)
|
||||
|
||||
page.within('.project-stats') do
|
||||
expect(page).to have_link('Add Readme', href: presenter.add_readme_path)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it 'no "Add Changelog" button if the project already has a changelog' do
|
||||
visit project_path(project)
|
||||
|
||||
expect(project.repository.changelog).not_to be_nil
|
||||
|
||||
page.within('.project-stats') do
|
||||
|
@ -154,6 +202,8 @@ describe 'Projects > Show > User sees setup shortcut buttons' do
|
|||
end
|
||||
|
||||
it 'no "Add License" button if the project already has a license' do
|
||||
visit project_path(project)
|
||||
|
||||
expect(project.repository.license_blob).not_to be_nil
|
||||
|
||||
page.within('.project-stats') do
|
||||
|
@ -162,6 +212,8 @@ describe 'Projects > Show > User sees setup shortcut buttons' do
|
|||
end
|
||||
|
||||
it 'no "Add Contribution guide" button if the project already has a contribution guide' do
|
||||
visit project_path(project)
|
||||
|
||||
expect(project.repository.contribution_guide).not_to be_nil
|
||||
|
||||
page.within('.project-stats') do
|
||||
|
@ -171,6 +223,8 @@ describe 'Projects > Show > User sees setup shortcut buttons' do
|
|||
|
||||
describe 'GitLab CI configuration button' do
|
||||
it '"Set up CI/CD" button linked to new file populated for a .gitlab-ci.yml' do
|
||||
visit project_path(project)
|
||||
|
||||
expect(project.repository.gitlab_ci_yml).to be_nil
|
||||
|
||||
page.within('.project-stats') do
|
||||
|
@ -211,6 +265,8 @@ describe 'Projects > Show > User sees setup shortcut buttons' do
|
|||
|
||||
describe 'Auto DevOps button' do
|
||||
it '"Enable Auto DevOps" button linked to settings page' do
|
||||
visit project_path(project)
|
||||
|
||||
page.within('.project-stats') do
|
||||
expect(page).to have_link('Enable Auto DevOps', href: project_settings_ci_cd_path(project, anchor: 'autodevops-settings'))
|
||||
end
|
||||
|
@ -263,6 +319,8 @@ describe 'Projects > Show > User sees setup shortcut buttons' do
|
|||
|
||||
describe 'Kubernetes cluster button' do
|
||||
it '"Add Kubernetes cluster" button linked to clusters page' do
|
||||
visit project_path(project)
|
||||
|
||||
page.within('.project-stats') do
|
||||
expect(page).to have_link('Add Kubernetes cluster', href: new_project_cluster_path(project))
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue