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
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 @accept_next_alert = true
21 @driver.manage.timeouts.implicit_wait = 10
22 @verification_errors = []
23 @default_project = "test"
24 @default_user = "admin"
25 @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
34 expect(@verification_errors).to match_array []
37 it "subject can edit" do
39 expect( edit(@issue_id, :subject, new_value) ).to eq new_value
41 new_value = 'subject: new_value'
42 expect( edit(@issue_id, :subject, new_value) ).to eq new_value
44 expect( edit_with_alert(@issue_id, :subject, "") ).to eq new_value
47 it "start_date can edit" do
48 new_value = '1900-01-01'
49 expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
51 new_value = '1900-01-02'
52 expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
54 invalid_value = '1900-01-0a'
55 expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
58 expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
61 it "due_date can edit" do
62 new_value = '2000-01-01'
63 expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
65 new_value = '2000-01-02'
66 expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
68 invalid_value = '2000-01-0a'
69 expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
72 expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
75 it "description can edit" do
77 expect( edit(@issue_id, :description, new_value) ).to eq new_value
79 new_value = 'description: new_value'
80 expect( edit(@issue_id, :description, new_value) ).to eq new_value
82 expect( edit_with_alert(@issue_id, :description, "") ).to eq new_value
85 def edit(issue_id, attribute_name, new_value)
86 @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value
88 field_value = get_core_field(issue_id, attribute_name)
92 def edit_with_alert(issue_id, attribute_name, new_value)
93 @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value, true
94 @issues_page.alert.accept
95 @issues_page.cancel_quick_edit
97 field_value = get_core_field(issue_id, attribute_name)
101 def edit_custom_field(issue_id, custom_field_name, new_value)
102 cf = get_custom_field(issue_id, custom_field_name)
105 @issues_page.quick_edit_for_custom_field issue_id, cf_id, new_value
107 cf = get_custom_field(issue_id, custom_field_name)
111 def get_core_field(issue_id, attribute_name)
112 json = get_json("issues/#{issue_id}.json")
114 json["issue"][attribute_name.to_s]
117 def get_custom_field(issue_id, custom_field_name)
118 cf_hash_list = get_custom_fields(issue_id)
120 cf_hash = cf_hash_list.select do |cf_hash|
121 cf_hash["name"] == custom_field_name.to_s
127 def get_custom_fields(issue_id)
128 json = get_json("issues/#{issue_id}.json")
130 json["issue"]["custom_fields"]
134 uri = URI::parse "#{@base_url}#{path}"
135 res = Net::HTTP::get_response(uri)