From d24ea868ab5a3644884cb02f6faa2b8daf48b1d2 Mon Sep 17 00:00:00 2001 From: Diana Stanley Date: Wed, 20 Feb 2019 15:09:27 -0800 Subject: Capture due date when importing milestones from Github --- .../unreleased/57612-github-importer-ignores-milestone-due_date.yml | 5 +++++ lib/gitlab/github_import/importer/milestones_importer.rb | 1 + spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb | 6 ++++++ 3 files changed, 12 insertions(+) create mode 100644 changelogs/unreleased/57612-github-importer-ignores-milestone-due_date.yml diff --git a/changelogs/unreleased/57612-github-importer-ignores-milestone-due_date.yml b/changelogs/unreleased/57612-github-importer-ignores-milestone-due_date.yml new file mode 100644 index 00000000000..0d5cd057ade --- /dev/null +++ b/changelogs/unreleased/57612-github-importer-ignores-milestone-due_date.yml @@ -0,0 +1,5 @@ +--- +title: Capture due date when importing milestones from Github +merge_request: 25182 +author: dstanley +type: changed diff --git a/lib/gitlab/github_import/importer/milestones_importer.rb b/lib/gitlab/github_import/importer/milestones_importer.rb index 87cf2c8b598..8a5b3db9e08 100644 --- a/lib/gitlab/github_import/importer/milestones_importer.rb +++ b/lib/gitlab/github_import/importer/milestones_importer.rb @@ -42,6 +42,7 @@ module Gitlab description: milestone.description, project_id: project.id, state: state_for(milestone), + due_date: milestone.due_on.to_date, created_at: milestone.created_at, updated_at: milestone.updated_at } diff --git a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb index b1cac3b6e46..471f499dd19 100644 --- a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb +++ b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb @@ -4,6 +4,7 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis let(:project) { create(:project, import_source: 'foo/bar') } let(:client) { double(:client) } let(:importer) { described_class.new(project, client) } + let(:due_on) { Time.new(2017, 2, 1, 12, 00) } let(:created_at) { Time.new(2017, 1, 1, 12, 00) } let(:updated_at) { Time.new(2017, 1, 1, 12, 15) } @@ -14,6 +15,7 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis title: '1.0', description: 'The first release', state: 'open', + due_on: due_on, created_at: created_at, updated_at: updated_at ) @@ -98,6 +100,10 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis expect(milestone_hash[:state]).to eq(:active) end + it 'includes the due date' do + expect(milestone_hash[:due_date]).to eq(due_on.to_date) + end + it 'includes the created timestamp' do expect(milestone_hash[:created_at]).to eq(created_at) end -- cgit v1.2.1 From 63b89f0485ea8ba3594b4858e3e5883f3bbab201 Mon Sep 17 00:00:00 2001 From: Diana Stanley Date: Tue, 26 Feb 2019 12:04:12 -0800 Subject: Protect against nil due_on value in imported data --- lib/gitlab/github_import/importer/milestones_importer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/github_import/importer/milestones_importer.rb b/lib/gitlab/github_import/importer/milestones_importer.rb index 8a5b3db9e08..71ff7465d9b 100644 --- a/lib/gitlab/github_import/importer/milestones_importer.rb +++ b/lib/gitlab/github_import/importer/milestones_importer.rb @@ -42,7 +42,7 @@ module Gitlab description: milestone.description, project_id: project.id, state: state_for(milestone), - due_date: milestone.due_on.to_date, + due_date: milestone.due_on&.to_date, created_at: milestone.created_at, updated_at: milestone.updated_at } -- cgit v1.2.1 From 46da2764ce37dc0fb43b86460fd98a5af330c434 Mon Sep 17 00:00:00 2001 From: Diana Stanley Date: Tue, 26 Feb 2019 16:57:01 -0800 Subject: Add test for nil due_on value during import --- .../importer/milestones_importer_spec.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb index 471f499dd19..35c37f9499d 100644 --- a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb +++ b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb @@ -21,6 +21,19 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis ) end + let(:milestone2) do + double( + :milestone, + number: 1, + title: '1.0', + description: 'The first release', + state: 'open', + due_on: nil, + created_at: created_at, + updated_at: updated_at + ) + end + describe '#execute' do it 'imports the milestones in bulk' do milestone_hash = { number: 1, title: '1.0' } @@ -114,6 +127,14 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis end end + describe '#nil_due_on' do + let(:milestone_hash) { importer.build(milestone2) } + + it 'should handle missing due_on correctly' do + expect(milestone_hash[:due_date]).to be nil + end + end + describe '#each_milestone' do it 'returns the milestones' do expect(client) -- cgit v1.2.1 From 9c498b10ee07388d36df468d9286631ff98c00b1 Mon Sep 17 00:00:00 2001 From: Diana Stanley Date: Wed, 27 Feb 2019 11:39:27 -0800 Subject: Move check for nil due_on into build section of spec --- .../github_import/importer/milestones_importer_spec.rb | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb index 35c37f9499d..120a07ff2b3 100644 --- a/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb +++ b/spec/lib/gitlab/github_import/importer/milestones_importer_spec.rb @@ -87,6 +87,7 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis describe '#build' do let(:milestone_hash) { importer.build(milestone) } + let(:milestone_hash2) { importer.build(milestone2) } it 'returns the attributes of the milestone as a Hash' do expect(milestone_hash).to be_an_instance_of(Hash) @@ -117,6 +118,10 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis expect(milestone_hash[:due_date]).to eq(due_on.to_date) end + it 'responds correctly to no due date value' do + expect(milestone_hash2[:due_date]).to be nil + end + it 'includes the created timestamp' do expect(milestone_hash[:created_at]).to eq(created_at) end @@ -127,14 +132,6 @@ describe Gitlab::GithubImport::Importer::MilestonesImporter, :clean_gitlab_redis end end - describe '#nil_due_on' do - let(:milestone_hash) { importer.build(milestone2) } - - it 'should handle missing due_on correctly' do - expect(milestone_hash[:due_date]).to be nil - end - end - describe '#each_milestone' do it 'returns the milestones' do expect(client) -- cgit v1.2.1