summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Rodríguez <alejorro70@gmail.com>2016-08-26 17:20:00 -0300
committerAlejandro Rodríguez <alejorro70@gmail.com>2016-08-26 17:20:00 -0300
commit6686084c6502f10fd7e6b8963ab52526cb6831bf (patch)
tree7d15178ef2e6097671b869cf3749897089d514b5
parent0e3c7b2f2a5742216eda2d2cf6df9a5ea5f866ff (diff)
downloadgitlab-ce-21446-service-external-wiki-only-works-when-project-wiki-is-enabled.tar.gz
Fix "Wiki" link not appearing in navigation for projects with external wiki21446-service-external-wiki-only-works-when-project-wiki-is-enabled
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/ability.rb2
-rw-r--r--app/models/project.rb4
-rw-r--r--spec/models/ability_spec.rb13
-rw-r--r--spec/models/project_spec.rb12
5 files changed, 31 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 7817470d95e..b5ae1adf1d6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -37,6 +37,7 @@ v 8.11.3 (unreleased)
- Allow system info page to handle case where info is unavailable
- Label list shows all issues (opened or closed) with that label
- Don't show resolve conflicts link before MR status is updated
+ - Fix "Wiki" link not appearing in navigation for projects with external wiki
- Fix IE11 fork button bug !598
- Don't prevent viewing the MR when git refs for conflicts can't be found on disk
- Fix external issue tracker "Issues" link leading to 404s
diff --git a/app/models/ability.rb b/app/models/ability.rb
index a49dd703926..c1df4a865f6 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -355,7 +355,7 @@ class Ability
rules += named_abilities('project_snippet')
end
- unless project.wiki_enabled
+ unless project.has_wiki?
rules += named_abilities('wiki')
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 0e4fb94f8eb..0fa41ebbec3 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -680,6 +680,10 @@ class Project < ActiveRecord::Base
update_column(:has_external_issue_tracker, services.external_issue_trackers.any?)
end
+ def has_wiki?
+ wiki_enabled? || has_external_wiki?
+ end
+
def external_wiki
if has_external_wiki.nil?
cache_has_external_wiki # Populate
diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb
index aa3b2bbf471..c50ca38bdd9 100644
--- a/spec/models/ability_spec.rb
+++ b/spec/models/ability_spec.rb
@@ -282,4 +282,17 @@ describe Ability, lib: true do
end
end
end
+
+ describe '.project_disabled_features_rules' do
+ let(:project) { build(:project) }
+
+ subject { described_class.project_disabled_features_rules(project) }
+
+ context 'wiki named abilities' do
+ it 'disables wiki abilities if the project has no wiki' do
+ expect(project).to receive(:has_wiki?).and_return(false)
+ expect(subject).to include(:read_wiki, :create_wiki, :update_wiki, :admin_wiki)
+ end
+ end
+ end
end
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index b2baeeb31bb..3b637b0defc 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -506,6 +506,18 @@ describe Project, models: true do
end
end
+ describe '#has_wiki?' do
+ let(:no_wiki_project) { build(:project, wiki_enabled: false, has_external_wiki: false) }
+ let(:wiki_enabled_project) { build(:project, wiki_enabled: true) }
+ let(:external_wiki_project) { build(:project, has_external_wiki: true) }
+
+ it 'returns true if project is wiki enabled or has external wiki' do
+ expect(wiki_enabled_project).to have_wiki
+ expect(external_wiki_project).to have_wiki
+ expect(no_wiki_project).not_to have_wiki
+ end
+ end
+
describe '#external_wiki' do
let(:project) { create(:project) }