From 1019dff2371b30979b33ce823abeadadad9cfab3 Mon Sep 17 00:00:00 2001 From: Chantal Rollison Date: Wed, 2 May 2018 14:34:05 -0700 Subject: [PATCH] Backport of 1481-changing-weight-values-should-trigger-system-notes --- app/controllers/concerns/issuable_actions.rb | 1 - app/models/system_note_metadata.rb | 6 +++- spec/lib/gitlab/incoming_email_spec.rb | 4 +-- .../common_system_notes_service_spec.rb | 28 ------------------- .../common_system_notes_examples.rb | 27 ++++++++++++++++++ 5 files changed, 34 insertions(+), 32 deletions(-) create mode 100644 spec/support/shared_examples/common_system_notes_examples.rb diff --git a/app/controllers/concerns/issuable_actions.rb b/app/controllers/concerns/issuable_actions.rb index 0379f76fc3d..c925b4aada5 100644 --- a/app/controllers/concerns/issuable_actions.rb +++ b/app/controllers/concerns/issuable_actions.rb @@ -18,7 +18,6 @@ module IssuableActions def update @issuable = update_service.execute(issuable) # rubocop:disable Gitlab/ModuleWithInstanceVariables - respond_to do |format| format.html do recaptcha_check_if_spammable { render :edit } diff --git a/app/models/system_note_metadata.rb b/app/models/system_note_metadata.rb index 29035480371..1c2161accc4 100644 --- a/app/models/system_note_metadata.rb +++ b/app/models/system_note_metadata.rb @@ -17,7 +17,11 @@ class SystemNoteMetadata < ActiveRecord::Base ].freeze validates :note, presence: true - validates :action, inclusion: ICON_TYPES, allow_nil: true + validates :action, inclusion: { in: :icon_types }, allow_nil: true belongs_to :note + + def icon_types + ICON_TYPES + end end diff --git a/spec/lib/gitlab/incoming_email_spec.rb b/spec/lib/gitlab/incoming_email_spec.rb index c959add7a36..ad087f42e06 100644 --- a/spec/lib/gitlab/incoming_email_spec.rb +++ b/spec/lib/gitlab/incoming_email_spec.rb @@ -24,7 +24,7 @@ describe Gitlab::IncomingEmail do end describe 'self.supports_wildcard?' do - context 'address contains the wildard placeholder' do + context 'address contains the wildcard placeholder' do before do stub_incoming_email_setting(address: 'replies+%{key}@example.com') end @@ -49,7 +49,7 @@ describe Gitlab::IncomingEmail do stub_incoming_email_setting(address: nil) end - it 'returns that wildard is not supported' do + it 'returns that wildcard is not supported' do expect(described_class.supports_wildcard?).to be_falsey end end diff --git a/spec/services/issuable/common_system_notes_service_spec.rb b/spec/services/issuable/common_system_notes_service_spec.rb index b8fa3e3d124..dcf4503ef9c 100644 --- a/spec/services/issuable/common_system_notes_service_spec.rb +++ b/spec/services/issuable/common_system_notes_service_spec.rb @@ -5,34 +5,6 @@ describe Issuable::CommonSystemNotesService do let(:project) { create(:project) } let(:issuable) { create(:issue) } - shared_examples 'system note creation' do |update_params, note_text| - subject { described_class.new(project, user).execute(issuable, [])} - - before do - issuable.assign_attributes(update_params) - issuable.save - end - - it 'creates 1 system note with the correct content' do - expect { subject }.to change { Note.count }.from(0).to(1) - - note = Note.last - expect(note.note).to match(note_text) - expect(note.noteable_type).to eq(issuable.class.name) - end - end - - shared_examples 'WIP notes creation' do |wip_action| - subject { described_class.new(project, user).execute(issuable, []) } - - it 'creates WIP toggle and title change notes' do - expect { subject }.to change { Note.count }.from(0).to(2) - - expect(Note.first.note).to match("#{wip_action} as a **Work In Progress**") - expect(Note.second.note).to match('changed title') - end - end - describe '#execute' do it_behaves_like 'system note creation', { title: 'New title' }, 'changed title' it_behaves_like 'system note creation', { description: 'New description' }, 'changed the description' diff --git a/spec/support/shared_examples/common_system_notes_examples.rb b/spec/support/shared_examples/common_system_notes_examples.rb new file mode 100644 index 00000000000..96ef30b7513 --- /dev/null +++ b/spec/support/shared_examples/common_system_notes_examples.rb @@ -0,0 +1,27 @@ +shared_examples 'system note creation' do |update_params, note_text| + subject { described_class.new(project, user).execute(issuable, [])} + + before do + issuable.assign_attributes(update_params) + issuable.save + end + + it 'creates 1 system note with the correct content' do + expect { subject }.to change { Note.count }.from(0).to(1) + + note = Note.last + expect(note.note).to match(note_text) + expect(note.noteable_type).to eq(issuable.class.name) + end +end + +shared_examples 'WIP notes creation' do |wip_action| + subject { described_class.new(project, user).execute(issuable, []) } + + it 'creates WIP toggle and title change notes' do + expect { subject }.to change { Note.count }.from(0).to(2) + + expect(Note.first.note).to match("#{wip_action} as a **Work In Progress**") + expect(Note.second.note).to match('changed title') + end +end