4 require "selenium-webdriver"
5 $: << File.expand_path('../../', __FILE__)
7 Dir[File.dirname(__FILE__) + '/pages/page.rb'].each {|file| require file }
8 Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
11 include RSpec::Expectations
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
32 expect(@verification_errors).to match_array []
36 json = get_json("projects.json")
37 test_project = json["projects"].select do |project|
38 project["name"] == "test"
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
48 issues_page = @first_page.open_issues
49 issue_ids = issues_page.issue_ids_on_page
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
55 @issue_id = issue_ids.first
59 it "setup custom fields" do
60 custom_fields_page = @first_page.open_custom_fields
61 id = custom_fields_page.find_field(:custom_text)
63 new_page = custom_fields_page.open_new_page
64 custom_fields_page = new_page.create :custom_text, :string
67 id = custom_fields_page.find_field(:custom_long)
69 new_page = custom_fields_page.open_new_page
70 custom_fields_page = new_page.create :custom_long, :text
73 id = custom_fields_page.find_field(:custom_int)
75 new_page = custom_fields_page.open_new_page
76 custom_fields_page = new_page.create :custom_int, :int
79 id = custom_fields_page.find_field(:custom_float)
81 new_page = custom_fields_page.open_new_page
82 custom_fields_page = new_page.create :custom_float, :float
85 id = custom_fields_page.find_field(:custom_date)
87 new_page = custom_fields_page.open_new_page
88 custom_fields_page = new_page.create :custom_date, :date
91 id = custom_fields_page.find_field(:readonly_in_progress)
93 new_page = custom_fields_page.open_new_page
94 custom_fields_page = new_page.create :readonly_in_progress, :string
99 users_page = @first_page.open_users
100 rep_user_id = users_page.find_user("rep1")
102 user_new_page = users_page.open_new_page
103 user_edit_page = user_new_page.create("rep1", "1", "rep", "rep1@localhost.com", "dummy")
108 users_page = @first_page.open_users
109 rep_user_id = users_page.find_user("rep1")
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)
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)
123 it "setup permissions" do
124 role_reporter = "5" #reporter
125 tracker_bug = "1" #bug
127 custom_field_readonly = get_custom_field(1, "readonly_in_progress")["id"].to_s
128 #p "readonly in progress's id = #{custom_field_readonly}"
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
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
142 def get_custom_field(issue_id, custom_field_name)
143 cf_hash_list = get_custom_fields(issue_id)
145 cf_hash = cf_hash_list.select do |cf_hash|
146 cf_hash["name"] == custom_field_name.to_s
152 def get_custom_fields(issue_id)
153 json = get_json("issues/#{issue_id}.json")
155 json["issue"]["custom_fields"]
159 uri = URI::parse "#{@base_url}#{path}"
160 res = Net::HTTP::get_response(uri)