Make issue tracker service fields required.
This commit is contained in:
parent
00a0d5aeea
commit
33913f9b8f
4 changed files with 91 additions and 4 deletions
|
@ -319,7 +319,7 @@ class Project < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def external_issues_trackers
|
def external_issues_trackers
|
||||||
services.select { |service| service.category == :issue_tracker }
|
services.select { |service| service.issue_tracker? }
|
||||||
end
|
end
|
||||||
|
|
||||||
def external_issue_tracker
|
def external_issue_tracker
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
class IssueTrackerService < Service
|
class IssueTrackerService < Service
|
||||||
|
|
||||||
|
validates :project_url, :issues_url, :new_issue_url, presence: true, if: :activated?
|
||||||
|
|
||||||
def category
|
def category
|
||||||
:issue_tracker
|
:issue_tracker
|
||||||
end
|
end
|
||||||
|
@ -34,6 +36,8 @@ class IssueTrackerService < Service
|
||||||
issues_url: issues_tracker['issues_url'],
|
issues_url: issues_tracker['issues_url'],
|
||||||
new_issue_url: issues_tracker['new_issue_url']
|
new_issue_url: issues_tracker['new_issue_url']
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
self.properties = {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -80,9 +80,9 @@ FactoryGirl.define do
|
||||||
project.create_redmine_service(
|
project.create_redmine_service(
|
||||||
active: true,
|
active: true,
|
||||||
properties: {
|
properties: {
|
||||||
project_url: 'http://redmine/projects/project_name_in_redmine',
|
'project_url' => 'http://redmine/projects/project_name_in_redmine',
|
||||||
issues_url: "http://redmine/#{project.id}/project_name_in_redmine/:id",
|
'issues_url' => "http://redmine/#{project.id}/project_name_in_redmine/:id",
|
||||||
new_issue_url: 'http://redmine/projects/project_name_in_redmine/issues/new'
|
'new_issue_url' => 'http://redmine/projects/project_name_in_redmine/issues/new'
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
83
spec/models/jira_service_spec.rb
Normal file
83
spec/models/jira_service_spec.rb
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe JiraService do
|
||||||
|
describe "Associations" do
|
||||||
|
it { should belong_to :project }
|
||||||
|
it { should have_one :service_hook }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "Validations" do
|
||||||
|
context "active" do
|
||||||
|
before do
|
||||||
|
subject.active = true
|
||||||
|
end
|
||||||
|
|
||||||
|
it { should validate_presence_of :project_url }
|
||||||
|
it { should validate_presence_of :issues_url }
|
||||||
|
it { should validate_presence_of :new_issue_url }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'description and title' do
|
||||||
|
let(:project) { create(:project) }
|
||||||
|
|
||||||
|
context 'when it is not set' do
|
||||||
|
before do
|
||||||
|
@service = project.create_jira_service(active: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
@service.destroy!
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be initialized' do
|
||||||
|
expect(@service.title).to eq('JIRA')
|
||||||
|
expect(@service.description).to eq("Jira issue tracker")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when it is set' do
|
||||||
|
before do
|
||||||
|
properties = { 'title' => 'Jira One', 'description' => 'Jira One issue tracker' }
|
||||||
|
@service = project.create_jira_service(active: true, properties: properties)
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
@service.destroy!
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should be correct" do
|
||||||
|
expect(@service.title).to eq('Jira One')
|
||||||
|
expect(@service.description).to eq('Jira One issue tracker')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'project and issue urls' do
|
||||||
|
let(:project) { create(:project) }
|
||||||
|
|
||||||
|
context 'when gitlab.yml was initialized' do
|
||||||
|
before do
|
||||||
|
settings = { "jira" => {
|
||||||
|
"title" => "Jira",
|
||||||
|
"project_url" => "http://jira.sample/projects/project_a",
|
||||||
|
"issues_url" => "http://jira.sample/issues/:id",
|
||||||
|
"new_issue_url" => "http://jira.sample/projects/project_a/issues/new"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Gitlab.config.stub(:issues_tracker).and_return(settings)
|
||||||
|
@service = project.create_jira_service(active: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
@service.destroy!
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should be prepopulated with the settings' do
|
||||||
|
expect(@service.properties[:project_url]).to eq('http://jira.sample/projects/project_a')
|
||||||
|
expect(@service.properties[:issues_url]).to eq("http://jira.sample/issues/:id")
|
||||||
|
expect(@service.properties[:new_issue_url]).to eq("http://jira.sample/projects/project_a/issues/new")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue