diff options
author | TM Lee <tm89lee@gmail.com> | 2017-03-15 13:44:05 +0800 |
---|---|---|
committer | TM Lee <tm89lee@gmail.com> | 2017-03-16 09:08:00 +0800 |
commit | 333e39d4923b285dce21c65f2923f132c36f5bf7 (patch) | |
tree | 7ec5ba7d5f3c5419560bc89b347cfc8b420a2c6c | |
parent | 8fddde5b9f97feaa0c62f8c4a3e5441d20989165 (diff) | |
download | gitlab-ce-333e39d4923b285dce21c65f2923f132c36f5bf7.tar.gz |
[#28991] Wiki page edit button only appears on the current commit page
- Added method to check if the current Page version is the current latest version
- Conditionally checks for current version when showing Edit button
- Added feature specs for viewing project wiki page and expect edit button
- Added Changelog
4 files changed, 55 insertions, 1 deletions
diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index 2caebb496db..465c4d903ac 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -149,6 +149,12 @@ class WikiPage end # Returns boolean True or False if this instance + # is the latest commit version of the page. + def latest? + !historical? + end + + # Returns boolean True or False if this instance # has been fully saved to disk or not. def persisted? @persisted == true diff --git a/app/views/projects/wikis/_main_links.html.haml b/app/views/projects/wikis/_main_links.html.haml index 763c2fea39b..5211ade1a5f 100644 --- a/app/views/projects/wikis/_main_links.html.haml +++ b/app/views/projects/wikis/_main_links.html.haml @@ -4,6 +4,6 @@ New Page = link_to namespace_project_wiki_history_path(@project.namespace, @project, @page), class: "btn" do Page History - - if can?(current_user, :create_wiki, @project) + - if can?(current_user, :create_wiki, @project) && @page.latest? = link_to namespace_project_wiki_edit_path(@project.namespace, @project, @page), class: "btn" do Edit diff --git a/changelogs/unreleased/28991-viewing-old-wiki-page-version-edit-button-exists.yml b/changelogs/unreleased/28991-viewing-old-wiki-page-version-edit-button-exists.yml new file mode 100644 index 00000000000..26989c14958 --- /dev/null +++ b/changelogs/unreleased/28991-viewing-old-wiki-page-version-edit-button-exists.yml @@ -0,0 +1,4 @@ +--- +title: When viewing old wiki page version, edit button should be disabled +merge_request: 9966 +author: TM Lee diff --git a/spec/features/projects/wiki/user_views_project_wiki_page_spec.rb b/spec/features/projects/wiki/user_views_project_wiki_page_spec.rb new file mode 100644 index 00000000000..c17e06612de --- /dev/null +++ b/spec/features/projects/wiki/user_views_project_wiki_page_spec.rb @@ -0,0 +1,44 @@ +require 'spec_helper' + +feature 'Projects > Wiki > User views the wiki page', feature: true do + let(:user) { create(:user) } + let(:project) { create(:project, :public) } + let(:old_page_version_id) { wiki_page.versions.last.id } + let(:wiki_page) do + WikiPages::CreateService.new( + project, + user, + title: 'home', + content: '[some link](other-page)' + ).execute + end + + background do + project.team << [user, :master] + login_as(user) + WikiPages::UpdateService.new( + project, + user, + message: 'updated home', + content: 'updated [some link](other-page)', + format: :markdown + ).execute(wiki_page) + end + + scenario 'Visit Wiki Page Current Commit' do + visit namespace_project_wiki_path(project.namespace, project, wiki_page) + + expect(page).to have_selector('a.btn', text: 'Edit') + end + + scenario 'Visit Wiki Page Historical Commit' do + visit namespace_project_wiki_path( + project.namespace, + project, + wiki_page, + version_id: old_page_version_id + ) + + expect(page).not_to have_selector('a.btn', text: 'Edit') + end +end |