OSDN Git Service

e22943ca0c29289b61519663d79ebff09ca07e86
[quickedit/quick_edit.git] / test / selenium / pages / quick_edit.rb
1 #coding: utf-8
2
3 module QuickEdit
4   module Test
5     module Pages
6       class QuickEditPage < Page
7         def initialize(driver, base_url, project, before_page)
8           super(driver, base_url, project)
9
10           @before_page = before_page
11
12           find_element :id, "quick_edit_context"
13         end
14
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
19
20           find_element(:css, menu_selector)
21         end
22
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
27
28           input_text :id, "new_value", new_value
29
30           buttons = find_elements(:css, "button > span")
31           submit_button = buttons.select {|button| button.text =~ /Submit/}
32           submit_button.first.click
33
34           @before_page.class.open @driver, @base_url, @project unless desire_alerting
35         end
36
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
41
42           find_element(:css, '#quick_edit_input_dialog #clear').click
43
44           buttons = find_elements(:css, "button > span")
45           submit_button = buttons.select {|button| button.text =~ /Submit/}
46           submit_button.first.click
47
48           @before_page.class.open @driver, @base_url, @project
49         end
50
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
55
56           click :id, :replace_switcher
57
58           input_text :id, :find, find_value
59           input_text :id, :replace, replace_value
60           click :id, :match_case if match_case
61
62           buttons = find_elements(:css, "button > span")
63           submit_button = buttons.select {|button| button.text =~ /Preview/}
64           submit_button.first.click
65
66           @before_page.class.open @driver, @base_url, @project unless desire_alerting
67         end
68
69         def get_replace_preview()
70           rows = find_elements(:css, "preview_area tbody tr")
71
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 }
77           end
78         end
79
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
84
85           click :id, :replace_switcher
86
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
90
91           buttons = find_elements(:css, "button > span")
92           submit_button = buttons.select {|button| button.text =~ /Submit/}
93           submit_button.first.click
94
95           alert.accept unless desire_alerting
96
97           @before_page.class.open @driver, @base_url, @project unless desire_alerting
98         end
99
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'
104           end
105           cancel_button = cancel_buttons.first
106           cancel_button.click
107
108 #          new Selenium::WebDriver::Wait.new().until {
109 #            !cancel_button.displayed?
110 #          }
111         end
112
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"
116           else
117             "#quick_edit_context_#{attribute_name} > a"
118           end
119         end
120       end
121     end
122   end
123 end
124