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/quick_edit.rb'].each {|file| require file }
9 Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
10 Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file }
13 include RSpec::Expectations
15 describe "Edit on the mypage" do
18 profile = Selenium::WebDriver::Firefox::Profile.new
19 @driver = Selenium::WebDriver.for :firefox, :profile => profile
20 @driver.manage.window.maximize
21 @base_url = "http://localhost:3000/"
22 @driver.manage.timeouts.implicit_wait = 10
23 @verification_errors = []
24 @default_project = "test"
25 @default_user = "admin"
26 @default_password = "dummy"
29 start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
30 first_page = start_page.login @default_user, @default_password
31 issues_page = first_page.open_issues
33 # create issue for test
34 issue_new_page = issues_page.open_new_page()
35 issue_show_page = issue_new_page.create(:bug, 'first subject')
37 @my_page = issues_page.open_mypage
38 @issue_id = @my_page.issue_ids_on_page.first
42 @my_page = @my_page.open_mypage
46 expect(@verification_errors).to match_array []
53 it "subject can edit" do
55 expect( edit(@issue_id, :subject, new_value) ).to eq new_value
57 new_value = 'subject: new_value'
58 expect( edit(@issue_id, :subject, new_value) ).to eq new_value
60 expect( edit_with_alert(@issue_id, :subject, "") ).to eq new_value
63 it "subject can edit with private note" do
65 expect( edit(@issue_id, :subject, new_value) ).to eq new_value
67 new_value = {:value => 'subject: with_notes',
68 :notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
69 expect( edit(@issue_id, :subject, new_value) ).to eq new_value[:value]
70 expect( latest_note(@issue_id, @my_page.session_cookie) ).to eq new_value
73 it "start_date can edit" do
74 new_value = '1900-01-01'
75 expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
77 new_value = '1900-01-02'
78 expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
80 invalid_value = '1900-01-0a'
81 expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
84 expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
87 it "due_date can edit" do
88 new_value = '2000-01-01'
89 expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
91 new_value = '2000-01-02'
92 expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
94 invalid_value = '2000-01-0a'
95 expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
98 expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
101 it "description can edit" do
103 expect( edit(@issue_id, :description, new_value) ).to eq new_value
105 new_value = 'description: new_value'
106 expect( edit(@issue_id, :description, new_value) ).to eq new_value
109 expect( edit_with_alert(@issue_id, :description, invalid_value) ).to eq new_value
112 # unsigned float field
113 it "estimated_hours can edit" do
115 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
118 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
121 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
124 expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
127 expect( edit_with_alert(@issue_id, :estimated_hours, invalid_value) ).to eq new_value.to_f
130 #it "parent_issue_id can edit" do
131 # issue_ids = @my_page.issue_ids_on_page
132 # issue_new_page = @my_page.open_new_page()
133 # issue_show_page = issue_new_page.create(:bug, 'first subject')
134 # new_issue_id = issue_show_page.id
135 # @my_page = issue_show_page.open_issues
137 # new_value = @issue_id.to_s
138 # expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
141 # expect( edit_with_alert(new_issue_id, :parent_issue_id, invalid_value) ).to eq new_value.to_i
143 # new_value = @issue_id.to_s
144 # expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
147 def edit(issue_id, attribute_name, new_value)
148 quick_edit = @my_page.open_context(issue_id)
149 menu_selector = quick_edit.menu_selector(attribute_name)
150 @my_page = quick_edit.update_field(issue_id, menu_selector, new_value)
152 attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
153 field_value = get_core_field(issue_id, attribute_name)
155 if attribute_name == :parent
162 def edit_with_alert(issue_id, attribute_name, new_value)
163 quick_edit = @my_page.open_context(issue_id)
164 menu_selector = quick_edit.menu_selector(attribute_name)
165 quick_edit.update_field issue_id, menu_selector, new_value, true
166 quick_edit.alert.accept
167 quick_edit.cancel_quick_edit
168 @my_page = quick_edit.open_mypage
170 attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
171 field_value = get_core_field(issue_id, attribute_name)
173 if attribute_name == :parent
180 def get_core_field(issue_id, attribute_name)
181 json = get_json("issues/#{issue_id}.json")
183 json["issue"][attribute_name.to_s]
187 uri = URI::parse "#{@base_url}#{path}"
188 res = Net::HTTP::get_response(uri)