OSDN Git Service

921f7a947465939d249f7addc4e10b80a5e0f3e3
[quickedit/quick_edit.git] / test / selenium / replace_core_field.rb
1 # coding: utf-8
2
3 require "json"
4 require "selenium-webdriver"
5 $: << File.expand_path('../../', __FILE__)
6 require 'spec_helper'
7 Dir[File.dirname(__FILE__) + '/pages/page.rb'].each {|file| require file }
8 Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
9 require "uri"
10 require "net/http"
11 include RSpec::Expectations
12
13 describe "Replace core field" do
14
15   before(:all) do
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     @driver.manage.timeouts.implicit_wait = 10
21     @verification_errors = []
22     @default_project = "test"
23     @default_user = "admin"
24     @default_password = "dummy"
25
26     # open issues page
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
30
31     # create issue for test
32     issue_new_page = @issues_page.open_new_page()
33     issue_show_page = issue_new_page.create(:bug, 'initial text')
34     @issue_id = issue_show_page.id
35
36   end
37
38   before(:each) do
39     @issues_page = @issues_page.open_issues
40   end
41   
42   after(:each) do
43     expect(@verification_errors).to match_array []
44   end
45   
46   after(:all) do
47     @driver.quit
48   end
49   
50   it "subject can replace" do
51     new_value = 'NEW text'
52     find = 'initial'
53     replace = 'NEW'
54     match_case = false
55     expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
56
57     # match case test: to lower
58     new_value = 'new text'
59     find = 'new'
60     replace = 'new'
61     match_case = true
62     expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
63
64     # special chars test
65     new_value = "new<>\'\"&\\+ %text"
66     find = ' '
67     replace = "<>\'\"&\\+ %"
68     match_case = false
69     expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
70
71     # escape test for meta character of regexp pattern
72     new_value = "new<>\'\"&\\++ %text"
73     find = '\\'
74     replace = "\\+"
75     match_case = false
76     expect( replace(@issue_id, :subject, find, replace, match_case) ).to eq new_value
77
78     find = ''
79     replace = ''
80     match_case = false
81     expect( replace_with_alert(@issue_id, :subject, find, replace, match_case) ).to eq new_value
82   end
83
84   def edit(issue_id, attribute_name, new_value)
85     quick_edit = @issues_page.open_context(issue_id)
86     menu_selector = quick_edit.menu_selector(attribute_name)
87     @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
88
89     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
90     field_value = get_core_field(issue_id, attribute_name)
91
92     if attribute_name == :parent
93       field_value["id"]
94     else
95       field_value
96     end
97   end
98
99   def replace(issue_id, attribute_name, find, replace, match_case)
100     quick_edit = @issues_page.open_context(issue_id)
101     menu_selector = quick_edit.menu_selector(attribute_name)
102     @issues_page = quick_edit.replace(issue_id, menu_selector, find, replace, match_case)
103
104     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
105     field_value = get_core_field(issue_id, attribute_name)
106
107     if attribute_name == :parent
108       field_value["id"]
109     else
110       field_value
111     end
112   end
113
114   def replace_with_alert(issue_id, attribute_name, find, replace, match_case)
115     quick_edit = @issues_page.open_context(issue_id)
116     menu_selector = quick_edit.menu_selector(attribute_name)
117     quick_edit.replace(issue_id, menu_selector, find, replace, match_case, true)
118     quick_edit.alert.accept
119     quick_edit.cancel_quick_edit
120
121     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
122     field_value = get_core_field(issue_id, attribute_name)
123
124     if attribute_name == :parent
125       field_value["id"]
126     else
127       field_value
128     end
129   end
130
131   def get_core_field(issue_id, attribute_name)
132     json = get_json("issues/#{issue_id}.json")
133
134     json["issue"][attribute_name.to_s]
135   end
136
137   def get_json(path)
138     uri = URI::parse "#{@base_url}#{path}"
139     res = Net::HTTP::get_response(uri)
140     JSON.parse(res.body)
141   end
142   
143   
144 end