Trigger iid logic from GitHub importer for issues.

This commit is contained in:
Andreas Brandl 2018-07-31 16:13:32 +02:00
parent a2d647b113
commit b78a69b06c
No known key found for this signature in database
GPG key ID: F25982B13FEE55DA
2 changed files with 27 additions and 1 deletions

View file

@ -55,7 +55,11 @@ module Gitlab
updated_at: issue.updated_at updated_at: issue.updated_at
} }
GithubImport.insert_and_return_id(attributes, project.issues) GithubImport.insert_and_return_id(attributes, project.issues).tap do |id|
# We use .insert_and_return_id which effectively disables all callbacks.
# Trigger iid logic here to make sure we track internal id values consistently.
project.issues.find(id).ensure_project_iid!
end
rescue ActiveRecord::InvalidForeignKey rescue ActiveRecord::InvalidForeignKey
# It's possible the project has been deleted since scheduling this # It's possible the project has been deleted since scheduling this
# job. In this case we'll just skip creating the issue. # job. In this case we'll just skip creating the issue.

View file

@ -78,6 +78,11 @@ describe Gitlab::GithubImport::Importer::IssueImporter, :clean_gitlab_redis_cach
.to receive(:id_for) .to receive(:id_for)
.with(issue) .with(issue)
.and_return(milestone.id) .and_return(milestone.id)
allow(importer.user_finder)
.to receive(:author_id_for)
.with(issue)
.and_return([user.id, true])
end end
context 'when the issue author could be found' do context 'when the issue author could be found' do
@ -172,6 +177,23 @@ describe Gitlab::GithubImport::Importer::IssueImporter, :clean_gitlab_redis_cach
expect(importer.create_issue).to be_a_kind_of(Numeric) expect(importer.create_issue).to be_a_kind_of(Numeric)
end end
it 'triggers internal_id functionality to track greatest iids' do
allow(importer.user_finder)
.to receive(:author_id_for)
.with(issue)
.and_return([user.id, true])
issue = build_stubbed(:issue, project: project)
allow(Gitlab::GithubImport)
.to receive(:insert_and_return_id)
.and_return(issue.id)
allow(project.issues).to receive(:find).with(issue.id).and_return(issue)
expect(issue).to receive(:ensure_project_iid!)
importer.create_issue
end
end end
describe '#create_assignees' do describe '#create_assignees' do