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 }
9 Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file }
12 include RSpec::Expectations
14 describe "Replace core field" do
17 profile = Selenium::WebDriver::Firefox::Profile.new
18 @driver = Selenium::WebDriver.for :firefox, :profile => profile
19 @driver.manage.window.maximize
20 @base_url = "http://localhost:3000/"
21 @driver.manage.timeouts.implicit_wait = 10
22 @verification_errors = []
23 @default_project = "test"
24 @default_user = "admin"
25 @default_password = "dummy"
28 start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
29 first_page = start_page.login @default_user, @default_password
30 @issues_page = first_page.open_issues
32 # create issue for test
33 issue_new_page = @issues_page.open_new_page()
34 issue_show_page = issue_new_page.create(:bug, 'initial text')
35 @issue_id = issue_show_page.id
40 @issues_page = @issues_page.open_issues
44 expect(@verification_errors).to match_array []
51 it "subject can replace" do
52 new_value = 'NEW text'
56 expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
58 # match case test: to lower
59 new_value = 'new text'
63 expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
66 new_value = "new<>\'\"&\\+ %text"
68 replace = "<>\'\"&\\+ %"
70 expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
72 # escape test for meta character of regexp pattern
73 new_value = "new<>\'\"&\\++ %text"
77 expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
82 expect( replace_with_alert(@issue_id, :subject, find, replace, match_case) ).to eq new_value
85 it "subject can replace with private note" do
88 edit(@issue_id, :subject, new_value)
91 new_value = {:value => 'summy',
92 :notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
93 param = {:find => 'd',
96 :notes => new_value[:notes]}
97 expect( replace(@issue_id, :subject, param) ).to eq new_value[:value]
98 expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
101 def edit(issue_id, attribute_name, new_value)
102 quick_edit = @issues_page.open_context(issue_id)
103 menu_selector = quick_edit.menu_selector(attribute_name)
104 @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
106 attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
107 field_value = get_core_field(issue_id, attribute_name)
109 if attribute_name == :parent
116 def replace(issue_id, attribute_name, find, replace=nil, match_case=nil)
117 quick_edit = @issues_page.open_context(issue_id)
118 menu_selector = quick_edit.menu_selector(attribute_name)
119 @issues_page = quick_edit.replace(issue_id, menu_selector, find, replace, match_case)
121 attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
122 field_value = get_core_field(issue_id, attribute_name)
124 if attribute_name == :parent
131 def replace_with_alert(issue_id, attribute_name, find, replace, match_case)
132 quick_edit = @issues_page.open_context(issue_id)
133 menu_selector = quick_edit.menu_selector(attribute_name)
134 quick_edit.replace(issue_id, menu_selector, find, replace, match_case, true)
135 quick_edit.alert.accept
136 quick_edit.cancel_quick_edit
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 get_core_field(issue_id, attribute_name)
149 json = get_json("issues/#{issue_id}.json")
151 json["issue"][attribute_name.to_s]
155 uri = URI::parse "#{@base_url}#{path}"
156 res = Net::HTTP::get_response(uri)