OSDN Git Service

add selenium test code.
[quickedit/quick_edit.git] / test / selenium / setup.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     start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
27     @first_page = start_page.login @default_user, @default_password
28   end
29   
30   after(:each) do
31     @driver.quit
32     expect(@verification_errors).to match_array []
33   end
34
35   it "setup project" do
36     json = get_json("projects.json")
37     test_project = json["projects"].select do |project|
38        project["name"] == "test"
39     end
40     if test_project.empty?
41       projects_page = @first_page.open_projects
42       project_new_page = projects_page.open_new_page
43       project_settings_page = project_new_page.create @default_project, @default_project
44     end
45   end
46
47   it "setup issues" do
48     issues_page = @first_page.open_issues
49     issue_ids = issues_page.issue_ids_on_page
50     if issue_ids.empty?
51       issue_new_page = issues_page.open_new_page()
52       issue_show_page = issue_new_page.create(:bug, 'first subject')
53       @issue_id = issue_show_page.id
54     else
55       @issue_id = issue_ids.first
56     end
57   end
58
59   it "setup custom fields" do
60     custom_fields_page = @first_page.open_custom_fields
61     id = custom_fields_page.find_field(:custom_text)
62     if id.nil?
63       new_page = custom_fields_page.open_new_page
64       custom_fields_page = new_page.create :custom_text, :string
65     end
66
67     id = custom_fields_page.find_field(:custom_long)
68     if id.nil?
69       new_page = custom_fields_page.open_new_page
70       custom_fields_page = new_page.create :custom_long, :text
71     end
72
73     id = custom_fields_page.find_field(:custom_int)
74     if id.nil?
75       new_page = custom_fields_page.open_new_page
76       custom_fields_page = new_page.create :custom_int, :int
77     end
78
79     id = custom_fields_page.find_field(:custom_float)
80     if id.nil?
81       new_page = custom_fields_page.open_new_page
82       custom_fields_page = new_page.create :custom_float, :float
83     end
84
85     id = custom_fields_page.find_field(:custom_date)
86     if id.nil?
87       new_page = custom_fields_page.open_new_page
88       custom_fields_page = new_page.create :custom_date, :date
89     end
90
91     id = custom_fields_page.find_field(:readonly_in_progress)
92     if id.nil?
93       new_page = custom_fields_page.open_new_page
94       custom_fields_page = new_page.create :readonly_in_progress, :string
95     end
96   end
97
98   it "setup users" do
99     users_page = @first_page.open_users
100     rep_user_id = users_page.find_user("rep1")
101     if rep_user_id.nil?
102       user_new_page = users_page.open_new_page
103       user_edit_page = user_new_page.create("rep1", "1", "rep", "rep1@localhost.com", "dummy")
104     end
105   end
106
107   it "setup roles" do
108     users_page = @first_page.open_users
109     rep_user_id = users_page.find_user("rep1")
110
111     projects_page = users_page.open_projects
112     project_page = projects_page.open_settings_page(@default_project)
113     members_page = project_page.open_members
114     role_name = members_page.find_role(rep_user_id)
115     #p role_name
116     if role_name.nil?
117       reporter_role_id = 5 #reporter_role_id
118       members_page = members_page.add rep_user_id, reporter_role_id
119       members_page.find_role(rep_user_id)
120     end
121   end
122
123   it "setup permissions" do
124     role_reporter = "5" #reporter
125     tracker_bug = "1" #bug
126     state_new = "1" #new
127     custom_field_readonly = get_custom_field(1, "readonly_in_progress")["id"].to_s
128     #p "readonly in progress's id = #{custom_field_readonly}"
129
130     workflow_edit_page = @first_page.open_workflow_edit
131     permission_page = workflow_edit_page.open_field_permission_page
132     permissions = permission_page.get_permissions(role_reporter, tracker_bug, state_new, [custom_field_readonly])
133     #p permissions.inspect
134
135     permission = permissions[custom_field_readonly][state_new]
136     if permission.nil? || permission != "readonly"
137       permissions = { custom_field_readonly => {state_new => "readonly"} }
138       permission_page.update role_reporter, tracker_bug, permissions
139     end
140   end
141
142   def get_custom_field(issue_id, custom_field_name)
143     cf_hash_list = get_custom_fields(issue_id)
144
145     cf_hash = cf_hash_list.select do |cf_hash|
146       cf_hash["name"] == custom_field_name.to_s
147     end
148
149     cf_hash.first
150   end
151
152   def get_custom_fields(issue_id)
153     json = get_json("issues/#{issue_id}.json")
154
155     json["issue"]["custom_fields"]
156   end
157
158   def get_json(path)
159     uri = URI::parse "#{@base_url}#{path}"
160     res = Net::HTTP::get_response(uri)
161     JSON.parse(res.body)
162   end
163   
164 end