Commit a751df57 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '20067-wiki-not-visible-from-web' into 'master'

Make Service.external_wikis return only active external wikis

Fixes #20067.

## Does this MR meet the acceptance criteria?

- [x] No CHANGELOG since it fixes a RC12 regression
- Tests
  - [x] Added for this feature/bug
  - [ ] All builds are passing
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

See merge request !5387
parent 1f93deae
...@@ -26,7 +26,7 @@ class Service < ActiveRecord::Base ...@@ -26,7 +26,7 @@ class Service < ActiveRecord::Base
scope :visible, -> { where.not(type: ['GitlabIssueTrackerService', 'GitlabCiService']) } scope :visible, -> { where.not(type: ['GitlabIssueTrackerService', 'GitlabCiService']) }
scope :issue_trackers, -> { where(category: 'issue_tracker') } scope :issue_trackers, -> { where(category: 'issue_tracker') }
scope :external_wikis, -> { where(type: 'ExternalWikiService') } scope :external_wikis, -> { where(type: 'ExternalWikiService').active }
scope :active, -> { where(active: true) } scope :active, -> { where(active: true) }
scope :without_defaults, -> { where(default: false) } scope :without_defaults, -> { where(default: false) }
......
class NullifyHasExternalWikiInProjects < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
# Set this constant to true if this migration requires downtime.
DOWNTIME = false
def up
execute("UPDATE projects SET has_external_wiki = NULL")
end
def down
end
end
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20160718153603) do ActiveRecord::Schema.define(version: 20160721081015) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
......
...@@ -458,44 +458,54 @@ describe Project, models: true do ...@@ -458,44 +458,54 @@ describe Project, models: true do
end end
end end
describe "#cache_has_external_wiki" do describe '#external_wiki' do
let(:project) { create(:project) } let(:project) { create(:project) }
it "stores true if there is an external wiki" do context 'with an active external wiki' do
services = double(:service, external_wikis: [ExternalWikiService.new]) before do
expect(project).to receive(:services).and_return(services) create(:service, project: project, type: 'ExternalWikiService', active: true)
project.external_wiki
end
expect do it 'sets :has_external_wiki as true' do
project.cache_has_external_wiki expect(project.has_external_wiki).to be(true)
end.to change { project.has_external_wiki }.to(true)
end end
it "stores false if there is no external wiki" do it 'sets :has_external_wiki as false if an external wiki service is destroyed later' do
services = double(:service, external_wikis: []) expect(project.has_external_wiki).to be(true)
expect(project).to receive(:services).and_return(services)
expect do project.services.external_wikis.first.destroy
project.cache_has_external_wiki
end.to change { project.has_external_wiki }.to(false) expect(project.has_external_wiki).to be(false)
end
end end
it "changes to true if an external wiki service is created later" do context 'with an inactive external wiki' do
expect do before do
project.cache_has_external_wiki create(:service, project: project, type: 'ExternalWikiService', active: false)
end.to change { project.has_external_wiki }.to(false) end
expect do it 'sets :has_external_wiki as false' do
create(:service, type: "ExternalWikiService", project: project) expect(project.has_external_wiki).to be(false)
end.to change { project.has_external_wiki }.to(true) end
end end
it "changes to false if an external wiki service is destroyed later" do context 'with no external wiki' do
service = create(:service, type: "ExternalWikiService", project: project) before do
expect(project.has_external_wiki).to be_truthy project.external_wiki
end
expect do it 'sets :has_external_wiki as false' do
service.destroy expect(project.has_external_wiki).to be(false)
end.to change { project.has_external_wiki }.to(false) end
it 'sets :has_external_wiki as true if an external wiki service is created later' do
expect(project.has_external_wiki).to be(false)
create(:service, project: project, type: 'ExternalWikiService', active: true)
expect(project.has_external_wiki).to be(true)
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment