OSDN Git Service

test for add note. refs #35392
[quickedit/quick_edit.git] / test / selenium / pages / issues.rb
1 #coding: utf-8
2
3 module QuickEdit
4   module Test
5     module Pages
6       class IssuesPage < Page
7         def initialize(driver, base_url, project)
8           super(driver, base_url, project)
9
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']"
13         end
14
15         def self.open(driver, base_url, project)
16           driver.get "#{base_url}/projects/#{project}/issues/"
17           IssuesPage.new driver, base_url, project
18         end
19
20         def issue_ids_on_page
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")
25             Regexp.last_match(1)
26           end
27           issue_ids
28         end
29
30         def open_new_page()
31           IssueNewPage.open @driver, @base_url, @project
32         end
33
34         def open_context(issue_id)
35           wait
36
37           element = find_element(:css, "#issue-#{issue_id} > td.subject")
38           action.move_to(element).context_click(element).perform
39
40           QuickEditPage.new @driver, @base_url, @project, self
41         end
42
43         def find_quick_edit_menu_for_core_field(issue_id, attribute_name)
44           menu_selector = build_menu_selector_for_core_field(attribute_name)
45
46           open_context issue_id
47
48           menu_element = find_element(:id, "quick_edit_context")
49           menu_item_element = find_element(:css, menu_selector)
50           menu_item_element
51         end
52
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)
55
56           open_context issue_id
57
58           menu_element = find_element(:id, "quick_edit_context")
59           menu_item_element = find_element(:css, menu_selector)
60           menu_item_element
61         end
62
63         def quick_edit(issue_id, menu_selector, new_value)
64           open_context issue_id
65
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
69
70           if new_value.is_a?(Hash)
71             if new_value[:value] == :none
72               click :css, '#quick_edit_input_dialog #clear'
73             else
74               input_text :id, "new_value", new_value[:value]
75             end
76             input_text :id, "notes_for_edit", new_value[:notes][:text] unless new_value[:notes].nil?
77             click :id, "issue_private_notes_for_edit" if new_value[:notes][:is_private]
78           else
79             input_text :id, "new_value", new_value
80           end
81
82           buttons = find_elements(:css, "button > span")
83           submit_button = buttons.select {|button| button.text =~ /Submit/}
84           submit_button.first.click
85         end
86
87         def quick_edit_clear(issue_id, menu_selector)
88           open_context issue_id
89
90           menu_element = find_element(:id, "quick_edit_context")
91           menu_item_element = find_element(:css, menu_selector)
92           action.move_to(menu_element).click(menu_item_element).perform
93
94           find_element(:css, '#quick_edit_input_dialog #clear').click
95
96           buttons = find_elements(:css, "button > span")
97           submit_button = buttons.select {|button| button.text =~ /Submit/}
98           submit_button.first.click
99         end
100
101         def quick_edit_for_core_field(issue_id, attribute_name, new_value, desire_alerting = false)
102           menu_selector = "#quick_edit_context_#{attribute_name} > a"
103
104           quick_edit(issue_id, menu_selector, new_value)
105
106           self.class.open @driver, @base_url, @project unless desire_alerting
107         end
108
109         def quick_edit_clear_for_core_field(issue_id, attribute_name)
110           menu_selector = build_menu_selector_for_core_field(attribute_name)
111
112           quick_edit_clear(issue_id, menu_selector)
113
114           self.class.open @driver, @base_url, @project
115         end
116
117         def quick_edit_clear_for_custom_field(issue_id, custom_field_id)
118           menu_selector = build_menu_selector_for_custom_field(custom_field_id)
119
120           quick_edit_clear(issue_id, menu_selector)
121
122           self.class.open @driver, @base_url, @project
123         end
124
125         def build_menu_selector_for_core_field(attribute_name)
126           "#quick_edit_context_#{attribute_name} > a"
127         end
128
129         def build_menu_selector_for_custom_field(custom_field_id)
130           "#quick_edit_context_custom_field_values_#{custom_field_id} > a"
131         end
132
133         def quick_edit_for_custom_field(issue_id, custom_field_id, new_value, desire_alerting = false)
134           menu_selector = build_menu_selector_for_custom_field(custom_field_id)
135
136           open_context issue_id
137
138           menu_element = find_element(:id, "quick_edit_context")
139           menu_item_element = find_element(:css, menu_selector)
140
141           action.move_to(menu_element).click(menu_item_element).perform
142
143           input_text :id, "new_value", new_value
144
145           buttons = find_elements(:css, "button > span")
146           submit_button = buttons.select {|button| button.text =~ /Submit/}
147           submit_button.first.click
148
149           self.class.open @driver, @base_url, @project unless desire_alerting
150         end
151
152         def cancel_quick_edit
153           button_elements = find_elements(:css, 'span.ui-button-text')
154           cancel_button = button_elements.select do |button_element|
155             button_element.text == 'Cancel'
156           end
157           cancel_button.first.click
158         end
159       end
160     end
161   end
162 end
163