summaryrefslogtreecommitdiff
path: root/spec/services/wiki_pages/create_service_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/wiki_pages/create_service_spec.rb')
-rw-r--r--spec/services/wiki_pages/create_service_spec.rb49
1 files changed, 41 insertions, 8 deletions
diff --git a/spec/services/wiki_pages/create_service_spec.rb b/spec/services/wiki_pages/create_service_spec.rb
index ef03a2e9788..d63d62e9492 100644
--- a/spec/services/wiki_pages/create_service_spec.rb
+++ b/spec/services/wiki_pages/create_service_spec.rb
@@ -5,19 +5,16 @@ 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: 'Title',
+ title: page_title,
content: 'Content for wiki page',
format: 'markdown'
}
end
- let(:bad_opts) do
- { title: '' }
- end
-
subject(:service) { described_class.new(project, user, opts) }
before do
@@ -35,8 +32,7 @@ describe WikiPages::CreateService do
end
it 'executes webhooks' do
- expect(service).to receive(:execute_hooks).once
- .with(instance_of(WikiPage), 'create')
+ expect(service).to receive(:execute_hooks).once.with(WikiPage)
service.execute
end
@@ -47,8 +43,41 @@ describe WikiPages::CreateService do
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
- subject(:service) { described_class.new(project, user, bad_opts) }
+ let(:page_title) { '' }
it 'does not count a creation event' do
counter = Gitlab::UsageDataCounters::WikiPageCounter
@@ -56,6 +85,10 @@ describe WikiPages::CreateService do
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)