From ef6b3e0271d226462bed5f899f3964cf5652978c Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Mon, 26 Mar 2018 17:16:01 +0800 Subject: [PATCH] Introduce #find_sidebar and use a constant to find the page --- app/controllers/projects/wikis_controller.rb | 2 +- app/models/project_wiki.rb | 7 +++++++ spec/models/project_wiki_spec.rb | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb index cfb7d6fd941..cd7feaaf398 100644 --- a/app/controllers/projects/wikis_controller.rb +++ b/app/controllers/projects/wikis_controller.rb @@ -107,7 +107,7 @@ class Projects::WikisController < Projects::ApplicationController # Call #wiki to make sure the Wiki Repo is initialized @project_wiki.wiki - @sidebar_page = @project_wiki.find_page('_sidebar', params[:version_id]) + @sidebar_page = @project_wiki.find_sidebar(params[:version_id]) unless @sidebar_page # Fallback to default sidebar @sidebar_wiki_entries = WikiPage.group_by_directory(@project_wiki.pages(limit: 15)) diff --git a/app/models/project_wiki.rb b/app/models/project_wiki.rb index 52e067cb44c..e70b7dc2325 100644 --- a/app/models/project_wiki.rb +++ b/app/models/project_wiki.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class ProjectWiki include Gitlab::ShellAdapter include Storage::LegacyProjectWiki @@ -9,6 +11,7 @@ class ProjectWiki }.freeze unless defined?(MARKUPS) CouldNotCreateWikiError = Class.new(StandardError) + SIDEBAR = '_sidebar' # Returns a string describing what went wrong after # an operation fails. @@ -95,6 +98,10 @@ class ProjectWiki end end + def find_sidebar(version = nil) + find_page(SIDEBAR, version) + end + def find_file(name, version = nil) wiki.file(name, version) end diff --git a/spec/models/project_wiki_spec.rb b/spec/models/project_wiki_spec.rb index d87c1ca14f0..505746d78af 100644 --- a/spec/models/project_wiki_spec.rb +++ b/spec/models/project_wiki_spec.rb @@ -170,6 +170,22 @@ describe ProjectWiki do end end + describe '#find_sidebar' do + before do + create_page(described_class::SIDEBAR, 'This is an awesome Sidebar') + end + + after do + subject.pages.each { |page| destroy_page(page.page) } + end + + it 'finds the page defined as _sidebar' do + page = subject.find_page('_sidebar') + + expect(page.content).to eq('This is an awesome Sidebar') + end + end + describe '#find_file' do shared_examples 'finding a wiki file' do before do