summaryrefslogtreecommitdiff
path: root/spec/services/wiki_pages
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-05-13 12:07:54 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-05-13 12:07:54 +0000
commit41e8b05e8d06f4b13a984e4a3ad26e9a48294543 (patch)
tree833a6ca2518dab3923f0ffbc760d9ba241cab196 /spec/services/wiki_pages
parent0e65189f85bb393e16e60335a42933beb0834295 (diff)
downloadgitlab-ce-41e8b05e8d06f4b13a984e4a3ad26e9a48294543.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/wiki_pages')
-rw-r--r--spec/services/wiki_pages/base_service_spec.rb2
-rw-r--r--spec/services/wiki_pages/create_service_spec.rb93
-rw-r--r--spec/services/wiki_pages/destroy_service_spec.rb49
-rw-r--r--spec/services/wiki_pages/update_service_spec.rb97
4 files changed, 4 insertions, 237 deletions
diff --git a/spec/services/wiki_pages/base_service_spec.rb b/spec/services/wiki_pages/base_service_spec.rb
index 4c44c195ac8..fede86a5192 100644
--- a/spec/services/wiki_pages/base_service_spec.rb
+++ b/spec/services/wiki_pages/base_service_spec.rb
@@ -10,7 +10,7 @@ describe WikiPages::BaseService do
counter = Gitlab::UsageDataCounters::WikiPageCounter
error = counter::UnknownEvent
- let(:subject) { bad_service_class.new(project, user, {}) }
+ let(:subject) { bad_service_class.new(container: project, current_user: user) }
context 'the class implements usage_counter_action incorrectly' do
let(:bad_service_class) do
diff --git a/spec/services/wiki_pages/create_service_spec.rb b/spec/services/wiki_pages/create_service_spec.rb
index d63d62e9492..2a17805110e 100644
--- a/spec/services/wiki_pages/create_service_spec.rb
+++ b/spec/services/wiki_pages/create_service_spec.rb
@@ -3,96 +3,5 @@
require 'spec_helper'
describe WikiPages::CreateService do
- let(:project) { create(:project, :wiki_repo) }
- let(:user) { create(:user) }
- let(:page_title) { 'Title' }
-
- let(:opts) do
- {
- title: page_title,
- content: 'Content for wiki page',
- format: 'markdown'
- }
- end
-
- subject(:service) { described_class.new(project, user, opts) }
-
- before do
- project.add_developer(user)
- end
-
- describe '#execute' do
- it 'creates wiki page with valid attributes' do
- page = service.execute
-
- expect(page).to be_valid
- expect(page.title).to eq(opts[:title])
- expect(page.content).to eq(opts[:content])
- expect(page.format).to eq(opts[:format].to_sym)
- end
-
- it 'executes webhooks' do
- expect(service).to receive(:execute_hooks).once.with(WikiPage)
-
- service.execute
- end
-
- it 'counts wiki page creation' do
- counter = Gitlab::UsageDataCounters::WikiPageCounter
-
- expect { service.execute }.to change { counter.read(:create) }.by 1
- end
-
- shared_examples 'correct event created' do
- it 'creates appropriate events' do
- expect { service.execute }.to change { Event.count }.by 1
-
- expect(Event.recent.first).to have_attributes(
- action: Event::CREATED,
- target: have_attributes(canonical_slug: page_title)
- )
- end
- end
-
- context 'the new page is at the top level' do
- let(:page_title) { 'root-level-page' }
-
- include_examples 'correct event created'
- end
-
- context 'the new page is in a subsection' do
- let(:page_title) { 'subsection/page' }
-
- include_examples 'correct event created'
- end
-
- context 'the feature is disabled' do
- before do
- stub_feature_flags(wiki_events: false)
- end
-
- it 'does not record the activity' do
- expect { service.execute }.not_to change(Event, :count)
- end
- end
-
- context 'when the options are bad' do
- let(:page_title) { '' }
-
- it 'does not count a creation event' do
- counter = Gitlab::UsageDataCounters::WikiPageCounter
-
- expect { service.execute }.not_to change { counter.read(:create) }
- end
-
- it 'does not record the activity' do
- expect { service.execute }.not_to change(Event, :count)
- end
-
- it 'reports the error' do
- expect(service.execute).to be_invalid
- .and have_attributes(errors: be_present)
- end
- end
- end
+ it_behaves_like 'WikiPages::CreateService#execute', :project
end
diff --git a/spec/services/wiki_pages/destroy_service_spec.rb b/spec/services/wiki_pages/destroy_service_spec.rb
index e205bedfdb9..b6fee1fd896 100644
--- a/spec/services/wiki_pages/destroy_service_spec.rb
+++ b/spec/services/wiki_pages/destroy_service_spec.rb
@@ -3,52 +3,5 @@
require 'spec_helper'
describe WikiPages::DestroyService do
- let(:project) { create(:project) }
- let(:user) { create(:user) }
- let(:page) { create(:wiki_page) }
-
- subject(:service) { described_class.new(project, user) }
-
- before do
- project.add_developer(user)
- end
-
- describe '#execute' do
- it 'executes webhooks' do
- expect(service).to receive(:execute_hooks).once.with(page)
-
- service.execute(page)
- end
-
- it 'increments the delete count' do
- counter = Gitlab::UsageDataCounters::WikiPageCounter
-
- expect { service.execute(page) }.to change { counter.read(:delete) }.by 1
- end
-
- it 'creates a new wiki page deletion event' do
- expect { service.execute(page) }.to change { Event.count }.by 1
-
- expect(Event.recent.first).to have_attributes(
- action: Event::DESTROYED,
- target: have_attributes(canonical_slug: page.slug)
- )
- end
-
- it 'does not increment the delete count if the deletion failed' do
- counter = Gitlab::UsageDataCounters::WikiPageCounter
-
- expect { service.execute(nil) }.not_to change { counter.read(:delete) }
- end
- end
-
- context 'the feature is disabled' do
- before do
- stub_feature_flags(wiki_events: false)
- end
-
- it 'does not record the activity' do
- expect { service.execute(page) }.not_to change(Event, :count)
- end
- end
+ it_behaves_like 'WikiPages::DestroyService#execute', :project
end
diff --git a/spec/services/wiki_pages/update_service_spec.rb b/spec/services/wiki_pages/update_service_spec.rb
index ece714ee8e5..ac629a96f9a 100644
--- a/spec/services/wiki_pages/update_service_spec.rb
+++ b/spec/services/wiki_pages/update_service_spec.rb
@@ -3,100 +3,5 @@
require 'spec_helper'
describe WikiPages::UpdateService do
- let(:project) { create(:project) }
- let(:user) { create(:user) }
- let(:page) { create(:wiki_page) }
- let(:page_title) { 'New Title' }
-
- let(:opts) do
- {
- content: 'New content for wiki page',
- format: 'markdown',
- message: 'New wiki message',
- title: page_title
- }
- end
-
- subject(:service) { described_class.new(project, user, opts) }
-
- before do
- project.add_developer(user)
- end
-
- describe '#execute' do
- it 'updates the wiki page' do
- updated_page = service.execute(page)
-
- expect(updated_page).to be_valid
- expect(updated_page.message).to eq(opts[:message])
- expect(updated_page.content).to eq(opts[:content])
- expect(updated_page.format).to eq(opts[:format].to_sym)
- expect(updated_page.title).to eq(page_title)
- end
-
- it 'executes webhooks' do
- expect(service).to receive(:execute_hooks).once.with(WikiPage)
-
- service.execute(page)
- end
-
- it 'counts edit events' do
- counter = Gitlab::UsageDataCounters::WikiPageCounter
-
- expect { service.execute page }.to change { counter.read(:update) }.by 1
- end
-
- shared_examples 'adds activity event' do
- it 'adds a new wiki page activity event' do
- expect { service.execute(page) }.to change { Event.count }.by 1
-
- expect(Event.recent.first).to have_attributes(
- action: Event::UPDATED,
- wiki_page: page,
- target_title: page.title
- )
- end
- end
-
- context 'the page is at the top level' do
- let(:page_title) { 'Top level page' }
-
- include_examples 'adds activity event'
- end
-
- context 'the page is in a subsection' do
- let(:page_title) { 'Subsection / secondary page' }
-
- include_examples 'adds activity event'
- end
-
- context 'the feature is disabled' do
- before do
- stub_feature_flags(wiki_events: false)
- end
-
- it 'does not record the activity' do
- expect { service.execute(page) }.not_to change(Event, :count)
- end
- end
-
- context 'when the options are bad' do
- let(:page_title) { '' }
-
- it 'does not count an edit event' do
- counter = Gitlab::UsageDataCounters::WikiPageCounter
-
- expect { service.execute page }.not_to change { counter.read(:update) }
- end
-
- it 'does not record the activity' do
- expect { service.execute page }.not_to change(Event, :count)
- end
-
- it 'reports the error' do
- expect(service.execute(page)).to be_invalid
- .and have_attributes(errors: be_present)
- end
- end
- end
+ it_behaves_like 'WikiPages::UpdateService#execute', :project
end