2016-02-22 23:59:13 +00:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Gitlab::BitbucketImport::Importer, lib: true do
|
2016-06-08 14:49:01 +00:00
|
|
|
include ImportSpecHelper
|
|
|
|
|
2016-02-22 23:59:13 +00:00
|
|
|
before do
|
2016-06-08 14:49:01 +00:00
|
|
|
stub_omniauth_provider('bitbucket')
|
2016-02-22 23:59:13 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
let(:statuses) do
|
|
|
|
[
|
|
|
|
"open",
|
|
|
|
"resolved",
|
|
|
|
"on hold",
|
|
|
|
"invalid",
|
|
|
|
"duplicate",
|
|
|
|
"wontfix",
|
|
|
|
"closed" # undocumented status
|
|
|
|
]
|
|
|
|
end
|
|
|
|
let(:sample_issues_statuses) do
|
|
|
|
issues = []
|
|
|
|
|
|
|
|
statuses.map.with_index do |status, index|
|
|
|
|
issues << {
|
|
|
|
local_id: index,
|
|
|
|
status: status,
|
|
|
|
title: "Issue #{index}",
|
|
|
|
content: "Some content to issue #{index}"
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
issues
|
|
|
|
end
|
|
|
|
|
|
|
|
let(:project_identifier) { 'namespace/repo' }
|
|
|
|
let(:data) do
|
|
|
|
{
|
2016-03-22 16:53:53 +00:00
|
|
|
'bb_session' => {
|
|
|
|
'bitbucket_access_token' => "123456",
|
|
|
|
'bitbucket_access_token_secret' => "secret"
|
2016-02-22 23:59:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
end
|
|
|
|
let(:project) do
|
|
|
|
create(
|
|
|
|
:project,
|
|
|
|
import_source: project_identifier,
|
2016-03-22 16:53:53 +00:00
|
|
|
import_data: ProjectImportData.new(credentials: data)
|
2016-02-22 23:59:13 +00:00
|
|
|
)
|
|
|
|
end
|
|
|
|
let(:importer) { Gitlab::BitbucketImport::Importer.new(project) }
|
|
|
|
let(:issues_statuses_sample_data) do
|
|
|
|
{
|
|
|
|
count: sample_issues_statuses.count,
|
|
|
|
issues: sample_issues_statuses
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'issues statuses' do
|
|
|
|
before do
|
|
|
|
stub_request(
|
|
|
|
:get,
|
|
|
|
"https://bitbucket.org/api/1.0/repositories/#{project_identifier}"
|
|
|
|
).to_return(status: 200, body: { has_issues: true }.to_json)
|
|
|
|
|
|
|
|
stub_request(
|
|
|
|
:get,
|
|
|
|
"https://bitbucket.org/api/1.0/repositories/#{project_identifier}/issues?limit=50&sort=utc_created_on&start=0"
|
|
|
|
).to_return(status: 200, body: issues_statuses_sample_data.to_json)
|
|
|
|
|
|
|
|
sample_issues_statuses.each_with_index do |issue, index|
|
|
|
|
stub_request(
|
|
|
|
:get,
|
|
|
|
"https://bitbucket.org/api/1.0/repositories/#{project_identifier}/issues/#{issue[:local_id]}/comments"
|
|
|
|
).to_return(
|
|
|
|
status: 200,
|
|
|
|
body: [{ author_info: { username: "username" }, utc_created_on: index }].to_json
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'map statuses to open or closed' do
|
|
|
|
importer.execute
|
|
|
|
|
|
|
|
expect(project.issues.where(state: "closed").size).to eq(5)
|
|
|
|
expect(project.issues.where(state: "opened").size).to eq(2)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|