OSDN Git Service

add selenium test code.
[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     expect( edit_with_alert(@issue_id, :start_date, "") ).to eq new_value
55   end
56
57   it "due_date can edit" do
58     new_value = '2000-01-01'
59     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
60
61     new_value = '2000-01-02'
62     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
63
64     expect( edit_with_alert(@issue_id, :due_date, "") ).to eq new_value
65   end
66
67   it "description can edit" do
68     new_value = 'dummy'
69     expect( edit(@issue_id, :description, new_value) ).to eq new_value
70
71     new_value = 'description: new_value'
72     expect( edit(@issue_id, :description, new_value) ).to eq new_value
73
74     expect( edit_with_alert(@issue_id, :description, "") ).to eq new_value
75   end
76
77   def edit(issue_id, attribute_name, new_value)
78     @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value
79
80     field_value = get_core_field(issue_id, attribute_name)
81     field_value
82   end
83
84   def edit_with_alert(issue_id, attribute_name, new_value)
85     @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value, true
86     @issues_page.alert.accept
87
88     field_value = get_core_field(issue_id, attribute_name)
89     field_value
90   end
91
92   def edit_custom_field(issue_id, custom_field_name, new_value)
93     cf = get_custom_field(issue_id, custom_field_name)
94     cf_id = cf["id"]
95
96     @issues_page.quick_edit_for_custom_field issue_id, cf_id, new_value
97
98     cf = get_custom_field(issue_id, custom_field_name)
99     cf["value"]
100   end
101
102   def get_core_field(issue_id, attribute_name)
103     json = get_json("issues/#{issue_id}.json")
104
105     json["issue"][attribute_name.to_s]
106   end
107
108   def get_custom_field(issue_id, custom_field_name)
109     cf_hash_list = get_custom_fields(issue_id)
110
111     cf_hash = cf_hash_list.select do |cf_hash|
112       cf_hash["name"] == custom_field_name.to_s
113     end
114
115     cf_hash.first
116   end
117
118   def get_custom_fields(issue_id)
119     json = get_json("issues/#{issue_id}.json")
120
121     json["issue"]["custom_fields"]
122   end
123
124   def get_json(path)
125     uri = URI::parse "#{@base_url}#{path}"
126     res = Net::HTTP::get_response(uri)
127     JSON.parse(res.body)
128   end
129   
130   
131 end