6 class IssuesPage < Page
7 def initialize(driver, base_url, project)
8 super(driver, base_url, project)
10 #redmine-2.3: controller-issues action-index
11 #redmine-2.6: project-projectname controller-issues action-index
12 find_element :css, "body[class~='controller-issues'][class~='action-index']"
15 def self.open(driver, base_url, project)
16 driver.get "#{base_url}/projects/#{project}/issues/"
17 IssuesPage.new driver, base_url, project
21 issue_elements = find_elements(:css, "tr.issue")
22 issue_ids = issue_elements.map do |e|
23 #p "find:" + e.attribute("id")
24 /issue-(\d+)/ =~ e.attribute("id")
31 IssueNewPage.open @driver, @base_url, @project
34 def open_context(issue_id)
37 element = find_element(:css, "#issue-#{issue_id} > td.subject")
38 action.move_to(element).context_click(element).perform
40 QuickEditPage.new @driver, @base_url, @project, self
43 def find_quick_edit_menu_for_core_field(issue_id, attribute_name)
44 menu_selector = build_menu_selector_for_core_field(attribute_name)
48 menu_element = find_element(:id, "quick_edit_context")
49 menu_item_element = find_element(:css, menu_selector)
53 def find_quick_edit_menu_for_custom_field(issue_id, custom_field_id)
54 menu_selector = build_menu_selector_for_custom_field(custom_field_id)
58 menu_element = find_element(:id, "quick_edit_context")
59 menu_item_element = find_element(:css, menu_selector)
63 def quick_edit(issue_id, menu_selector, new_value)
66 menu_element = find_element(:id, "quick_edit_context")
67 menu_item_element = find_element(:css, menu_selector)
68 action.move_to(menu_element).click(menu_item_element).perform
70 input_text :id, "new_value", new_value
72 buttons = find_elements(:css, "button > span")
73 submit_button = buttons.select {|button| button.text =~ /Submit/}
74 submit_button.first.click
77 def quick_edit_clear(issue_id, menu_selector)
80 menu_element = find_element(:id, "quick_edit_context")
81 menu_item_element = find_element(:css, menu_selector)
82 action.move_to(menu_element).click(menu_item_element).perform
84 find_element(:css, '#quick_edit_input_dialog #clear').click
86 buttons = find_elements(:css, "button > span")
87 submit_button = buttons.select {|button| button.text =~ /Submit/}
88 submit_button.first.click
91 def quick_edit_for_core_field(issue_id, attribute_name, new_value, desire_alerting = false)
92 menu_selector = "#quick_edit_context_#{attribute_name} > a"
94 quick_edit(issue_id, menu_selector, new_value)
96 self.class.open @driver, @base_url, @project unless desire_alerting
99 def quick_edit_clear_for_core_field(issue_id, attribute_name)
100 menu_selector = build_menu_selector_for_core_field(attribute_name)
102 quick_edit_clear(issue_id, menu_selector)
104 self.class.open @driver, @base_url, @project
107 def quick_edit_clear_for_custom_field(issue_id, custom_field_id)
108 menu_selector = build_menu_selector_for_custom_field(custom_field_id)
110 quick_edit_clear(issue_id, menu_selector)
112 self.class.open @driver, @base_url, @project
115 def build_menu_selector_for_core_field(attribute_name)
116 "#quick_edit_context_#{attribute_name} > a"
119 def build_menu_selector_for_custom_field(custom_field_id)
120 "#quick_edit_context_custom_field_values_#{custom_field_id} > a"
123 def quick_edit_for_custom_field(issue_id, custom_field_id, new_value, desire_alerting = false)
124 menu_selector = build_menu_selector_for_custom_field(custom_field_id)
126 open_context issue_id
128 menu_element = find_element(:id, "quick_edit_context")
129 menu_item_element = find_element(:css, menu_selector)
131 action.move_to(menu_element).click(menu_item_element).perform
133 input_text :id, "new_value", new_value
135 buttons = find_elements(:css, "button > span")
136 submit_button = buttons.select {|button| button.text =~ /Submit/}
137 submit_button.first.click
139 self.class.open @driver, @base_url, @project unless desire_alerting
142 def cancel_quick_edit
143 button_elements = find_elements(:css, 'span.ui-button-text')
144 cancel_button = button_elements.select do |button_element|
145 button_element.text == 'Cancel'
147 cancel_button.first.click