OSDN Git Service

test for add note. refs #35392
[quickedit/quick_edit.git] / test / selenium / edit_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/quick_edit.rb'].each {|file| require file }
9 Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
10 Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file }
11 require "uri"
12 require "net/http"
13 include RSpec::Expectations
14
15 describe "Edit on the mypage" do
16
17   before(:all) do
18     profile = Selenium::WebDriver::Firefox::Profile.new
19     @driver = Selenium::WebDriver.for :firefox, :profile => profile
20     @driver.manage.window.maximize
21     @base_url = "http://localhost:3000/"
22     @driver.manage.timeouts.implicit_wait = 10
23     @verification_errors = []
24     @default_project = "test"
25     @default_user = "admin"
26     @default_password = "dummy"
27
28     # open issues page
29     start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
30     first_page = start_page.login @default_user, @default_password
31     issues_page = first_page.open_issues
32
33     # create issue for test
34     issue_new_page = issues_page.open_new_page()
35     issue_show_page = issue_new_page.create(:bug, 'first subject')
36
37     @my_page = issues_page.open_mypage
38     @issue_id = @my_page.issue_ids_on_page.first
39   end
40
41   before(:each) do
42     @my_page = @my_page.open_mypage
43   end
44   
45   after(:each) do
46     expect(@verification_errors).to match_array []
47   end
48   
49   after(:all) do
50     @driver.quit
51   end
52   
53   it "subject can edit" do
54     new_value = 'dummy'
55     expect( edit(@issue_id, :subject, new_value) ).to eq new_value
56
57     new_value = 'subject: new_value'
58     expect( edit(@issue_id, :subject, new_value) ).to eq new_value
59
60     expect( edit_with_alert(@issue_id, :subject, "") ).to eq new_value
61   end
62
63   it "subject can edit with private note" do
64     new_value = 'dummy'
65     expect( edit(@issue_id, :subject, new_value) ).to eq new_value
66
67     new_value = {:value => 'subject: with_notes',
68                  :notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
69     expect( edit(@issue_id, :subject, new_value) ).to eq new_value[:value]
70     expect( latest_note(@issue_id, @my_page.session_cookie) ).to eq new_value
71   end
72
73   it "start_date can edit" do
74     new_value = '1900-01-01'
75     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
76
77     new_value = '1900-01-02'
78     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
79
80     invalid_value = '1900-01-0a'
81     expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
82
83     invalid_value = ''
84     expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
85   end
86
87   it "due_date can edit" do
88     new_value = '2000-01-01'
89     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
90
91     new_value = '2000-01-02'
92     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
93
94     invalid_value = '2000-01-0a'
95     expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
96
97     invalid_value = ''
98     expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
99   end
100
101   it "description can edit" do
102     new_value = 'dummy'
103     expect( edit(@issue_id, :description, new_value) ).to eq new_value
104
105     new_value = 'description: new_value'
106     expect( edit(@issue_id, :description, new_value) ).to eq new_value
107
108     invalid_value = ''
109     expect( edit_with_alert(@issue_id, :description, invalid_value) ).to eq new_value
110   end
111
112   # unsigned float field
113   it "estimated_hours can edit" do
114     new_value = '0'
115     expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
116
117     new_value = '0.1'
118     expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
119
120     new_value = '+0.1'
121     expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
122
123     new_value = '0.1e2'
124     expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
125
126     invalid_value = ''
127     expect( edit_with_alert(@issue_id, :estimated_hours, invalid_value) ).to eq new_value.to_f
128   end
129
130   #it "parent_issue_id can edit" do
131   #  issue_ids = @my_page.issue_ids_on_page
132   #  issue_new_page = @my_page.open_new_page()
133   #  issue_show_page = issue_new_page.create(:bug, 'first subject')
134   #  new_issue_id = issue_show_page.id
135   #  @my_page = issue_show_page.open_issues
136
137   #  new_value = @issue_id.to_s
138   #  expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
139
140   #  invalid_value = ''
141   #  expect( edit_with_alert(new_issue_id, :parent_issue_id, invalid_value) ).to eq new_value.to_i
142
143   #  new_value = @issue_id.to_s
144   #  expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
145   #end
146
147   def edit(issue_id, attribute_name, new_value)
148     quick_edit = @my_page.open_context(issue_id)
149     menu_selector = quick_edit.menu_selector(attribute_name)
150     @my_page = quick_edit.update_field(issue_id, menu_selector, new_value)
151
152     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
153     field_value = get_core_field(issue_id, attribute_name)
154
155     if attribute_name == :parent
156       field_value["id"]
157     else
158       field_value
159     end
160   end
161
162   def edit_with_alert(issue_id, attribute_name, new_value)
163     quick_edit = @my_page.open_context(issue_id)
164     menu_selector = quick_edit.menu_selector(attribute_name)
165     quick_edit.update_field issue_id, menu_selector, new_value, true
166     quick_edit.alert.accept
167     quick_edit.cancel_quick_edit
168     @my_page = quick_edit.open_mypage
169
170     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
171     field_value = get_core_field(issue_id, attribute_name)
172
173     if attribute_name == :parent
174       field_value["id"]
175     else
176       field_value
177     end
178   end
179
180   def get_core_field(issue_id, attribute_name)
181     json = get_json("issues/#{issue_id}.json")
182
183     json["issue"][attribute_name.to_s]
184   end
185
186   def get_json(path)
187     uri = URI::parse "#{@base_url}#{path}"
188     res = Net::HTTP::get_response(uri)
189     JSON.parse(res.body)
190   end
191   
192   
193 end