summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/user.rb1
-rw-r--r--db/migrate/20180209165249_add_closed_by_to_issues.rb9
-rw-r--r--db/schema.rb2
-rw-r--r--spec/services/issues/close_service_spec.rb4
4 files changed, 15 insertions, 1 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 982080763d2..ef888051841 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -135,6 +135,7 @@ class User < ActiveRecord::Base
has_many :issue_assignees
has_many :assigned_issues, class_name: "Issue", through: :issue_assignees, source: :issue
has_many :assigned_merge_requests, dependent: :nullify, foreign_key: :assignee_id, class_name: "MergeRequest" # rubocop:disable Cop/ActiveRecordDependent
+ has_many :closed_issues, class_name: 'Issue', dependent: :nullify, foreign_key: :closed_by_id
has_many :custom_attributes, class_name: 'UserCustomAttribute'
has_many :callouts, class_name: 'UserCallout'
diff --git a/db/migrate/20180209165249_add_closed_by_to_issues.rb b/db/migrate/20180209165249_add_closed_by_to_issues.rb
index 043e3ef8688..e251afd7b49 100644
--- a/db/migrate/20180209165249_add_closed_by_to_issues.rb
+++ b/db/migrate/20180209165249_add_closed_by_to_issues.rb
@@ -4,10 +4,17 @@
class AddClosedByToIssues < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
+ disable_ddl_transaction!
# Set this constant to true if this migration requires downtime.
DOWNTIME = false
- def change
+ def up
add_column :issues, :closed_by_id, :integer
+ add_concurrent_foreign_key :issues, :users, column: :closed_by_id, on_delete: :nullify
+ end
+
+ def down
+ remove_foreign_key :issues, column: :closed_by_id
+ remove_column :issues, :closed_by_id
end
end
diff --git a/db/schema.rb b/db/schema.rb
index 5bb461169f1..cb4362a5306 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -876,6 +876,7 @@ ActiveRecord::Schema.define(version: 20180216121030) do
t.integer "last_edited_by_id"
t.boolean "discussion_locked"
t.datetime_with_timezone "closed_at"
+ t.integer "closed_by_id"
end
add_index "issues", ["author_id"], name: "index_issues_on_author_id", using: :btree
@@ -2013,6 +2014,7 @@ ActiveRecord::Schema.define(version: 20180216121030) do
add_foreign_key "issues", "milestones", name: "fk_96b1dd429c", on_delete: :nullify
add_foreign_key "issues", "projects", name: "fk_899c8f3231", on_delete: :cascade
add_foreign_key "issues", "users", column: "author_id", name: "fk_05f1e72feb", on_delete: :nullify
+ add_foreign_key "issues", "users", column: "closed_by_id", name: "fk_c63cbf6c25", on_delete: :nullify
add_foreign_key "issues", "users", column: "updated_by_id", name: "fk_ffed080f01", on_delete: :nullify
add_foreign_key "label_priorities", "labels", on_delete: :cascade
add_foreign_key "label_priorities", "projects", on_delete: :cascade
diff --git a/spec/services/issues/close_service_spec.rb b/spec/services/issues/close_service_spec.rb
index 47c1ebbeb81..7ae49c06896 100644
--- a/spec/services/issues/close_service_spec.rb
+++ b/spec/services/issues/close_service_spec.rb
@@ -67,6 +67,10 @@ describe Issues::CloseService do
expect(issue).to be_closed
end
+ it 'records closed user' do
+ expect(issue.closed_by_id).to be(user.id)
+ end
+
it 'sends email to user2 about assign of new issue' do
email = ActionMailer::Base.deliveries.last
expect(email.to.first).to eq(user2.email)