Commit 766a35af authored by Valery Sizov's avatar Valery Sizov

[Multiple issue assignees] Fix hook_attrs

parent 7b64b205
...@@ -82,7 +82,7 @@ module Projects ...@@ -82,7 +82,7 @@ module Projects
labels: true, labels: true,
only: [:id, :iid, :title, :confidential, :due_date, :relative_position], only: [:id, :iid, :title, :confidential, :due_date, :relative_position],
include: { include: {
assignee: { only: [:id, :name, :username], methods: [:avatar_url] }, assignees: { only: [:id, :name, :username], methods: [:avatar_url] },
milestone: { only: [:id, :title] } milestone: { only: [:id, :title] }
}, },
user: current_user user: current_user
......
...@@ -277,7 +277,11 @@ module Issuable ...@@ -277,7 +277,11 @@ module Issuable
# DEPRECATED # DEPRECATED
repository: project.hook_attrs.slice(:name, :url, :description, :homepage) repository: project.hook_attrs.slice(:name, :url, :description, :homepage)
} }
hook_data[:assignee] = assignee.hook_attrs if assignee if self.is_a?(Issue)
hook_data[:assignees] = assignees.map(&:hook_attrs) if assignees.any?
else
hook_data[:assignee] = assignee.hook_attrs if assignee
end
hook_data hook_data
end end
......
...@@ -33,9 +33,10 @@ class Issue < ActiveRecord::Base ...@@ -33,9 +33,10 @@ class Issue < ActiveRecord::Base
validates :project, presence: true validates :project, presence: true
scope :cared, ->(user) { where(assignee_id: user) } scope :cared, ->(user) { with_assignees.where("issue_assignees.user_id IN(?)", user.id) }
scope :open_for, ->(user) { opened.assigned_to(user) } scope :open_for, ->(user) { opened.assigned_to(user) }
scope :in_projects, ->(project_ids) { where(project_id: project_ids) } scope :in_projects, ->(project_ids) { where(project_id: project_ids) }
scope :with_assignees, -> { joins(:assignees) }
scope :without_due_date, -> { where(due_date: nil) } scope :without_due_date, -> { where(due_date: nil) }
scope :due_before, ->(date) { where('issues.due_date < ?', date) } scope :due_before, ->(date) { where('issues.due_date < ?', date) }
...@@ -287,7 +288,7 @@ class Issue < ActiveRecord::Base ...@@ -287,7 +288,7 @@ class Issue < ActiveRecord::Base
true true
elsif confidential? elsif confidential?
author == user || author == user ||
assignee == user || assignees.include?(user) ||
project.team.member?(user, Gitlab::Access::REPORTER) project.team.member?(user, Gitlab::Access::REPORTER)
else else
project.public? || project.public? ||
......
...@@ -48,7 +48,13 @@ class IssuableBaseService < BaseService ...@@ -48,7 +48,13 @@ class IssuableBaseService < BaseService
params.delete(:add_label_ids) params.delete(:add_label_ids)
params.delete(:remove_label_ids) params.delete(:remove_label_ids)
params.delete(:label_ids) params.delete(:label_ids)
params.delete(:assignee_id)
if issuable.is_a?(Issue)
params.delete(:assignee_ids)
else
params.delete(:assignee_id)
end
params.delete(:due_date) params.delete(:due_date)
end end
......
...@@ -20,7 +20,7 @@ describe Issues::CreateService, services: true do ...@@ -20,7 +20,7 @@ describe Issues::CreateService, services: true do
let(:opts) do let(:opts) do
{ title: 'Awesome issue', { title: 'Awesome issue',
description: 'please fix', description: 'please fix',
assignee_id: assignee.id, assignee_ids: assignee.id.to_s,
label_ids: labels.map(&:id), label_ids: labels.map(&:id),
milestone_id: milestone.id, milestone_id: milestone.id,
due_date: Date.tomorrow } due_date: Date.tomorrow }
...@@ -29,7 +29,7 @@ describe Issues::CreateService, services: true do ...@@ -29,7 +29,7 @@ describe Issues::CreateService, services: true do
it 'creates the issue with the given params' do it 'creates the issue with the given params' do
expect(issue).to be_persisted expect(issue).to be_persisted
expect(issue.title).to eq('Awesome issue') expect(issue.title).to eq('Awesome issue')
expect(issue.assignee).to eq assignee expect(issue.assignees).to eq [assignee]
expect(issue.labels).to match_array labels expect(issue.labels).to match_array labels
expect(issue.milestone).to eq milestone expect(issue.milestone).to eq milestone
expect(issue.due_date).to eq Date.tomorrow expect(issue.due_date).to eq Date.tomorrow
...@@ -37,6 +37,7 @@ describe Issues::CreateService, services: true do ...@@ -37,6 +37,7 @@ describe Issues::CreateService, services: true do
context 'when current user cannot admin issues in the project' do context 'when current user cannot admin issues in the project' do
let(:guest) { create(:user) } let(:guest) { create(:user) }
before do before do
project.team << [guest, :guest] project.team << [guest, :guest]
end end
...@@ -47,7 +48,7 @@ describe Issues::CreateService, services: true do ...@@ -47,7 +48,7 @@ describe Issues::CreateService, services: true do
expect(issue).to be_persisted expect(issue).to be_persisted
expect(issue.title).to eq('Awesome issue') expect(issue.title).to eq('Awesome issue')
expect(issue.description).to eq('please fix') expect(issue.description).to eq('please fix')
expect(issue.assignee).to be_nil expect(issue.assignees).to be_empty
expect(issue.labels).to be_empty expect(issue.labels).to be_empty
expect(issue.milestone).to be_nil expect(issue.milestone).to be_nil
expect(issue.due_date).to be_nil expect(issue.due_date).to be_nil
......
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