include RSpec::Expectations
describe "Clear core field" do
+ let(:helper) { TestHelper.new }
before(:all) do
profile = Selenium::WebDriver::Firefox::Profile.new
before(:each) do
@issues_page = @issues_page.open_issues
+ helper.page = @issues_page
+ helper.base_url = @base_url
+ helper.issue_id = @issue_id
end
after(:each) do
it "start_date can clear" do
new_value = '1900-01-01'
- expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
+ expect( helper.edit(:start_date, new_value) ).to eq new_value
- expect( clear(@issue_id, :start_date) ).to eq nil
+ expect( helper.clear(:start_date) ).to eq nil
end
it "start_date can clear with private notes" do
# before edit
new_value = '1900-01-01'
- expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
+ expect( helper.edit(:start_date, new_value) ).to eq new_value
# clear
new_value = {:value => :none,
:notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
- expect( edit(@issue_id, :start_date, new_value) ).to eq new_value[:value]
- expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
+ expect( helper.clear(:start_date, new_value[:notes]) ).to eq nil
+ expect( helper.latest_note ).to eq new_value
end
it "due_date can clear" do
new_value = '2000-01-01'
- expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
+ expect( helper.edit(:due_date, new_value) ).to eq new_value
- expect( clear(@issue_id, :due_date) ).to eq nil
+ expect( helper.clear(:due_date) ).to eq nil
end
it "estimated_hours can clear" do
new_value = '0'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit(:estimated_hours, new_value).to_f ).to eq new_value.to_f
- expect( clear(@issue_id, :estimated_hours) ).to eq nil
+ expect( helper.clear(:estimated_hours) ).to eq nil
end
it "parent_issue_id can clear" do
- issue_ids = @issues_page.issue_ids_on_page
- issue_new_page = @issues_page.open_new_page()
+ issue_ids = helper.page.issue_ids_on_page
+ issue_new_page = helper.page.open_new_page()
issue_show_page = issue_new_page.create(:bug, 'first subject')
new_issue_id = issue_show_page.id
- @issues_page = issue_show_page.open_issues
+ helper.page = @issues_page = issue_show_page.open_issues
new_value = @issue_id.to_s
- expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
-
- expect( clear(new_issue_id, :parent_issue_id) ).to eq nil
- end
-
- def edit(issue_id, attribute_name, new_value)
- @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
- field_value = :none if field_value.nil?
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def clear(issue_id, attribute_name)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- @issues_page = quick_edit.clear_field(issue_id, menu_selector)
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
- end
-
- def get_core_field(issue_id, attribute_name)
- json = get_json("issues/#{issue_id}.json")
+ helper.issue_id = new_issue_id
+ expect( helper.edit(:parent_issue_id, new_value) ).to eq new_value.to_i
- json["issue"][attribute_name.to_s]
+ expect( helper.clear(:parent_issue_id) ).to eq nil
end
- def get_json(path)
- uri = URI::parse "#{@base_url}#{path}"
- res = Net::HTTP::get_response(uri)
- JSON.parse(res.body)
- end
end
require 'spec_helper'
Dir[File.dirname(__FILE__) + '/pages/page.rb'].each {|file| require file }
Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
+Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file }
require "uri"
require "net/http"
include RSpec::Expectations
describe "Clear custom field" do
+ let(:helper) { TestHelper.new }
before(:all) do
profile = Selenium::WebDriver::Firefox::Profile.new
# open issues
start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
first_page = start_page.login @default_user, @default_password
- @issues_page = first_page.open_issues
+ admin_info_page = first_page.open_admin_info
+ apikey_page = admin_info_page.open_my_apikey(admin_info_page.redmine_version)
+ @api_key = apikey_page.key
+ @issues_page = apikey_page.open_issues
# get issue id for test
@issue_id = @issues_page.issue_ids_on_page().first().to_i
else
@issues_page = @issues_page.open_issues
end
+ helper.page = @issues_page
+ helper.base_url = @base_url
+ helper.issue_id = @issue_id
+ helper.api_key = @api_key
end
after(:each) do
it "custom_text can clear" do
new_value = 'dummy'
- expect( edit_custom_field(@issue_id, :custom_text, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_text, new_value) ).to eq new_value
- expect( clear_custom_field(@issue_id, :custom_text) ).to eq ''
+ expect( helper.clear_custom_field(:custom_text) ).to eq ''
end
it "custom_int can clear" do
new_value = '0'
- expect( edit_custom_field(@issue_id, :custom_int, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_int, new_value) ).to eq new_value
- expect( clear_custom_field(@issue_id, :custom_int) ).to eq ''
+ expect( helper.clear_custom_field(:custom_int) ).to eq ''
end
it "custom_date can clear" do
new_value = '1900-01-01'
- expect( edit_custom_field(@issue_id, :custom_date, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_date, new_value) ).to eq new_value
- expect( clear_custom_field(@issue_id, :custom_date) ).to eq ''
+ expect( helper.clear_custom_field(:custom_date) ).to eq ''
end
it "custom_long can clear" do
new_value = 'dummy'
- expect( edit_custom_field(@issue_id, :custom_long, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_long, new_value) ).to eq new_value
- expect( clear_custom_field(@issue_id, :custom_long) ).to eq ''
+ expect( helper.clear_custom_field(:custom_long) ).to eq ''
end
it "custom_float can clear" do
new_value = '0'
- expect( edit_custom_field(@issue_id, :custom_float, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_float, new_value) ).to eq new_value
- expect( clear_custom_field(@issue_id, :custom_float) ).to eq ''
+ expect( helper.clear_custom_field(:custom_float) ).to eq ''
end
it "custom_link can clear" do
@issues_page = admin_info_page.open_issues
new_value = 'dummy'
- expect( edit_custom_field(@issue_id, :custom_link, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_link, new_value) ).to eq new_value
- expect( clear_custom_field(@issue_id, :custom_link) ).to eq ''
+ expect( helper.clear_custom_field(:custom_link) ).to eq ''
end
end
-
- def edit_custom_field(issue_id, custom_field_name, new_value)
- cf = get_custom_field(issue_id, custom_field_name)
- cf_id = cf["id"]
-
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(:custom_field, cf_id)
- @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
-
- cf = get_custom_field(issue_id, custom_field_name)
- cf["value"]
- end
-
- def clear_custom_field(issue_id, custom_field_name)
- cf = get_custom_field(issue_id, custom_field_name)
- cf_id = cf["id"]
-
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(:custom_field, cf_id)
- @issues_page = quick_edit.clear_field(issue_id, menu_selector)
-
-
- cf = get_custom_field(issue_id, custom_field_name)
- cf["value"]
- end
-
- def get_custom_field(issue_id, custom_field_name)
- cf_hash_list = get_custom_fields(issue_id)
-
- cf_hash = cf_hash_list.select do |cf_hash|
- cf_hash["name"] == custom_field_name.to_s
- end
-
- cf_hash.first
- end
-
- def get_custom_fields(issue_id)
- json = get_json("issues/#{issue_id}.json")
-
- json["issue"]["custom_fields"]
- end
-
- def get_json(path)
- uri = URI::parse "#{@base_url}#{path}"
- res = Net::HTTP::get_response(uri)
- JSON.parse(res.body)
- end
-
end
include RSpec::Expectations
describe "Edit core field" do
+ let(:helper) { TestHelper.new }
before(:all) do
profile = Selenium::WebDriver::Firefox::Profile.new
before(:each) do
@issues_page = @issues_page.open_issues
+ helper.page = @issues_page
+ helper.base_url = @base_url
+ helper.issue_id = @issue_id
end
after(:each) do
it "subject can edit" do
new_value = 'dummy'
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value
+ expect( helper.edit(:subject, new_value) ).to eq new_value
new_value = 'subject: new_value'
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value
+ expect( helper.edit(:subject, new_value) ).to eq new_value
- expect( edit_with_alert(@issue_id, :subject, "") ).to eq new_value
+ expect( helper.edit_with_alert(:subject, "") ).to eq new_value
end
it "subject can edit with public notes" do
new_value = {:value => 'subject: with_notes',
:notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => false}}
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value[:value]
- expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
+ expect( helper.edit( :subject, new_value) ).to eq new_value[:value]
+ expect( helper.latest_note ).to eq new_value
end
it "subject can edit with private notes" do
new_value = {:value => 'subject: with_notes',
:notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value[:value]
- expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
+ expect( helper.edit( :subject, new_value) ).to eq new_value[:value]
+ expect( helper.latest_note ).to eq new_value
end
it "start_date can edit" do
new_value = '1900-01-01'
- expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
+ expect( helper.edit( :start_date, new_value) ).to eq new_value
new_value = '1900-01-02'
- expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
+ expect( helper.edit( :start_date, new_value) ).to eq new_value
invalid_value = '1900-01-0a'
- expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert( :start_date, invalid_value) ).to eq new_value
invalid_value = ''
- expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert( :start_date, invalid_value) ).to eq new_value
end
it "due_date can edit" do
new_value = '2000-01-01'
- expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
+ expect( helper.edit( :due_date, new_value) ).to eq new_value
new_value = '2000-01-02'
- expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
+ expect( helper.edit( :due_date, new_value) ).to eq new_value
invalid_value = '2000-01-0a'
- expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert( :due_date, invalid_value) ).to eq new_value
invalid_value = ''
- expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert( :due_date, invalid_value) ).to eq new_value
end
it "description can edit" do
new_value = 'dummy'
- expect( edit(@issue_id, :description, new_value) ).to eq new_value
+ expect( helper.edit( :description, new_value) ).to eq new_value
new_value = 'description: new_value'
- expect( edit(@issue_id, :description, new_value) ).to eq new_value
+ expect( helper.edit( :description, new_value) ).to eq new_value
- expect( edit_with_alert(@issue_id, :description, "") ).to eq new_value
+ expect( helper.edit_with_alert( :description, "") ).to eq new_value
end
# unsigned float field
it "estimated_hours can edit" do
new_value = '0'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit( :estimated_hours, new_value).to_f ).to eq new_value.to_f
new_value = '0.1'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit( :estimated_hours, new_value).to_f ).to eq new_value.to_f
new_value = '+0.1'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit( :estimated_hours, new_value).to_f ).to eq new_value.to_f
new_value = '0.1e2'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit( :estimated_hours, new_value).to_f ).to eq new_value.to_f
invalid_value = ''
- expect( edit_with_alert(@issue_id, :estimated_hours, invalid_value) ).to eq new_value.to_f
+ expect( helper.edit_with_alert( :estimated_hours, invalid_value) ).to eq new_value.to_f
end
it "parent_issue_id can edit" do
issue_ids = @issues_page.issue_ids_on_page
issue_new_page = @issues_page.open_new_page()
issue_show_page = issue_new_page.create(:bug, 'first subject')
- new_issue_id = issue_show_page.id
- @issues_page = issue_show_page.open_issues
+ helper.issue_id = issue_show_page.id
+ helper.page = issue_show_page.open_issues
new_value = @issue_id.to_s
- expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
+ expect( helper.edit(:parent_issue_id, new_value) ).to eq new_value.to_i
invalid_value = ''
- expect( edit_with_alert(new_issue_id, :parent_issue_id, invalid_value) ).to eq new_value.to_i
+ expect( helper.edit_with_alert(:parent_issue_id, invalid_value) ).to eq new_value.to_i
new_value = @issue_id.to_s
- expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
+ expect( helper.edit(:parent_issue_id, new_value) ).to eq new_value.to_i
end
- def edit(issue_id, attribute_name, new_value)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def edit_with_alert(issue_id, attribute_name, new_value)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- quick_edit.update_field(issue_id, menu_selector, new_value, true)
- quick_edit.alert.accept
- quick_edit.cancel_quick_edit
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def get_core_field(issue_id, attribute_name)
- json = get_json("issues/#{issue_id}.json")
-
- json["issue"][attribute_name.to_s]
- end
-
- def get_json(path)
- uri = URI::parse "#{@base_url}#{path}"
- res = Net::HTTP::get_response(uri)
- JSON.parse(res.body)
- end
-
end
require 'spec_helper'
Dir[File.dirname(__FILE__) + '/pages/page.rb'].each {|file| require file }
Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
+Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file }
require "uri"
require "net/http"
include RSpec::Expectations
describe "Edit custom field" do
+ let(:helper) { TestHelper.new }
before(:all) do
profile = Selenium::WebDriver::Firefox::Profile.new
# open issues
start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
first_page = start_page.login @default_user, @default_password
- apikey_page = first_page.open_my_apikey
+ admin_info_page = first_page.open_admin_info
+ apikey_page = admin_info_page.open_my_apikey(admin_info_page.redmine_version)
@api_key = apikey_page.key
@issues_page = apikey_page.open_issues
else
@issues_page = @issues_page.open_issues
end
+ helper.base_url = @base_url
+ helper.page = @issues_page
+ helper.issue_id = @issue_id
+ helper.api_key = @api_key
end
after(:each) do
it "custom_text can edit" do
new_value = 'dummy'
- expect( edit_custom_field(@issue_id, :custom_text, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_text, new_value) ).to eq new_value
new_value = 'custom_text: new_value'
- expect( edit_custom_field(@issue_id, :custom_text, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_text, new_value) ).to eq new_value
invalid_value = ''
- expect( edit_custom_field_with_alert(@issue_id, :custom_text, invalid_value) ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_text, invalid_value) ).to eq new_value
end
it "custom_int can edit" do
new_value = '0'
- expect( edit_custom_field(@issue_id, :custom_int, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_int, new_value) ).to eq new_value
new_value = '2147483647'
- expect( edit_custom_field(@issue_id, :custom_int, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_int, new_value) ).to eq new_value
new_value = '+10'
- expect( edit_custom_field(@issue_id, :custom_int, new_value).to_i ).to eq new_value.to_i
+ expect( helper.edit_custom_field(:custom_int, new_value).to_i ).to eq new_value.to_i
new_value = '-10'
- expect( edit_custom_field(@issue_id, :custom_int, new_value).to_i ).to eq new_value.to_i
+ expect( helper.edit_custom_field(:custom_int, new_value).to_i ).to eq new_value.to_i
invalid_value = 'a'
- expect( edit_custom_field_with_alert(@issue_id, :custom_int, invalid_value) ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_int, invalid_value) ).to eq new_value
invalid_value = ''
- expect( edit_custom_field_with_alert(@issue_id, :custom_int, "") ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_int, "") ).to eq new_value
end
it "custom_date can edit" do
new_value = '1900-01-01'
- expect( edit_custom_field(@issue_id, :custom_date, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_date, new_value) ).to eq new_value
new_value = '2015-01-01'
- expect( edit_custom_field(@issue_id, :custom_date, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_date, new_value) ).to eq new_value
invalid_value = '2015-01-0a'
- expect( edit_custom_field_with_alert(@issue_id, :custom_date, invalid_value) ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_date, invalid_value) ).to eq new_value
invalid_value = ''
- expect( edit_custom_field_with_alert(@issue_id, :custom_date, invalid_value) ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_date, invalid_value) ).to eq new_value
end
it "custom_long can edit" do
new_value = 'dummy'
- expect( edit_custom_field(@issue_id, :custom_long, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_long, new_value) ).to eq new_value
new_value = 'custom_long: new_value '
- expect( edit_custom_field(@issue_id, :custom_long, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_long, new_value) ).to eq new_value
invalid_value = ''
- expect( edit_custom_field_with_alert(@issue_id, :custom_long, invalid_value) ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_long, invalid_value) ).to eq new_value
end
it "custom_float can edit" do
new_value = '0'
- expect( edit_custom_field(@issue_id, :custom_float, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_float, new_value) ).to eq new_value
new_value = '0.1'
- expect( edit_custom_field(@issue_id, :custom_float, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit_custom_field(:custom_float, new_value).to_f ).to eq new_value.to_f
new_value = '+0.1'
- expect( edit_custom_field(@issue_id, :custom_float, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit_custom_field(:custom_float, new_value).to_f ).to eq new_value.to_f
new_value = '-0.1'
- expect( edit_custom_field(@issue_id, :custom_float, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit_custom_field(:custom_float, new_value).to_f ).to eq new_value.to_f
new_value = '0.1e2'
- expect( edit_custom_field(@issue_id, :custom_float, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit_custom_field(:custom_float, new_value).to_f ).to eq new_value.to_f
new_value = '0.1e-2'
- expect( edit_custom_field(@issue_id, :custom_float, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit_custom_field(:custom_float, new_value).to_f ).to eq new_value.to_f
invalid_value = ''
- expect( edit_custom_field_with_alert(@issue_id, :custom_float, invalid_value) ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_float, invalid_value) ).to eq new_value
end
it "custom_link can edit" do
- admin_info_page = @issues_page.open_admin_info
+ admin_info_page = helper.page.open_admin_info
redmine_version = admin_info_page.redmine_version
if redmine_version >= 205
- @issues_page = admin_info_page.open_issues
+ helper.page = admin_info_page.open_issues
new_value = 'dummy'
- expect( edit_custom_field(@issue_id, :custom_link, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_link, new_value) ).to eq new_value
new_value = 'custom_link'
- expect( edit_custom_field(@issue_id, :custom_link, new_value) ).to eq new_value
+ expect( helper.edit_custom_field(:custom_link, new_value) ).to eq new_value
invalid_value = ''
- expect( edit_custom_field_with_alert(@issue_id, :custom_link, invalid_value) ).to eq new_value
+ expect( helper.edit_custom_field_with_alert(:custom_link, invalid_value) ).to eq new_value
end
end
it "readonly field can not edit" do
- welcome_page = @issues_page.logout
+ welcome_page = helper.page.logout
start_page = welcome_page.open_login
first_page = start_page.login("dev1", "dummy")
- @issues_page = first_page.open_issues
+ @issues_page = helper.page = first_page.open_issues
- field_id = select_field(get_custom_field_defs(), :readonly_in_progress)["id"]
- menu_item = @issues_page.find_quick_edit_menu_for_custom_field(@issue_id, field_id)
+ field_id = helper.select_field(helper.get_custom_field_defs(), :readonly_in_progress)["id"]
+ menu_item = helper.page.find_quick_edit_menu_for_custom_field(helper.issue_id, field_id)
expect( menu_item.attribute("class") ).to eq "quick_edit icon-edit disabled"
end
-
- def edit_custom_field(issue_id, custom_field_name, new_value)
- cf = select_field(get_custom_field_defs(), custom_field_name)
- cf_id = cf["id"]
-
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(:custom_field, cf_id)
- @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
-
- cf = select_field(get_custom_fields(issue_id), custom_field_name)
- cf["value"]
- end
-
- def edit_custom_field_with_alert(issue_id, custom_field_name, new_value="")
- cf = select_field(get_custom_field_defs(), custom_field_name)
- cf_id = cf["id"]
-
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(:custom_field, cf_id)
- quick_edit.update_field(issue_id, menu_selector, new_value, true)
- quick_edit.alert.accept
- quick_edit.cancel_quick_edit
-
- cf = select_field(get_custom_fields(issue_id), custom_field_name)
- cf["value"]
- end
-
- def select_field(fields, custom_field_name)
- fields.find do |cf_hash|
- cf_hash["name"] == custom_field_name.to_s
- end
- end
-
- def get_custom_field_defs
- json = get_json("/custom_fields.json?key=#{@api_key}")
-
- json["custom_fields"]
- end
-
- def get_custom_fields(issue_id)
- json = get_json("issues/#{issue_id}.json")
-
- json["issue"]["custom_fields"]
- end
-
- def get_json(path)
- uri = URI::parse "#{@base_url}#{path}"
- res = Net::HTTP::get_response(uri)
- JSON.parse(res.body)
- end
-
end
include RSpec::Expectations
describe "Edit on the mypage" do
+ let(:helper) { TestHelper.new }
before(:all) do
profile = Selenium::WebDriver::Firefox::Profile.new
before(:each) do
@my_page = @my_page.open_mypage
+ helper.page = @my_page
+ helper.base_url = @base_url
+ helper.issue_id = @issue_id
end
after(:each) do
it "subject can edit" do
new_value = 'dummy'
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value
+ expect( helper.edit(:subject, new_value) ).to eq new_value
new_value = 'subject: new_value'
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value
+ expect( helper.edit(:subject, new_value) ).to eq new_value
- expect( edit_with_alert(@issue_id, :subject, "") ).to eq new_value
+ expect( helper.edit_with_alert(:subject, "") ).to eq new_value
end
it "subject can edit with private note" do
new_value = 'dummy'
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value
+ expect( helper.edit(:subject, new_value) ).to eq new_value
new_value = {:value => 'subject: with_notes',
:notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
- expect( edit(@issue_id, :subject, new_value) ).to eq new_value[:value]
- expect( latest_note(@issue_id, @my_page.session_cookie) ).to eq new_value
+ expect( helper.edit(:subject, new_value) ).to eq new_value[:value]
+ expect( helper.latest_note ).to eq new_value
end
it "start_date can edit" do
new_value = '1900-01-01'
- expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
+ expect( helper.edit(:start_date, new_value) ).to eq new_value
new_value = '1900-01-02'
- expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
+ expect( helper.edit(:start_date, new_value) ).to eq new_value
invalid_value = '1900-01-0a'
- expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert(:start_date, invalid_value) ).to eq new_value
invalid_value = ''
- expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert(:start_date, invalid_value) ).to eq new_value
end
it "due_date can edit" do
new_value = '2000-01-01'
- expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
+ expect( helper.edit(:due_date, new_value) ).to eq new_value
new_value = '2000-01-02'
- expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
+ expect( helper.edit(:due_date, new_value) ).to eq new_value
invalid_value = '2000-01-0a'
- expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert(:due_date, invalid_value) ).to eq new_value
invalid_value = ''
- expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert(:due_date, invalid_value) ).to eq new_value
end
it "description can edit" do
new_value = 'dummy'
- expect( edit(@issue_id, :description, new_value) ).to eq new_value
+ expect( helper.edit(:description, new_value) ).to eq new_value
new_value = 'description: new_value'
- expect( edit(@issue_id, :description, new_value) ).to eq new_value
+ expect( helper.edit(:description, new_value) ).to eq new_value
invalid_value = ''
- expect( edit_with_alert(@issue_id, :description, invalid_value) ).to eq new_value
+ expect( helper.edit_with_alert(:description, invalid_value) ).to eq new_value
end
# unsigned float field
it "estimated_hours can edit" do
new_value = '0'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit(:estimated_hours, new_value).to_f ).to eq new_value.to_f
new_value = '0.1'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit(:estimated_hours, new_value).to_f ).to eq new_value.to_f
new_value = '+0.1'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit(:estimated_hours, new_value).to_f ).to eq new_value.to_f
new_value = '0.1e2'
- expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
+ expect( helper.edit(:estimated_hours, new_value).to_f ).to eq new_value.to_f
invalid_value = ''
- expect( edit_with_alert(@issue_id, :estimated_hours, invalid_value) ).to eq new_value.to_f
+ expect( helper.edit_with_alert(:estimated_hours, invalid_value) ).to eq new_value.to_f
end
#it "parent_issue_id can edit" do
# new_value = @issue_id.to_s
# expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
#end
-
- def edit(issue_id, attribute_name, new_value)
- quick_edit = @my_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- @my_page = quick_edit.update_field(issue_id, menu_selector, new_value)
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def edit_with_alert(issue_id, attribute_name, new_value)
- quick_edit = @my_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- quick_edit.update_field issue_id, menu_selector, new_value, true
- quick_edit.alert.accept
- quick_edit.cancel_quick_edit
- @my_page = quick_edit.open_mypage
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def get_core_field(issue_id, attribute_name)
- json = get_json("issues/#{issue_id}.json")
-
- json["issue"][attribute_name.to_s]
- end
-
- def get_json(path)
- uri = URI::parse "#{@base_url}#{path}"
- res = Net::HTTP::get_response(uri)
- JSON.parse(res.body)
- end
-
end
+++ /dev/null
-
-# coding: utf-8
-
-require "nokogiri"
-require "uri"
-require "net/http"
-
- def latest_note(issue_id, session_cookie)
- result = {:value => nil, :notes => {:text => nil, :is_private => nil}}
-
- feed = get_feed("issues/#{issue_id}.atom", session_cookie).css("entry")
- feed_limitted = get_feed("issues/#{issue_id}.atom").css("entry")
-
- entry = feed.pop
- entry_limitted = feed_limitted.pop
-
- parsed_entry = parse_feed_entry(entry)
- parsed_entry_limitted = parse_feed_entry(entry_limitted)
- #p "parsed_entry---"
- #p parsed_entry.inspect
- #p "parsed_entry_for_guest---"
- #p parsed_entry_limitted.inspect
-
- # private notes?
- if parsed_entry[:notes][:journal_id].to_s != parsed_entry_limitted[:notes][:journal_id].to_s
- result[:notes][:is_private] = true
- else
- result[:notes][:is_private] = false
- end
-
- # The <entry> was splitted if notes is private.
- if result[:notes][:is_private]
- result[:value] = parsed_entry_limitted[:value]
- result[:notes][:text] = parsed_entry[:notes][:text]
- else
- result[:value] = parsed_entry[:value]
- result[:notes][:text] = parsed_entry[:notes][:text]
- end
-
- result
- end
-
- def parse_feed_entry(entry)
- result = {:value => nil, :notes => {:journal_id => nil, :text => nil, :is_private => nil}}
-
- # parse <id>
- result[:notes][:journal_id] = entry.css("id").text
-
- # parse <content>
- src = entry.css("content").text
- #p "content=" + src
- html = Nokogiri::HTML(src)
-
- # get change field from <content>
- # - attension - one field only.
- unless html.css("li").empty?
- change_desc = html.css("li").first
- #p "li=" + change_desc.inner_html
-
- field_name = change_desc.css("strong").first.text
- if change_desc.css("i").length == 2
- result[:value] = change_desc.css("i").last.text
- else
- result[:value] = :none
- end
- end
-
- # get notes from <content>
- # - attension - not support wiki format
- #p "inner html=" + html.inner_html
- notes = Nokogiri::HTML(html.inner_html).css("p").inner_html.gsub(/<br>/, "\n")
- #p "text=" + notes
- result[:notes][:text] = notes
-
- result
- end
-
- def get_feed(path, session_cookie=nil)
- uri = URI::parse "#{@base_url}#{path}"
- if session_cookie.nil?
- headers = {}
- else
- headers = {'Cookie' => cookie_hash_to_header_string(session_cookie)}
- end
- res = Net::HTTP.start(uri.host, uri.port) do |http|
- http.get(uri.path, headers)
- end
- src = res.body.gsub(/<content type="html">/, "<content>") # To avoid erroneous decisions made by Nokogiri
- Nokogiri::Slop(src)
- end
-
- def cookie_hash_to_header_string(cookie)
- "#{cookie[:name]}=#{cookie[:value]};path=#{cookie[:path]}"
- end
module Test
module Pages
class MyApiKeyPage < Page
- def initialize(driver, base_url, project)
+ def initialize(driver, base_url, project, redmine_version)
super(driver, base_url, project)
+ @redmine_version = redmine_version
- find_element :css, "body[class='controller-my action-show_api_key']"
+ if @redmine_version >= 301
+ find_element :css, "body[class='controller-my action-show_api_key']"
+ else
+ find_element :css, "body[class='controller-my action-account']"
+ end
end
- def self.open(driver, base_url, project)
- driver.get "#{base_url}/my/api_key"
- MyApiKeyPage.new driver, base_url, project
+ def self.open(driver, base_url, project, redmine_version)
+ if redmine_version >= 301
+ driver.get "#{base_url}/my/api_key"
+ MyApiKeyPage.new driver, base_url, project, redmine_version
+ else
+ driver.get "#{base_url}/my/account"
+ MyApiKeyPage.new driver, base_url, project, redmine_version
+ end
end
def key
- find_element(:css, "div.box > pre").text
+ if @redmine_version >= 301
+ find_element(:css, "div.box > pre").text
+ else
+ find_elements(:css, 'a[href="#"]').select do |e|
+ e.text == "Show"
+ end.first.click
+ find_element(:css, "pre#api-access-key").text
+ end
end
end
end
@driver.switch_to.alert
end
- def open_my_apikey
- MyApiKeyPage.open @driver, @base_url, @project
+ def open_my_apikey(redmine_version)
+ MyApiKeyPage.open @driver, @base_url, @project, redmine_version
end
def open_admin_info
@before_page.class.open @driver, @base_url, @project unless desire_alerting
end
- def clear_field(issue_id, menu_selector)
+ def clear_field(issue_id, menu_selector, notes)
menu_element = find_element(:id, "quick_edit_context")
menu_item_element = find_element(:css, menu_selector)
action.move_to(menu_element).click(menu_item_element).perform
+ if notes.is_a?(Hash)
+ input_text :id, "notes_for_edit", notes[:text] unless notes.nil?
+ click :id, "issue_private_notes_for_edit" if notes[:is_private]
+ end
find_element(:css, '#quick_edit_input_dialog #clear').click
buttons = find_elements(:css, "button > span")
include RSpec::Expectations
describe "Replace core field" do
+ let(:helper) { TestHelper.new }
before(:all) do
profile = Selenium::WebDriver::Firefox::Profile.new
before(:each) do
@issues_page = @issues_page.open_issues
+ helper.page = @issues_page
+ helper.base_url = @base_url
+ helper.issue_id = @issue_id
end
after(:each) do
:replace => 'NEW',
:match_case => false
}
- expect( replace(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace(:subject, params) ).to eq new_value
# match case test: to lower
new_value = 'new text'
:replace => 'new',
:match_case => true
}
- expect( replace(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace(:subject, params) ).to eq new_value
# special chars test
new_value = "new<>\'\"&\\+ %text"
:replace => "<>\'\"&\\+ %",
:match_case => false
}
- expect( replace(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace(:subject, params) ).to eq new_value
# escape test for meta character of regexp pattern
new_value = "new<>\'\"&\\++ %text"
:replace => "\\+",
:match_case => false
}
- expect( replace(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace(:subject, params) ).to eq new_value
params = {
:find => '',
:replace => '',
:match_case => false
}
- expect( replace_with_alert(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace_with_alert(:subject, params) ).to eq new_value
end
it "subject can replace with private note" do
# initialize
new_value = 'dummy'
- edit(@issue_id, :subject, new_value)
+ helper.edit(:subject, new_value)
# find & replace
new_value = {:value => 'summy',
:replace => 's',
:match_case => false,
:notes => new_value[:notes]}
- expect( replace(@issue_id, :subject, params) ).to eq new_value[:value]
- expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
+ expect( helper.replace(:subject, params) ).to eq new_value[:value]
+ expect( helper.latest_note ).to eq new_value
end
-
- def edit(issue_id, attribute_name, new_value)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def replace(issue_id, attribute_name, params)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- @issues_page = quick_edit.replace(issue_id, menu_selector, params)
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def replace_with_alert(issue_id, attribute_name, params)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- quick_edit.replace(issue_id, menu_selector, params, true)
- quick_edit.alert.accept
- quick_edit.cancel_quick_edit
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def get_core_field(issue_id, attribute_name)
- json = get_json("issues/#{issue_id}.json")
-
- json["issue"][attribute_name.to_s]
- end
-
- def get_json(path)
- uri = URI::parse "#{@base_url}#{path}"
- res = Net::HTTP::get_response(uri)
- JSON.parse(res.body)
- end
-
end
require "json"
require "selenium-webdriver"
-$: << File.expand_path('../../', __FILE__)
require 'spec_helper'
Dir[File.dirname(__FILE__) + '/pages/page.rb'].each {|file| require file }
Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
include RSpec::Expectations
describe "Replace core field" do
+ let(:helper) { TestHelper.new }
before(:all) do
profile = Selenium::WebDriver::Firefox::Profile.new
before(:each) do
@issues_page = @issues_page.open_mypage
+ helper.page = @issues_page
+ helper.base_url = @base_url
+ helper.issue_id = @issue_id
end
after(:each) do
:find => 'initial',
:replace => 'new'
}
- expect( replace(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace(:subject, params) ).to eq new_value
new_value = "new<>\'\"&+% text"
params = {
:find => ' ',
:replace => "<>\'\"&+% "
}
- expect( replace(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace(:subject, params) ).to eq new_value
params = {
:find => '',
:replace => ''
}
- expect( replace_with_alert(@issue_id, :subject, params) ).to eq new_value
+ expect( helper.replace_with_alert(:subject, params) ).to eq new_value
end
it "subject can replace with private note" do
# initialize
new_value = 'dummy'
- edit(@issue_id, :subject, new_value)
+ helper.edit(:subject, new_value)
# find & replace
new_value = {:value => 'summy',
:replace => 's',
:match_case => false,
:notes => new_value[:notes]}
- expect( replace(@issue_id, :subject, param) ).to eq new_value[:value]
- expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
+ expect( helper.replace(:subject, param) ).to eq new_value[:value]
+ expect( helper.latest_note ).to eq new_value
end
- def edit(issue_id, attribute_name, new_value)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def replace(issue_id, attribute_name, params)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- @issues_page = quick_edit.replace(issue_id, menu_selector, params, false)
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def replace_with_alert(issue_id, attribute_name, params)
- quick_edit = @issues_page.open_context(issue_id)
- menu_selector = quick_edit.menu_selector(attribute_name)
- quick_edit.replace(issue_id, menu_selector, params, true)
- quick_edit.alert.accept
- quick_edit.cancel_quick_edit
-
- attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
- field_value = get_core_field(issue_id, attribute_name)
-
- if attribute_name == :parent
- field_value["id"]
- else
- field_value
- end
- end
-
- def get_core_field(issue_id, attribute_name)
- json = get_json("issues/#{issue_id}.json")
-
- json["issue"][attribute_name.to_s]
- end
-
- def get_json(path)
- uri = URI::parse "#{@base_url}#{path}"
- res = Net::HTTP::get_response(uri)
- JSON.parse(res.body)
- end
-
-
end