OSDN Git Service

50b3a59e7100b568afa6f759ec6ee5a61f2e7995
[quickedit/quick_edit.git] / test / selenium / edit_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 "Edit" do
14
15   before(:each) 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     @accept_next_alert = true
21     @driver.manage.timeouts.implicit_wait = 10
22     @verification_errors = []
23     @default_project = "test"
24     @default_user = "admin"
25     @default_password = "dummy"
26     @issue_id = 1
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   end
31   
32   after(:each) do
33     @driver.quit
34     expect(@verification_errors).to match_array []
35   end
36   
37   it "subject can edit" do
38     new_value = 'dummy'
39     expect( edit(@issue_id, :subject, new_value) ).to eq new_value
40
41     new_value = 'subject: new_value'
42     expect( edit(@issue_id, :subject, new_value) ).to eq new_value
43
44     expect( edit_with_alert(@issue_id, :subject, "") ).to eq new_value
45   end
46
47   it "start_date can edit" do
48     new_value = '1900-01-01'
49     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
50
51     new_value = '1900-01-02'
52     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
53
54     invalid_value = '1900-01-0a'
55     expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
56
57     invalid_value = ''
58     expect( edit_with_alert(@issue_id, :start_date, invalid_value) ).to eq new_value
59   end
60
61   it "due_date can edit" do
62     new_value = '2000-01-01'
63     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
64
65     new_value = '2000-01-02'
66     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
67
68     invalid_value = '2000-01-0a'
69     expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
70
71     invalid_value = ''
72     expect( edit_with_alert(@issue_id, :due_date, invalid_value) ).to eq new_value
73   end
74
75   it "description can edit" do
76     new_value = 'dummy'
77     expect( edit(@issue_id, :description, new_value) ).to eq new_value
78
79     new_value = 'description: new_value'
80     expect( edit(@issue_id, :description, new_value) ).to eq new_value
81
82     expect( edit_with_alert(@issue_id, :description, "") ).to eq new_value
83   end
84
85   def edit(issue_id, attribute_name, new_value)
86     @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value
87
88     field_value = get_core_field(issue_id, attribute_name)
89     field_value
90   end
91
92   def edit_with_alert(issue_id, attribute_name, new_value)
93     @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value, true
94     @issues_page.alert.accept
95     @issues_page.cancel_quick_edit
96
97     field_value = get_core_field(issue_id, attribute_name)
98     field_value
99   end
100
101   def edit_custom_field(issue_id, custom_field_name, new_value)
102     cf = get_custom_field(issue_id, custom_field_name)
103     cf_id = cf["id"]
104
105     @issues_page.quick_edit_for_custom_field issue_id, cf_id, new_value
106
107     cf = get_custom_field(issue_id, custom_field_name)
108     cf["value"]
109   end
110
111   def get_core_field(issue_id, attribute_name)
112     json = get_json("issues/#{issue_id}.json")
113
114     json["issue"][attribute_name.to_s]
115   end
116
117   def get_custom_field(issue_id, custom_field_name)
118     cf_hash_list = get_custom_fields(issue_id)
119
120     cf_hash = cf_hash_list.select do |cf_hash|
121       cf_hash["name"] == custom_field_name.to_s
122     end
123
124     cf_hash.first
125   end
126
127   def get_custom_fields(issue_id)
128     json = get_json("issues/#{issue_id}.json")
129
130     json["issue"]["custom_fields"]
131   end
132
133   def get_json(path)
134     uri = URI::parse "#{@base_url}#{path}"
135     res = Net::HTTP::get_response(uri)
136     JSON.parse(res.body)
137   end
138   
139   
140 end