mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-16 08:06:08 +10:00
Holding shift will allow users to click and select multiple lines. The behavior is similar to GitHub. Complete with tests.
58 lines
1.7 KiB
Ruby
58 lines
1.7 KiB
Ruby
class ProjectMultiselectBlob < Spinach::FeatureSteps
|
|
include SharedAuthentication
|
|
include SharedProject
|
|
include SharedPaths
|
|
|
|
class << self
|
|
def click_line_steps(*line_numbers)
|
|
line_numbers.each do |line_number|
|
|
step "I click line #{line_number} in file" do
|
|
find("#L#{line_number}").click
|
|
end
|
|
|
|
step "I shift-click line #{line_number} in file" do
|
|
script = "$('#L#{line_number}').trigger($.Event('click', { shiftKey: true }));"
|
|
page.evaluate_script(script)
|
|
end
|
|
end
|
|
end
|
|
|
|
def check_state_steps(*ranges)
|
|
ranges.each do |range|
|
|
fragment = range.kind_of?(Array) ? "L#{range.first}-#{range.last}" : "L#{range}"
|
|
pluralization = range.kind_of?(Array) ? "s" : ""
|
|
|
|
step "I should see \"#{fragment}\" as URI fragment" do
|
|
URI.parse(current_url).fragment.should == fragment
|
|
end
|
|
|
|
step "I should see line#{pluralization} #{fragment[1..-1]} highlighted" do
|
|
ids = Array(range).map { |n| "LC#{n}" }
|
|
extra = false
|
|
|
|
highlighted = all("#tree-content-holder .highlight .line.hll")
|
|
highlighted.each do |element|
|
|
extra ||= ids.delete(element[:id]).nil?
|
|
end
|
|
|
|
extra.should be_false and ids.should be_empty
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
click_line_steps *Array(1..5)
|
|
check_state_steps *Array(1..5), Array(1..2), Array(1..3), Array(1..4), Array(1..5), Array(3..5)
|
|
|
|
step 'I go back in history' do
|
|
page.evaluate_script("window.history.back()")
|
|
end
|
|
|
|
step 'I go forward in history' do
|
|
page.evaluate_script("window.history.forward()")
|
|
end
|
|
|
|
step 'I click on "Gemfile.lock" file in repo' do
|
|
click_link "Gemfile.lock"
|
|
end
|
|
end |