Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
6bc3edee
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6bc3edee
编写于
10月 08, 2016
作者:
L
Luis Del Giudice
提交者:
Adam Niedzielski
3月 10, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Prevent more than one issue tracker to be active for the same project
上级
81ad6111
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
49 addition
and
1 deletion
+49
-1
app/controllers/projects/services_controller.rb
app/controllers/projects/services_controller.rb
+2
-1
app/models/project_services/issue_tracker_service.rb
app/models/project_services/issue_tracker_service.rb
+11
-0
changelogs/unreleased/adam-prevent-two-issue-trackers.yml
changelogs/unreleased/adam-prevent-two-issue-trackers.yml
+4
-0
spec/models/project_services/issue_tracker_service_spec.rb
spec/models/project_services/issue_tracker_service_spec.rb
+32
-0
未找到文件。
app/controllers/projects/services_controller.rb
浏览文件 @
6bc3edee
...
...
@@ -13,7 +13,8 @@ class Projects::ServicesController < Projects::ApplicationController
end
def
update
if
@service
.
update_attributes
(
service_params
[
:service
])
@service
.
assign_attributes
(
service_params
[
:service
])
if
@service
.
save
(
context: :manual_change
)
redirect_to
(
edit_namespace_project_service_path
(
@project
.
namespace
,
@project
,
@service
.
to_param
),
notice:
'Successfully updated.'
...
...
app/models/project_services/issue_tracker_service.rb
浏览文件 @
6bc3edee
class
IssueTrackerService
<
Service
validate
:one_issue_tracker
,
if: :activated?
,
on: :manual_change
default_value_for
:category
,
'issue_tracker'
# Pattern used to extract links from comments
...
...
@@ -92,4 +94,13 @@ class IssueTrackerService < Service
def
issues_tracker
Gitlab
.
config
.
issues_tracker
[
to_param
]
end
def
one_issue_tracker
return
if
template?
return
if
project
.
blank?
if
project
.
services
.
external_issue_trackers
.
where
.
not
(
id:
id
).
any?
errors
.
add
(
:base
,
'Another issue tracker is already in use. Only one issue tracker service can be active at a time'
)
end
end
end
changelogs/unreleased/adam-prevent-two-issue-trackers.yml
0 → 100644
浏览文件 @
6bc3edee
---
title
:
Prevent more than one issue tracker to be active for the same project
merge_request
:
author
:
luisdgs19
spec/models/project_services/issue_tracker_service_spec.rb
0 → 100644
浏览文件 @
6bc3edee
require
'spec_helper'
describe
IssueTrackerService
,
models:
true
do
describe
'Validations'
do
let
(
:project
)
{
create
:project
}
describe
'only one issue tracker per project'
do
let
(
:service
)
{
RedmineService
.
new
(
project:
project
,
active:
true
)
}
before
do
create
(
:service
,
project:
project
,
active:
true
,
category:
'issue_tracker'
)
end
context
'when service is changed manually by user'
do
it
'executes the validation'
do
valid
=
service
.
valid?
(
:manual_change
)
expect
(
valid
).
to
be_falsey
expect
(
service
.
errors
[
:base
]).
to
include
(
'Another issue tracker is already in use. Only one issue tracker service can be active at a time'
)
end
end
context
'when service is changed internally'
do
it
'does not execute the validation'
do
expect
(
service
.
valid?
).
to
be_truthy
end
end
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录