From 9b0e8a09b1b35cc8fc893003afc59c78f5dc846f Mon Sep 17 00:00:00 2001 From: haseeb Date: Tue, 27 Feb 2018 21:48:01 +0530 Subject: [PATCH] added forign key and specs --- app/models/user.rb | 1 + db/migrate/20180209165249_add_closed_by_to_issues.rb | 9 ++++++++- db/schema.rb | 2 ++ spec/services/issues/close_service_spec.rb | 4 ++++ 4 files changed, 15 insertions(+), 1 deletion(-) 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) -- GitLab