Commit fcea425c authored by Kerri Miller's avatar Kerri Miller

Add user and system note filters to note_authors association

Changelog: added
parent c1c597bc
...@@ -73,7 +73,15 @@ module Issuable ...@@ -73,7 +73,15 @@ module Issuable
end end
end end
has_many :note_authors, -> { distinct }, through: :notes, source: :author has_many :note_authors, -> { distinct }, through: :notes, source: :author do
def user_notes
where("notes.system = false")
end
def system_notes
where("notes.system = true")
end
end
has_many :label_links, as: :target, inverse_of: :target has_many :label_links, as: :target, inverse_of: :target
has_many :labels, through: :label_links has_many :labels, through: :label_links
......
...@@ -18,7 +18,6 @@ RSpec.describe Issuable do ...@@ -18,7 +18,6 @@ RSpec.describe Issuable do
it { is_expected.to have_many(:notes).dependent(:destroy) } it { is_expected.to have_many(:notes).dependent(:destroy) }
it { is_expected.to have_many(:todos) } it { is_expected.to have_many(:todos) }
it { is_expected.to have_many(:labels) } it { is_expected.to have_many(:labels) }
it { is_expected.to have_many(:note_authors).through(:notes) }
context 'Notes' do context 'Notes' do
let!(:note) { create(:note, noteable: issue, project: issue.project) } let!(:note) { create(:note, noteable: issue, project: issue.project) }
...@@ -28,6 +27,31 @@ RSpec.describe Issuable do ...@@ -28,6 +27,31 @@ RSpec.describe Issuable do
expect(issue.notes).not_to be_authors_loaded expect(issue.notes).not_to be_authors_loaded
expect(scoped_issue.notes).to be_authors_loaded expect(scoped_issue.notes).to be_authors_loaded
end end
describe 'note_authors' do
let(:system_user) { create(:user) }
let!(:system_note) { create(:system_note, author: system_user, noteable: issue, project: issue.project) }
it { is_expected.to have_many(:note_authors).through(:notes) }
describe 'note_authors.user_notes' do
it 'filters the authors to those of user notes' do
authors = issue.note_authors.user_notes
expect(authors).to include(note.author)
expect(authors).not_to include(system_user)
end
end
describe 'note_authors.system_notes' do
it 'filters the authors to those of system notes' do
authors = issue.note_authors.system_notes
expect(authors).to include(system_user)
expect(authors).not_to include(note.author)
end
end
end
end end
end end
......
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