From efb4406006cfd4fb336bae9cfe0139ddf2b4d17c Mon Sep 17 00:00:00 2001 From: akira saito Date: Sun, 26 Jul 2015 23:37:24 +0900 Subject: [PATCH] add testcode --- test/selenium/replace_core_field_on_mypage.rb | 129 ++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 test/selenium/replace_core_field_on_mypage.rb diff --git a/test/selenium/replace_core_field_on_mypage.rb b/test/selenium/replace_core_field_on_mypage.rb new file mode 100644 index 0000000..48a0a9b --- /dev/null +++ b/test/selenium/replace_core_field_on_mypage.rb @@ -0,0 +1,129 @@ +# coding: utf-8 + +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 } +require "uri" +require "net/http" +include RSpec::Expectations + +describe "Replace core field" do + + before(:all) do + profile = Selenium::WebDriver::Firefox::Profile.new + @driver = Selenium::WebDriver.for :firefox, :profile => profile + @driver.manage.window.maximize + @base_url = "http://localhost:3000/" + @driver.manage.timeouts.implicit_wait = 10 + @verification_errors = [] + @default_project = "test" + @default_user = "admin" + @default_password = "dummy" + + # open issues page + 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 + + # create issue for test + issue_new_page = @issues_page.open_new_page() + issue_show_page = issue_new_page.create(:bug, 'first subject') + @issue_id = issue_show_page.id + + end + + before(:each) do + @issues_page = @issues_page.open_mypage + end + + after(:each) do + expect(@verification_errors).to match_array [] + end + + after(:all) do + @driver.quit + end + + it "subject can replace" do + new_value = 'initial text' + expect( edit(@issue_id, :subject, new_value) ).to eq new_value + + new_value = 'new text' + find = 'initial' + replace = 'new' + expect( replace(@issue_id, :subject, find, replace) ).to eq new_value + + new_value = "new<>\'\"&+% text" + find = ' ' + replace = "<>\'\"&+% " + expect( replace(@issue_id, :subject, find, replace) ).to eq new_value + + find = '' + replace = '' + expect( replace_with_alert(@issue_id, :subject, find, replace) ).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, find, replace) + 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, find, replace) + + 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, find, replace) + quick_edit = @issues_page.open_context(issue_id) + menu_selector = quick_edit.menu_selector(attribute_name) + quick_edit.replace(issue_id, menu_selector, find, replace, 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 -- 2.11.0