4 require "selenium-webdriver"
5 $: << File.expand_path('../../', __FILE__)
7 Dir[File.dirname(__FILE__) + '/pages/page.rb'].each {|file| require file }
8 Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
11 include RSpec::Expectations
13 describe "Edit core field" do
16 profile = Selenium::WebDriver::Firefox::Profile.new
17 @driver = Selenium::WebDriver.for :firefox, :profile => profile
18 @driver.manage.window.maximize
19 @base_url = "http://localhost:3000/"
20 @driver.manage.timeouts.implicit_wait = 10
21 @verification_errors = []
22 @default_project = "test"
23 @default_user = "admin"
24 @default_password = "dummy"
27 start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
28 first_page = start_page.login @default_user, @default_password
29 @issues_page = first_page.open_issues
31 # create issue for test
32 issue_new_page = @issues_page.open_new_page()
33 issue_show_page = issue_new_page.create(:bug, 'first subject')
34 @issue_id = issue_show_page.id
39 @issues_page = @issues_page.open_issues
43 expect(@verification_errors).to match_array []
50 it "subject can edit" do
52 expect( edit(@issue_id, :subject, new_value) ).to eq new_value
54 new_value = 'subject: new_value'
55 expect( edit(@issue_id, :subject, new_value) ).to eq new_value
57 expect( edit_with_alert(@issue_id, :subject, "") ).to eq new_value
60 it "start_date can edit" do
61 new_value = '1900-01-01'
62 expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
64 new_value = '1900-01-02'
65 expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
67 invalid_value = '1900-01-0a'
68 expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
71 expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
74 it "due_date can edit" do
75 new_value = '2000-01-01'
76 expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
78 new_value = '2000-01-02'
79 expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
81 invalid_value = '2000-01-0a'
82 expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
85 expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
88 it "description can edit" do
90 expect( edit(@issue_id, :description, new_value) ).to eq new_value
92 new_value = 'description: new_value'
93 expect( edit(@issue_id, :description, new_value) ).to eq new_value
95 expect( edit_with_alert(@issue_id, :description, "") ).to eq new_value
98 # unsigned float field
99 it "estimated_hours can edit" do
101 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
104 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
107 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
110 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
113 expect( edit_with_alert(@issue_id, :estimated_hours, invalid_value) ).to eq new_value.to_f
116 it "parent_issue_id can edit" do
117 issue_ids = @issues_page.issue_ids_on_page
118 issue_new_page = @issues_page.open_new_page()
119 issue_show_page = issue_new_page.create(:bug, 'first subject')
120 new_issue_id = issue_show_page.id
121 @issues_page = issue_show_page.open_issues
123 new_value = @issue_id.to_s
124 expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
127 expect( edit_with_alert(new_issue_id, :parent_issue_id, invalid_value) ).to eq new_value.to_i
129 new_value = @issue_id.to_s
130 expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
133 def edit(issue_id, attribute_name, new_value)
134 quick_edit = @issues_page.open_context(issue_id)
135 menu_selector = quick_edit.menu_selector(attribute_name)
136 @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
138 attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
139 field_value = get_core_field(issue_id, attribute_name)
141 if attribute_name == :parent
148 def edit_with_alert(issue_id, attribute_name, new_value)
149 quick_edit = @issues_page.open_context(issue_id)
150 menu_selector = quick_edit.menu_selector(attribute_name)
151 quick_edit.update_field(issue_id, menu_selector, new_value, true)
152 quick_edit.alert.accept
153 quick_edit.cancel_quick_edit
155 attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
156 field_value = get_core_field(issue_id, attribute_name)
158 if attribute_name == :parent
165 def get_core_field(issue_id, attribute_name)
166 json = get_json("issues/#{issue_id}.json")
168 json["issue"][attribute_name.to_s]
172 uri = URI::parse "#{@base_url}#{path}"
173 res = Net::HTTP::get_response(uri)