OSDN Git Service

test for add note. refs #35392
[quickedit/quick_edit.git] / test / selenium / clear_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 Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each {|file| require file }
10 require "uri"
11 require "net/http"
12 include RSpec::Expectations
13
14 describe "Clear 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, 'first subject')
35     @issue_id = issue_show_page.id
36
37   end
38
39   before(:each) do
40     @issues_page = @issues_page.open_issues
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 "start_date can clear" do
52     new_value = '1900-01-01'
53     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
54
55     expect( clear(@issue_id, :start_date) ).to eq nil
56   end
57
58   it "start_date can clear with private notes" do
59     # before edit
60     new_value = '1900-01-01'
61     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
62
63     # clear
64     new_value = {:value => :none,
65                  :notes => {:text => "notes\ntime=" + (Time.now.to_s), :is_private => true}}
66     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value[:value]
67     expect( latest_note(@issue_id, @issues_page.session_cookie) ).to eq new_value
68   end
69
70   it "due_date can clear" do
71     new_value = '2000-01-01'
72     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
73
74     expect( clear(@issue_id, :due_date) ).to eq nil
75   end
76
77   it "estimated_hours can clear" do
78     new_value = '0'
79     expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
80
81     expect( clear(@issue_id, :estimated_hours) ).to eq nil
82   end
83
84   it "parent_issue_id can clear" do
85     issue_ids = @issues_page.issue_ids_on_page
86     issue_new_page = @issues_page.open_new_page()
87     issue_show_page = issue_new_page.create(:bug, 'first subject')
88     new_issue_id = issue_show_page.id
89     @issues_page = issue_show_page.open_issues
90
91     new_value = @issue_id.to_s
92     expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
93
94     expect( clear(new_issue_id, :parent_issue_id) ).to eq nil
95   end
96
97   def edit(issue_id, attribute_name, new_value)
98     @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value
99
100     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
101     field_value = get_core_field(issue_id, attribute_name)
102     field_value = :none if field_value.nil?
103
104     if attribute_name == :parent
105       field_value["id"]
106     else
107       field_value
108     end
109   end
110
111   def clear(issue_id, attribute_name)
112     quick_edit = @issues_page.open_context(issue_id)
113     menu_selector = quick_edit.menu_selector(attribute_name)
114     @issues_page = quick_edit.clear_field(issue_id, menu_selector)
115
116     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
117     field_value = get_core_field(issue_id, attribute_name)
118   end
119
120   def get_core_field(issue_id, attribute_name)
121     json = get_json("issues/#{issue_id}.json")
122
123     json["issue"][attribute_name.to_s]
124   end
125
126   def get_json(path)
127     uri = URI::parse "#{@base_url}#{path}"
128     res = Net::HTTP::get_response(uri)
129     JSON.parse(res.body)
130   end
131 end