Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
884baf26
Commit
884baf26
authored
Aug 18, 2016
by
Luke Bennett
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replaced all `first` with `match:` equivalents
parent
fb84439a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
163 additions
and
0 deletions
+163
-0
spec/features/merge_requests/diff_notes_spec.rb
spec/features/merge_requests/diff_notes_spec.rb
+163
-0
No files found.
spec/features/merge_requests/diff_notes_spec.rb
0 → 100644
View file @
884baf26
require
'spec_helper'
feature
'Diff notes'
,
js:
true
,
feature:
true
do
include
WaitForAjax
before
do
login_as
:admin
@merge_request
=
create
(
:merge_request
)
@project
=
@merge_request
.
source_project
end
context
'merge request diffs'
do
let
(
:comment_button_class
)
{
'.add-diff-note'
}
let
(
:notes_holder_input_class
)
{
'js-temp-notes-holder'
}
let
(
:notes_holder_input_xpath
)
{
'./following-sibling::*[contains(concat(" ", @class, " "), " notes_holder ")]'
}
let
(
:test_note_comment
)
{
'this is a test note!'
}
context
'when hovering over the parallel view diff file'
do
before
(
:each
)
do
visit
diffs_namespace_project_merge_request_path
(
@project
.
namespace
,
@project
,
@merge_request
)
click_link
'Side-by-side'
end
context
'with an old line on the left and no line on the right'
do
it
'should allow commenting on the left side'
do
should_allow_commenting
(
find
(
'[id="6eb14e00385d2fb284765eb1cd8d420d33d63fc9_23_22"]'
).
find
(
:xpath
,
'..'
),
'left'
)
end
it
'should not allow commenting on the right side'
do
should_not_allow_commenting
(
find
(
'[id="6eb14e00385d2fb284765eb1cd8d420d33d63fc9_23_22"]'
).
find
(
:xpath
,
'..'
),
'right'
)
end
end
context
'with no line on the left and a new line on the right'
do
it
'should not allow commenting on the left side'
do
should_not_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_15_15"]'
).
find
(
:xpath
,
'..'
),
'left'
)
end
it
'should allow commenting on the right side'
do
should_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_15_15"]'
).
find
(
:xpath
,
'..'
),
'right'
)
end
end
context
'with an old line on the left and a new line on the right'
do
it
'should allow commenting on the left side'
do
should_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_9_9"]'
).
find
(
:xpath
,
'..'
),
'left'
)
end
it
'should allow commenting on the right side'
do
should_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_9_9"]'
).
find
(
:xpath
,
'..'
),
'right'
)
end
end
context
'with an unchanged line on the left and an unchanged line on the right'
do
it
'should allow commenting on the left side'
do
should_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_7_7"]'
,
match: :first
).
find
(
:xpath
,
'..'
),
'left'
)
end
it
'should allow commenting on the right side'
do
should_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_7_7"]'
,
match: :first
).
find
(
:xpath
,
'..'
),
'right'
)
end
end
context
'with a match line'
do
it
'should not allow commenting on the left side'
do
should_not_allow_commenting
(
find
(
'.match'
,
match: :first
).
find
(
:xpath
,
'..'
),
'left'
)
end
it
'should not allow commenting on the right side'
do
should_not_allow_commenting
(
find
(
'.match'
,
match: :first
).
find
(
:xpath
,
'..'
),
'right'
)
end
end
end
context
'when hovering over the inline view diff file'
do
before
do
visit
diffs_namespace_project_merge_request_path
(
@project
.
namespace
,
@project
,
@merge_request
)
click_link
'Inline'
end
context
'with a new line'
do
it
'should allow commenting'
do
should_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_10_9"]'
))
end
end
context
'with an old line'
do
it
'should allow commenting'
do
should_allow_commenting
(
find
(
'[id="6eb14e00385d2fb284765eb1cd8d420d33d63fc9_22_22"]'
))
end
end
context
'with an unchanged line'
do
it
'should allow commenting'
do
should_allow_commenting
(
find
(
'[id="2f6fcd96b88b36ce98c38da085c795a27d92a3dd_7_7"]'
))
end
end
context
'with a match line'
do
it
'should not allow commenting'
do
should_not_allow_commenting
(
find
(
'.match'
,
match: :first
))
end
end
end
def
should_allow_commenting
(
line_holder
,
diff_side
=
nil
)
line
=
get_line_components
(
line_holder
,
diff_side
)
line
[
:content
].
hover
expect
(
line
[
:num
]).
to
have_css
comment_button_class
comment_on_line
(
line_holder
,
line
)
wait_for_ajax
assert_comment_persistence
(
line_holder
)
end
def
should_not_allow_commenting
(
line_holder
,
diff_side
=
nil
)
line
=
get_line_components
(
line_holder
,
diff_side
)
line
[
:content
].
hover
expect
(
line
[
:num
]).
not_to
have_css
comment_button_class
end
def
get_line_components
(
line_holder
,
diff_side
=
nil
)
if
diff_side
.
nil?
get_inline_line_components
(
line_holder
)
else
get_parallel_line_components
(
line_holder
,
diff_side
)
end
end
def
get_inline_line_components
(
line_holder
)
{
content:
line_holder
.
find
(
'.line_content'
,
match: :first
),
num:
line_holder
.
find
(
'.diff-line-num'
,
match: :first
)
}
end
def
get_parallel_line_components
(
line_holder
,
diff_side
=
nil
)
side_index
=
diff_side
==
'left'
?
0
:
1
# Wait for `.line_content`
line_holder
.
find
(
'.line_content'
,
match: :first
)
# Wait for `.diff-line-num`
line_holder
.
find
(
'.diff-line-num'
,
match: :first
)
{
content:
line_holder
.
all
(
'.line_content'
)[
side_index
],
num:
line_holder
.
all
(
'.diff-line-num'
)[
side_index
]
}
end
def
comment_on_line
(
line_holder
,
line
)
line
[
:num
].
find
(
comment_button_class
).
trigger
'click'
line_holder
.
find
(
:xpath
,
notes_holder_input_xpath
)
notes_holder_input
=
line_holder
.
find
(
:xpath
,
notes_holder_input_xpath
)
expect
(
notes_holder_input
[
:class
]).
to
include
(
notes_holder_input_class
)
notes_holder_input
.
fill_in
'note[note]'
,
with:
test_note_comment
click_button
'Comment'
end
def
assert_comment_persistence
(
line_holder
)
expect
(
line_holder
).
to
have_xpath
notes_holder_input_xpath
notes_holder_saved
=
line_holder
.
find
(
:xpath
,
notes_holder_input_xpath
)
expect
(
notes_holder_saved
[
:class
]).
not_to
include
(
notes_holder_input_class
)
expect
(
notes_holder_saved
).
to
have_content
test_note_comment
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment