Commit 7bf372c1 authored by Arturo Herrero's avatar Arturo Herrero

Merge branch 'pl-rubocop-inline-association-notes' into 'master'

Fix cop FactoryBot/InlineAssociation offenses for notes

See merge request gitlab-org/gitlab!52923
parents a27e483d 37c1df17
...@@ -25,7 +25,6 @@ FactoryBot/InlineAssociation: ...@@ -25,7 +25,6 @@ FactoryBot/InlineAssociation:
- 'spec/factories/go_modules.rb' - 'spec/factories/go_modules.rb'
- 'spec/factories/group_group_links.rb' - 'spec/factories/group_group_links.rb'
- 'spec/factories/import_export_uploads.rb' - 'spec/factories/import_export_uploads.rb'
- 'spec/factories/notes.rb'
- 'spec/factories/uploads.rb' - 'spec/factories/uploads.rb'
- 'spec/factories/wiki_pages.rb' - 'spec/factories/wiki_pages.rb'
......
...@@ -8,7 +8,7 @@ FactoryBot.define do ...@@ -8,7 +8,7 @@ FactoryBot.define do
factory :note do factory :note do
project project
note { generate(:title) } note { generate(:title) }
author { project&.creator || create(:user) } author { project&.creator || association(:user) }
on_issue on_issue
factory :note_on_commit, traits: [:on_commit] factory :note_on_commit, traits: [:on_commit]
...@@ -55,7 +55,7 @@ FactoryBot.define do ...@@ -55,7 +55,7 @@ FactoryBot.define do
end end
position do position do
build(:text_diff_position, association(:text_diff_position,
file: "files/ruby/popen.rb", file: "files/ruby/popen.rb",
old_line: nil, old_line: nil,
new_line: line_number, new_line: line_number,
...@@ -64,7 +64,7 @@ FactoryBot.define do ...@@ -64,7 +64,7 @@ FactoryBot.define do
trait :folded_position do trait :folded_position do
position do position do
build(:text_diff_position, association(:text_diff_position,
file: "files/ruby/popen.rb", file: "files/ruby/popen.rb",
old_line: 1, old_line: 1,
new_line: 1, new_line: 1,
...@@ -74,7 +74,7 @@ FactoryBot.define do ...@@ -74,7 +74,7 @@ FactoryBot.define do
factory :image_diff_note_on_merge_request do factory :image_diff_note_on_merge_request do
position do position do
build(:image_diff_position, association(:image_diff_position,
file: "files/images/any_image.png", file: "files/images/any_image.png",
diff_refs: diff_refs) diff_refs: diff_refs)
end end
...@@ -90,7 +90,7 @@ FactoryBot.define do ...@@ -90,7 +90,7 @@ FactoryBot.define do
end end
position do position do
build(:text_diff_position, association(:text_diff_position,
file: "files/ruby/popen.rb", file: "files/ruby/popen.rb",
old_line: nil, old_line: nil,
new_line: line_number, new_line: line_number,
...@@ -100,7 +100,11 @@ FactoryBot.define do ...@@ -100,7 +100,11 @@ FactoryBot.define do
end end
factory :diff_note_on_design, parent: :note, traits: [:on_design], class: 'DiffNote' do factory :diff_note_on_design, parent: :note, traits: [:on_design], class: 'DiffNote' do
position { build(:image_diff_position, file: noteable.full_path, diff_refs: noteable.diff_refs) } position do
association(:image_diff_position,
file: noteable.full_path,
diff_refs: noteable.diff_refs)
end
end end
trait :on_commit do trait :on_commit do
......
...@@ -890,35 +890,31 @@ RSpec.describe Note do ...@@ -890,35 +890,31 @@ RSpec.describe Note do
describe '#cache_markdown_field' do describe '#cache_markdown_field' do
let(:html) { '<p>some html</p>'} let(:html) { '<p>some html</p>'}
before do
allow(Banzai::Renderer).to receive(:cacheless_render_field).and_call_original
end
context 'note for a project snippet' do context 'note for a project snippet' do
let(:snippet) { create(:project_snippet) } let(:snippet) { create(:project_snippet) }
let(:note) { build(:note_on_project_snippet, project: snippet.project, noteable: snippet) } let(:note) { create(:note_on_project_snippet, project: snippet.project, noteable: snippet) }
before do it 'skips project check' do
expect(Banzai::Renderer).to receive(:cacheless_render_field) expect(Banzai::Renderer).to receive(:cacheless_render_field)
.with(note, :note, { skip_project_check: false }).and_return(html) .with(note, :note, { skip_project_check: false })
note.save note.update!(note: html)
end
it 'creates a note' do
expect(note.note_html).to eq(html)
end end
end end
context 'note for a personal snippet' do context 'note for a personal snippet' do
let(:snippet) { create(:personal_snippet) } let(:snippet) { create(:personal_snippet) }
let(:note) { build(:note_on_personal_snippet, noteable: snippet) } let(:note) { create(:note_on_personal_snippet, noteable: snippet) }
before do it 'does not skip project check' do
expect(Banzai::Renderer).to receive(:cacheless_render_field) expect(Banzai::Renderer).to receive(:cacheless_render_field)
.with(note, :note, { skip_project_check: true }).and_return(html) .with(note, :note, { skip_project_check: true })
note.save
end
it 'creates a note' do note.update!(note: html)
expect(note.note_html).to eq(html)
end end
end end
end end
......
...@@ -3,3 +3,16 @@ ...@@ -3,3 +3,16 @@
FactoryBot::SyntaxRunner.class_eval do FactoryBot::SyntaxRunner.class_eval do
include RSpec::Mocks::ExampleMethods include RSpec::Mocks::ExampleMethods
end end
# Patching FactoryBot to allow stubbing non AR models
# See https://github.com/thoughtbot/factory_bot/pull/1466
module Gitlab
module FactoryBotStubPatch
def has_settable_id?(result_instance)
result_instance.class.respond_to?(:primary_key) &&
result_instance.class.primary_key
end
end
end
FactoryBot::Strategy::Stub.prepend(Gitlab::FactoryBotStubPatch)
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