Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
ecda9240
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,发现更多精彩内容 >>
提交
ecda9240
编写于
4月 05, 2019
作者:
P
Phil Hughes
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'ide-fix-detect-mr-from-fork' into 'master'
IDE fix MR detection from fork See merge request gitlab-org/gitlab-ce!26986
上级
ff648879
59ac0924
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
68 addition
and
37 deletion
+68
-37
app/assets/javascripts/ide/stores/actions/merge_request.js
app/assets/javascripts/ide/stores/actions/merge_request.js
+2
-1
app/finders/merge_requests_finder.rb
app/finders/merge_requests_finder.rb
+12
-1
changelogs/unreleased/ide-fix-detect-mr-from-fork.yml
changelogs/unreleased/ide-fix-detect-mr-from-fork.yml
+5
-0
lib/api/merge_requests.rb
lib/api/merge_requests.rb
+1
-0
spec/finders/merge_requests_finder_spec.rb
spec/finders/merge_requests_finder_spec.rb
+8
-0
spec/javascripts/ide/stores/actions/merge_request_spec.js
spec/javascripts/ide/stores/actions/merge_request_spec.js
+40
-35
未找到文件。
app/assets/javascripts/ide/stores/actions/merge_request.js
浏览文件 @
ecda9240
...
...
@@ -4,10 +4,11 @@ import service from '../../services';
import
*
as
types
from
'
../mutation_types
'
;
import
{
activityBarViews
}
from
'
../../constants
'
;
export
const
getMergeRequestsForBranch
=
({
commit
},
{
projectId
,
branchId
}
=
{})
=>
export
const
getMergeRequestsForBranch
=
({
commit
,
state
},
{
projectId
,
branchId
}
=
{})
=>
service
.
getProjectMergeRequests
(
`
${
projectId
}
`
,
{
source_branch
:
branchId
,
source_project_id
:
state
.
projects
[
projectId
].
id
,
order_by
:
'
created_at
'
,
per_page
:
1
,
})
...
...
app/finders/merge_requests_finder.rb
浏览文件 @
ecda9240
...
...
@@ -40,7 +40,8 @@ class MergeRequestsFinder < IssuableFinder
items
=
by_commit
(
super
)
items
=
by_source_branch
(
items
)
items
=
by_wip
(
items
)
by_target_branch
(
items
)
items
=
by_target_branch
(
items
)
by_source_project_id
(
items
)
end
private
...
...
@@ -74,6 +75,16 @@ class MergeRequestsFinder < IssuableFinder
items
.
where
(
target_branch:
target_branch
)
end
def
source_project_id
@source_project_id
||=
params
[
:source_project_id
].
presence
end
def
by_source_project_id
(
items
)
return
items
unless
source_project_id
items
.
where
(
source_project_id:
source_project_id
)
end
def
by_wip
(
items
)
if
params
[
:wip
]
==
'yes'
items
.
where
(
wip_match
(
items
.
arel_table
))
...
...
changelogs/unreleased/ide-fix-detect-mr-from-fork.yml
0 → 100644
浏览文件 @
ecda9240
---
title
:
Fix IDE detection of MR from fork with same branch name
merge_request
:
26986
author
:
type
:
fixed
lib/api/merge_requests.rb
浏览文件 @
ecda9240
...
...
@@ -111,6 +111,7 @@ module API
desc:
'Return merge requests for the given scope: `created_by_me`, `assigned_to_me` or `all`'
optional
:my_reaction_emoji
,
type:
String
,
desc:
'Return issues reacted by the authenticated user by the given emoji'
optional
:source_branch
,
type:
String
,
desc:
'Return merge requests with the given source branch'
optional
:source_project_id
,
type:
Integer
,
desc:
'Return merge requests with the given source project id'
optional
:target_branch
,
type:
String
,
desc:
'Return merge requests with the given target branch'
optional
:search
,
type:
String
,
desc:
'Search merge requests for text present in the title, description, or any combination of these'
optional
:in
,
type:
String
,
desc:
'`title`, `description`, or a string joining them with comma'
...
...
spec/finders/merge_requests_finder_spec.rb
浏览文件 @
ecda9240
...
...
@@ -83,6 +83,14 @@ describe MergeRequestsFinder do
expect
(
merge_requests
).
to
contain_exactly
(
merge_request2
)
end
it
'filters by source project id'
do
params
=
{
source_project_id:
merge_request2
.
source_project_id
}
merge_requests
=
described_class
.
new
(
user
,
params
).
execute
expect
(
merge_requests
).
to
contain_exactly
(
merge_request1
,
merge_request2
,
merge_request3
)
end
it
'filters by state'
do
params
=
{
state:
'locked'
}
...
...
spec/javascripts/ide/stores/actions/merge_request_spec.js
浏览文件 @
ecda9240
...
...
@@ -2,7 +2,6 @@ import MockAdapter from 'axios-mock-adapter';
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
store
from
'
~/ide/stores
'
;
import
actions
,
{
getMergeRequestsForBranch
,
getMergeRequestData
,
getMergeRequestChanges
,
getMergeRequestVersions
,
...
...
@@ -12,13 +11,17 @@ import service from '~/ide/services';
import
{
activityBarViews
}
from
'
~/ide/constants
'
;
import
{
resetStore
}
from
'
../../helpers
'
;
const
TEST_PROJECT
=
'
abcproject
'
;
const
TEST_PROJECT_ID
=
17
;
describe
(
'
IDE store merge request actions
'
,
()
=>
{
let
mock
;
beforeEach
(()
=>
{
mock
=
new
MockAdapter
(
axios
);
store
.
state
.
projects
.
abcproject
=
{
store
.
state
.
projects
[
TEST_PROJECT
]
=
{
id
:
TEST_PROJECT_ID
,
mergeRequests
:
{},
};
});
...
...
@@ -41,10 +44,11 @@ describe('IDE store merge request actions', () => {
it
(
'
calls getProjectMergeRequests service method
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
'
abcproject
'
,
branchId
:
'
bar
'
})
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
TEST_PROJECT
,
branchId
:
'
bar
'
})
.
then
(()
=>
{
expect
(
service
.
getProjectMergeRequests
).
toHaveBeenCalledWith
(
'
abcproject
'
,
{
expect
(
service
.
getProjectMergeRequests
).
toHaveBeenCalledWith
(
TEST_PROJECT
,
{
source_branch
:
'
bar
'
,
source_project_id
:
TEST_PROJECT_ID
,
order_by
:
'
created_at
'
,
per_page
:
1
,
});
...
...
@@ -56,13 +60,11 @@ describe('IDE store merge request actions', () => {
it
(
'
sets the "Merge Request" Object
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
'
abcproject
'
,
branchId
:
'
bar
'
})
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
TEST_PROJECT
,
branchId
:
'
bar
'
})
.
then
(()
=>
{
expect
(
Object
.
keys
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
).
length
).
toEqual
(
1
);
expect
(
Object
.
keys
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
)[
0
]).
toEqual
(
'
2
'
);
expect
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
[
2
]).
toEqual
(
jasmine
.
objectContaining
(
mrData
),
);
expect
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
).
toEqual
({
'
2
'
:
jasmine
.
objectContaining
(
mrData
),
});
done
();
})
.
catch
(
done
.
fail
);
...
...
@@ -70,7 +72,7 @@ describe('IDE store merge request actions', () => {
it
(
'
sets "Current Merge Request" object to the most recent MR
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
'
abcproject
'
,
branchId
:
'
bar
'
})
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
TEST_PROJECT
,
branchId
:
'
bar
'
})
.
then
(()
=>
{
expect
(
store
.
state
.
currentMergeRequestId
).
toEqual
(
'
2
'
);
done
();
...
...
@@ -87,9 +89,9 @@ describe('IDE store merge request actions', () => {
it
(
'
does not fail if there are no merge requests for current branch
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
'
abcproject
'
,
branchId
:
'
foo
'
})
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
TEST_PROJECT
,
branchId
:
'
foo
'
})
.
then
(()
=>
{
expect
(
Object
.
keys
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
).
length
).
toEqual
(
0
);
expect
(
store
.
state
.
projects
[
TEST_PROJECT
].
mergeRequests
).
toEqual
({}
);
expect
(
store
.
state
.
currentMergeRequestId
).
toEqual
(
''
);
done
();
})
...
...
@@ -106,7 +108,8 @@ describe('IDE store merge request actions', () => {
it
(
'
flashes message, if error
'
,
done
=>
{
const
flashSpy
=
spyOnDependency
(
actions
,
'
flash
'
);
getMergeRequestsForBranch
({
commit
()
{}
},
{
projectId
:
'
abcproject
'
,
branchId
:
'
bar
'
})
store
.
dispatch
(
'
getMergeRequestsForBranch
'
,
{
projectId
:
TEST_PROJECT
,
branchId
:
'
bar
'
})
.
then
(()
=>
{
fail
(
'
Expected getMergeRequestsForBranch to throw an error
'
);
})
...
...
@@ -132,9 +135,9 @@ describe('IDE store merge request actions', () => {
it
(
'
calls getProjectMergeRequestData service method
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestData
'
,
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
})
.
dispatch
(
'
getMergeRequestData
'
,
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
})
.
then
(()
=>
{
expect
(
service
.
getProjectMergeRequestData
).
toHaveBeenCalledWith
(
'
abcproject
'
,
1
,
{
expect
(
service
.
getProjectMergeRequestData
).
toHaveBeenCalledWith
(
TEST_PROJECT
,
1
,
{
render_html
:
true
,
});
...
...
@@ -145,10 +148,12 @@ describe('IDE store merge request actions', () => {
it
(
'
sets the Merge Request Object
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestData
'
,
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
})
.
dispatch
(
'
getMergeRequestData
'
,
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
})
.
then
(()
=>
{
expect
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
[
'
1
'
].
title
).
toBe
(
'
mergerequest
'
);
expect
(
store
.
state
.
currentMergeRequestId
).
toBe
(
1
);
expect
(
store
.
state
.
projects
[
TEST_PROJECT
].
mergeRequests
[
'
1
'
].
title
).
toBe
(
'
mergerequest
'
,
);
done
();
})
...
...
@@ -170,7 +175,7 @@ describe('IDE store merge request actions', () => {
dispatch
,
state
:
store
.
state
,
},
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
},
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
},
)
.
then
(
done
.
fail
)
.
catch
(()
=>
{
...
...
@@ -179,7 +184,7 @@ describe('IDE store merge request actions', () => {
action
:
jasmine
.
any
(
Function
),
actionText
:
'
Please try again
'
,
actionPayload
:
{
projectId
:
'
abcproject
'
,
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
,
force
:
false
,
},
...
...
@@ -193,7 +198,7 @@ describe('IDE store merge request actions', () => {
describe
(
'
getMergeRequestChanges
'
,
()
=>
{
beforeEach
(()
=>
{
store
.
state
.
projects
.
abcproject
.
mergeRequests
[
'
1
'
]
=
{
changes
:
[]
};
store
.
state
.
projects
[
TEST_PROJECT
]
.
mergeRequests
[
'
1
'
]
=
{
changes
:
[]
};
});
describe
(
'
success
'
,
()
=>
{
...
...
@@ -207,9 +212,9 @@ describe('IDE store merge request actions', () => {
it
(
'
calls getProjectMergeRequestChanges service method
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestChanges
'
,
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
})
.
dispatch
(
'
getMergeRequestChanges
'
,
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
})
.
then
(()
=>
{
expect
(
service
.
getProjectMergeRequestChanges
).
toHaveBeenCalledWith
(
'
abcproject
'
,
1
);
expect
(
service
.
getProjectMergeRequestChanges
).
toHaveBeenCalledWith
(
TEST_PROJECT
,
1
);
done
();
})
...
...
@@ -218,9 +223,9 @@ describe('IDE store merge request actions', () => {
it
(
'
sets the Merge Request Changes Object
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestChanges
'
,
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
})
.
dispatch
(
'
getMergeRequestChanges
'
,
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
})
.
then
(()
=>
{
expect
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
[
'
1
'
].
changes
.
title
).
toBe
(
expect
(
store
.
state
.
projects
[
TEST_PROJECT
]
.
mergeRequests
[
'
1
'
].
changes
.
title
).
toBe
(
'
mergerequest
'
,
);
done
();
...
...
@@ -243,7 +248,7 @@ describe('IDE store merge request actions', () => {
dispatch
,
state
:
store
.
state
,
},
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
},
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
},
)
.
then
(
done
.
fail
)
.
catch
(()
=>
{
...
...
@@ -252,7 +257,7 @@ describe('IDE store merge request actions', () => {
action
:
jasmine
.
any
(
Function
),
actionText
:
'
Please try again
'
,
actionPayload
:
{
projectId
:
'
abcproject
'
,
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
,
force
:
false
,
},
...
...
@@ -266,7 +271,7 @@ describe('IDE store merge request actions', () => {
describe
(
'
getMergeRequestVersions
'
,
()
=>
{
beforeEach
(()
=>
{
store
.
state
.
projects
.
abcproject
.
mergeRequests
[
'
1
'
]
=
{
versions
:
[]
};
store
.
state
.
projects
[
TEST_PROJECT
]
.
mergeRequests
[
'
1
'
]
=
{
versions
:
[]
};
});
describe
(
'
success
'
,
()
=>
{
...
...
@@ -279,9 +284,9 @@ describe('IDE store merge request actions', () => {
it
(
'
calls getProjectMergeRequestVersions service method
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestVersions
'
,
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
})
.
dispatch
(
'
getMergeRequestVersions
'
,
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
})
.
then
(()
=>
{
expect
(
service
.
getProjectMergeRequestVersions
).
toHaveBeenCalledWith
(
'
abcproject
'
,
1
);
expect
(
service
.
getProjectMergeRequestVersions
).
toHaveBeenCalledWith
(
TEST_PROJECT
,
1
);
done
();
})
...
...
@@ -290,9 +295,9 @@ describe('IDE store merge request actions', () => {
it
(
'
sets the Merge Request Versions Object
'
,
done
=>
{
store
.
dispatch
(
'
getMergeRequestVersions
'
,
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
})
.
dispatch
(
'
getMergeRequestVersions
'
,
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
})
.
then
(()
=>
{
expect
(
store
.
state
.
projects
.
abcproject
.
mergeRequests
[
'
1
'
].
versions
.
length
).
toBe
(
1
);
expect
(
store
.
state
.
projects
[
TEST_PROJECT
]
.
mergeRequests
[
'
1
'
].
versions
.
length
).
toBe
(
1
);
done
();
})
.
catch
(
done
.
fail
);
...
...
@@ -313,7 +318,7 @@ describe('IDE store merge request actions', () => {
dispatch
,
state
:
store
.
state
,
},
{
projectId
:
'
abcproject
'
,
mergeRequestId
:
1
},
{
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
},
)
.
then
(
done
.
fail
)
.
catch
(()
=>
{
...
...
@@ -322,7 +327,7 @@ describe('IDE store merge request actions', () => {
action
:
jasmine
.
any
(
Function
),
actionText
:
'
Please try again
'
,
actionPayload
:
{
projectId
:
'
abcproject
'
,
projectId
:
TEST_PROJECT
,
mergeRequestId
:
1
,
force
:
false
,
},
...
...
@@ -336,7 +341,7 @@ describe('IDE store merge request actions', () => {
describe
(
'
openMergeRequest
'
,
()
=>
{
const
mr
=
{
projectId
:
'
abcproject
'
,
projectId
:
TEST_PROJECT
,
targetProjectId
:
'
defproject
'
,
mergeRequestId
:
2
,
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录