OSDN Git Service

test for add note. refs #35392
[quickedit/quick_edit.git] / test / selenium / replace_core_field_on_mypage.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 Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file }
10 require "uri"
11 require "net/http"
12 include RSpec::Expectations
13
14 describe "Replace core field" do
15
16   before(:all) 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"
26
27     # open issues page
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
31
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
36
37   end
38
39   before(:each) do
40     @issues_page = @issues_page.open_mypage
41   end
42   
43   after(:each) do
44     expect(@verification_errors).to match_array []
45   end
46   
47   after(:all) do
48     @driver.quit
49   end
50   
51   it "subject can replace" do
52     new_value = 'new text'
53     find = 'initial'
54     replace = 'new'
55     expect( replace(@issue_id, :subject, find, replace) ).to eq new_value
56
57     new_value = "new<>\'\"&+% text"
58     find = ' '
59     replace = "<>\'\"&+% "
60     expect( replace(@issue_id, :subject, find, replace) ).to eq new_value
61
62     find = ''
63     replace = ''
64     expect( replace_with_alert(@issue_id, :subject, find, replace) ).to eq new_value
65   end
66
67   it "subject can replace with private note" do
68     # initialize
69     new_value = 'dummy'
70     edit(@issue_id, :subject, new_value)
71
72     # find & replace
73     new_value = {:value => 'summy',
74                  :notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
75     param = {:find => 'd',
76              :replace => 's',
77              :match_case => false,
78              :notes => new_value[:notes]}
79     expect( replace(@issue_id, :subject, param) ).to eq new_value[:value]
80     expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
81   end
82
83   def edit(issue_id, attribute_name, new_value)
84     quick_edit = @issues_page.open_context(issue_id)
85     menu_selector = quick_edit.menu_selector(attribute_name)
86     @issues_page = quick_edit.update_field(issue_id, menu_selector, new_value)
87
88     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
89     field_value = get_core_field(issue_id, attribute_name)
90
91     if attribute_name == :parent
92       field_value["id"]
93     else
94       field_value
95     end
96   end
97
98   def replace(issue_id, attribute_name, find, replace=nil)
99     quick_edit = @issues_page.open_context(issue_id)
100     menu_selector = quick_edit.menu_selector(attribute_name)
101     @issues_page = quick_edit.replace(issue_id, menu_selector, find, replace, false)
102
103     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
104     field_value = get_core_field(issue_id, attribute_name)
105
106     if attribute_name == :parent
107       field_value["id"]
108     else
109       field_value
110     end
111   end
112
113   def replace_with_alert(issue_id, attribute_name, find, replace)
114     quick_edit = @issues_page.open_context(issue_id)
115     menu_selector = quick_edit.menu_selector(attribute_name)
116     quick_edit.replace(issue_id, menu_selector, find, replace, false, true)
117     quick_edit.alert.accept
118     quick_edit.cancel_quick_edit
119
120     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
121     field_value = get_core_field(issue_id, attribute_name)
122
123     if attribute_name == :parent
124       field_value["id"]
125     else
126       field_value
127     end
128   end
129
130   def get_core_field(issue_id, attribute_name)
131     json = get_json("issues/#{issue_id}.json")
132
133     json["issue"][attribute_name.to_s]
134   end
135
136   def get_json(path)
137     uri = URI::parse "#{@base_url}#{path}"
138     res = Net::HTTP::get_response(uri)
139     JSON.parse(res.body)
140   end
141   
142   
143 end