6 class QuickEditPage < Page
7 def initialize(driver, base_url, project, before_page)
8 super(driver, base_url, project)
10 @before_page = before_page
12 find_element :id, "quick_edit_context"
15 def view_menu_item(issue_id, menu_selector)
16 menu_element = find_element(:id, "quick_edit_context")
17 menu_item_element = find_element(:css, menu_selector)
18 action.move_to(menu_element).perform
20 find_element(:css, menu_selector)
23 def update_field(issue_id, menu_selector, new_value, desire_alerting = false)
24 menu_element = find_element(:id, "quick_edit_context")
25 menu_item_element = find_element(:css, menu_selector)
26 action.move_to(menu_element).click(menu_item_element).perform
28 input_text :id, "new_value", new_value
30 buttons = find_elements(:css, "button > span")
31 submit_button = buttons.select {|button| button.text =~ /Submit/}
32 submit_button.first.click
34 @before_page.class.open @driver, @base_url, @project unless desire_alerting
37 def clear_field(issue_id, menu_selector)
38 menu_element = find_element(:id, "quick_edit_context")
39 menu_item_element = find_element(:css, menu_selector)
40 action.move_to(menu_element).click(menu_item_element).perform
42 find_element(:css, '#quick_edit_input_dialog #clear').click
44 buttons = find_elements(:css, "button > span")
45 submit_button = buttons.select {|button| button.text =~ /Submit/}
46 submit_button.first.click
48 @before_page.class.open @driver, @base_url, @project
51 def preview_replace(issue_id, menu_selector, find_value, replace_value, match_case, desire_alerting = false)
52 menu_element = find_element(:id, "quick_edit_context")
53 menu_item_element = find_element(:css, menu_selector)
54 action.move_to(menu_element).click(menu_item_element).perform
56 click :id, :replace_switcher
58 input_text :id, :find, find_value
59 input_text :id, :replace, replace_value
60 click :id, :match_case if match_case
62 buttons = find_elements(:css, "button > span")
63 submit_button = buttons.select {|button| button.text =~ /Preview/}
64 submit_button.first.click
66 @before_page.class.open @driver, @base_url, @project unless desire_alerting
69 def get_replace_preview()
70 rows = find_elements(:css, "preview_area tbody tr")
72 previews = rows.map do |row|
73 id = row.find_element(:class, ".id").text
74 old = row.find_element(:class, ".old").text
75 new = row.find_element(:class, ".new").text
76 { :id => id, :old => old, :new => new }
80 def replace(issue_id, menu_selector, find_value, replace_value, match_case, desire_alerting = false)
81 menu_element = find_element(:id, "quick_edit_context")
82 menu_item_element = find_element(:css, menu_selector)
83 action.move_to(menu_element).click(menu_item_element).perform
85 click :id, :replace_switcher
87 input_text :id, :find, find_value
88 input_text :css, "#quick_edit_input_dialog #replace", replace_value
89 click :id, :match_case if match_case
91 buttons = find_elements(:css, "button > span")
92 submit_button = buttons.select {|button| button.text =~ /Submit/}
93 submit_button.first.click
95 alert.accept unless desire_alerting
97 @before_page.class.open @driver, @base_url, @project unless desire_alerting
100 def cancel_quick_edit
101 button_elements = find_elements(:css, 'span.ui-button-text')
102 cancel_buttons = button_elements.select do |button_element|
103 button_element.text == 'Cancel'
105 cancel_button = cancel_buttons.first
108 # new Selenium::WebDriver::Wait.new().until {
109 # !cancel_button.displayed?
113 def menu_selector(attribute_name, custom_field_id=nil)
114 if :custom_field == attribute_name.to_sym
115 "#quick_edit_context_custom_field_values_#{custom_field_id} > a"
117 "#quick_edit_context_#{attribute_name} > a"