Import milestones from GitHub
This commit is contained in:
parent
17b60d6818
commit
06ec511164
|
@ -16,7 +16,8 @@ module Gitlab
|
|||
end
|
||||
|
||||
def execute
|
||||
import_labels && import_issues && import_pull_requests && import_wiki
|
||||
import_labels && import_milestones && import_issues &&
|
||||
import_pull_requests && import_wiki
|
||||
end
|
||||
|
||||
private
|
||||
|
@ -35,6 +36,16 @@ module Gitlab
|
|||
raise Projects::ImportService::Error, e.message
|
||||
end
|
||||
|
||||
def import_milestones
|
||||
client.list_milestones(project.import_source, state: :all).each do |raw_data|
|
||||
Milestone.create!(MilestoneFormatter.new(project, raw_data).attributes)
|
||||
end
|
||||
|
||||
true
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
raise Projects::ImportService::Error, e.message
|
||||
end
|
||||
|
||||
def import_issues
|
||||
client.list_issues(project.import_source, state: :all,
|
||||
sort: :created,
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
module Gitlab
|
||||
module GithubImport
|
||||
class MilestoneFormatter < BaseFormatter
|
||||
def attributes
|
||||
{
|
||||
iid: number,
|
||||
project: project,
|
||||
title: title,
|
||||
description: description,
|
||||
due_date: due_date,
|
||||
state: state,
|
||||
created_at: created_at,
|
||||
updated_at: updated_at
|
||||
}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def number
|
||||
raw_data.number
|
||||
end
|
||||
|
||||
def title
|
||||
raw_data.title
|
||||
end
|
||||
|
||||
def description
|
||||
raw_data.description
|
||||
end
|
||||
|
||||
def due_date
|
||||
raw_data.due_on
|
||||
end
|
||||
|
||||
def state
|
||||
raw_data.state == 'closed' ? 'closed' : 'active'
|
||||
end
|
||||
|
||||
def created_at
|
||||
raw_data.created_at
|
||||
end
|
||||
|
||||
def updated_at
|
||||
state == 'closed' ? raw_data.closed_at : raw_data.updated_at
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,82 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::GithubImport::MilestoneFormatter, lib: true do
|
||||
let(:project) { create(:empty_project) }
|
||||
let(:created_at) { DateTime.strptime('2011-01-26T19:01:12Z') }
|
||||
let(:updated_at) { DateTime.strptime('2011-01-27T19:01:12Z') }
|
||||
let(:base_data) do
|
||||
{
|
||||
number: 1347,
|
||||
state: 'open',
|
||||
title: '1.0',
|
||||
description: 'Version 1.0',
|
||||
due_on: nil,
|
||||
created_at: created_at,
|
||||
updated_at: updated_at,
|
||||
closed_at: nil
|
||||
}
|
||||
end
|
||||
|
||||
subject(:formatter) { described_class.new(project, raw_data)}
|
||||
|
||||
describe '#attributes' do
|
||||
context 'when milestone is open' do
|
||||
let(:raw_data) { double(base_data.merge(state: 'open')) }
|
||||
|
||||
it 'returns formatted attributes' do
|
||||
expected = {
|
||||
iid: 1347,
|
||||
project: project,
|
||||
title: '1.0',
|
||||
description: 'Version 1.0',
|
||||
state: 'active',
|
||||
due_date: nil,
|
||||
created_at: created_at,
|
||||
updated_at: updated_at
|
||||
}
|
||||
|
||||
expect(formatter.attributes).to eq(expected)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when milestone is closed' do
|
||||
let(:closed_at) { DateTime.strptime('2011-01-28T19:01:12Z') }
|
||||
let(:raw_data) { double(base_data.merge(state: 'closed', closed_at: closed_at)) }
|
||||
|
||||
it 'returns formatted attributes' do
|
||||
expected = {
|
||||
iid: 1347,
|
||||
project: project,
|
||||
title: '1.0',
|
||||
description: 'Version 1.0',
|
||||
state: 'closed',
|
||||
due_date: nil,
|
||||
created_at: created_at,
|
||||
updated_at: closed_at
|
||||
}
|
||||
|
||||
expect(formatter.attributes).to eq(expected)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when milestone has a due date' do
|
||||
let(:due_date) { DateTime.strptime('2011-01-28T19:01:12Z') }
|
||||
let(:raw_data) { double(base_data.merge(due_on: due_date)) }
|
||||
|
||||
it 'returns formatted attributes' do
|
||||
expected = {
|
||||
iid: 1347,
|
||||
project: project,
|
||||
title: '1.0',
|
||||
description: 'Version 1.0',
|
||||
state: 'active',
|
||||
due_date: due_date,
|
||||
created_at: created_at,
|
||||
updated_at: updated_at
|
||||
}
|
||||
|
||||
expect(formatter.attributes).to eq(expected)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue