testrail_api 0.1.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/README.md +10 -5
- data/lib/core_ext/array/to_list.rb +5 -0
- data/lib/core_ext/array.rb +1 -0
- data/lib/testrail_api/api.rb +37 -0
- data/lib/testrail_api/client/case_fields.rb +9 -9
- data/lib/testrail_api/client/case_types.rb +10 -2
- data/lib/testrail_api/client/cases.rb +92 -64
- data/lib/testrail_api/client/milestones.rb +3 -1
- data/lib/testrail_api/client/plans.rb +3 -1
- data/lib/testrail_api/client/priorities.rb +7 -5
- data/lib/testrail_api/client/projects.rb +26 -23
- data/lib/testrail_api/client/result_fields.rb +3 -1
- data/lib/testrail_api/client/results.rb +94 -92
- data/lib/testrail_api/client/runs.rb +60 -58
- data/lib/testrail_api/client/sections.rb +45 -48
- data/lib/testrail_api/client/statuses.rb +7 -6
- data/lib/testrail_api/client/suites.rb +31 -29
- data/lib/testrail_api/client/tests.rb +27 -30
- data/lib/testrail_api/client/users.rb +23 -22
- data/lib/testrail_api/client.rb +31 -25
- data/lib/testrail_api/default.rb +16 -0
- data/lib/testrail_api/version.rb +1 -1
- data/testrail_api.gemspec +3 -4
- metadata +12 -10
- data/lib/testrail_api/endpoints.rb +0 -15
@@ -4,69 +4,71 @@ module TestRail
|
|
4
4
|
#
|
5
5
|
# @see http://docs.gurock.com/testrail-api2/reference-runs
|
6
6
|
# Use the following API methods to request details about test runs and to create or modify test runs.
|
7
|
+
module Runs
|
8
|
+
#
|
9
|
+
# Returns an existing test run. Please see get_tests for the list of included tests in this run.
|
10
|
+
#
|
11
|
+
# :run_id The ID of the test run
|
12
|
+
#
|
13
|
+
def run(run_id)
|
14
|
+
get("get_run/#{run_id}")
|
15
|
+
end
|
7
16
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
#
|
18
|
+
# Returns a list of test runs for a project.
|
19
|
+
# Only returns those test runs that are not part of a test plan (please see get_plans/get_plan for this).
|
20
|
+
#
|
21
|
+
# :project_id The ID of the project
|
22
|
+
#
|
23
|
+
def runs(project_id)
|
24
|
+
get("get_runs/#{project_id}")
|
25
|
+
end
|
16
26
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
27
|
+
#
|
28
|
+
# Creates a new test run.
|
29
|
+
#
|
30
|
+
# @param [Integer, String] project_id The ID of the project the test run should be added to
|
31
|
+
# @param data [Hash]: A customizable set of options
|
32
|
+
# @option data [Integer] :suite_id The ID of the test suite for the test run (optional if the project is operating in single suite mode, required otherwise)
|
33
|
+
# @option data [String] :name The name of the test run
|
34
|
+
# @option data [String] :description The description of the test run
|
35
|
+
# @option data [Integer] :milestone_id The ID of the milestone to link to the test run
|
36
|
+
# @option data [Integer] :assignedto_id The ID of the user the test run should be assigned to
|
37
|
+
# @option data [Boolean] :include_all True for including all test cases of the test suite and false for a custom case selection (default: true)
|
38
|
+
# @option data [Array<Integer>] :case_ids An array of case IDs for the custom case selection
|
39
|
+
# @return # TODO:
|
40
|
+
# @see http://docs.gurock.com/testrail-api2/reference-runs#add_run
|
41
|
+
def add_run(project_id, data)
|
42
|
+
post("add_run/#{project_id}", body: data.to_json)
|
43
|
+
end
|
26
44
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
# @option data [Integer] :assignedto_id The ID of the user the test run should be assigned to
|
37
|
-
# @option data [Boolean] :include_all True for including all test cases of the test suite and false for a custom case selection (default: true)
|
38
|
-
# @option data [Array<Integer>] :case_ids An array of case IDs for the custom case selection
|
39
|
-
# @return # TODO:
|
40
|
-
# @see http://docs.gurock.com/testrail-api2/reference-runs#add_run
|
41
|
-
def add_run(project_id, data)
|
42
|
-
post("add_run/#{project_id}", data)
|
43
|
-
end
|
45
|
+
#
|
46
|
+
# Updates an existing test run (partial updates are supported, i.e. you can submit and update specific fields only).
|
47
|
+
# With the exception of the suite_id and assignedto_id fields, this method supports the same POST fields as add_run.
|
48
|
+
#
|
49
|
+
# :run_id The ID of the test run
|
50
|
+
#
|
51
|
+
def update_run(run_id, data)
|
52
|
+
post("update_run/#{run_id}", body: data.to_json)
|
53
|
+
end
|
44
54
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
55
|
+
#
|
56
|
+
# Closes an existing test run and archives its tests & results.
|
57
|
+
#
|
58
|
+
# :run_id The ID of the test run
|
59
|
+
#
|
60
|
+
def close_run(run_id, data)
|
61
|
+
post("close_run/#{run_id}", data)
|
62
|
+
end
|
53
63
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
#
|
64
|
-
# Deletes an existing test run.
|
65
|
-
#
|
66
|
-
# :run_id The ID of the test run
|
67
|
-
#
|
68
|
-
def delete_run(run_id, data)
|
69
|
-
post("delete_run/#{run_id}", data)
|
64
|
+
#
|
65
|
+
# Deletes an existing test run.
|
66
|
+
#
|
67
|
+
# :run_id The ID of the test run
|
68
|
+
#
|
69
|
+
def delete_run(run_id, data)
|
70
|
+
post("delete_run/#{run_id}", data)
|
71
|
+
end
|
70
72
|
end
|
71
73
|
end
|
72
74
|
end
|
@@ -5,61 +5,58 @@ module TestRail
|
|
5
5
|
# @see http://docs.gurock.com/testrail-api2/reference-sections
|
6
6
|
# Use the following API methods to request details about sections and to create or modify sections.
|
7
7
|
# Sections are used to group and organize test cases in test suites.
|
8
|
+
module Sections
|
9
|
+
#
|
10
|
+
# Returns an existing section.
|
11
|
+
#
|
12
|
+
# :section_id The ID of the section
|
13
|
+
#
|
14
|
+
def section(section_id)
|
15
|
+
get("get_section/#{section_id}")
|
16
|
+
end
|
8
17
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
#
|
19
|
-
# Returns a list of sections for a project and test suite.
|
20
|
-
#
|
21
|
-
# :project_id The ID of the project
|
22
|
-
# :suite_id The ID of the test suite (optional if the project is operating in single suite mode)
|
23
|
-
#
|
24
|
-
def sections(project_id, suite_id)
|
25
|
-
get("get_sections/#{project_id}&suite_id=#{suite_id}")
|
26
|
-
end
|
18
|
+
#
|
19
|
+
# Returns a list of sections for a project and test suite.
|
20
|
+
#
|
21
|
+
# :project_id The ID of the project
|
22
|
+
# :suite_id The ID of the test suite (optional if the project is operating in single suite mode)
|
23
|
+
#
|
24
|
+
def sections(project_id, suite_id)
|
25
|
+
get("get_sections/#{project_id}&suite_id=#{suite_id}")
|
26
|
+
end
|
27
27
|
|
28
|
-
|
29
|
-
if ignore_case
|
30
|
-
sections(project_id, suite_id).find { |section| section['name'].casecmp(section_name) == 0 }
|
31
|
-
else
|
28
|
+
def section_by_name(project_id, suite_id, section_name)
|
32
29
|
sections(project_id, suite_id).find { |section| section['name'] == section_name }
|
33
30
|
end
|
34
|
-
end
|
35
31
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
32
|
+
#
|
33
|
+
# Creates a new section.
|
34
|
+
#
|
35
|
+
# :project_id The ID of the project
|
36
|
+
#
|
37
|
+
def add_section(project_id, data)
|
38
|
+
post("add_section/#{project_id}", data)
|
39
|
+
end
|
44
40
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
41
|
+
#
|
42
|
+
# Updates an existing section (partial updates are supported, i.e. you can submit and update specific fields only).
|
43
|
+
#
|
44
|
+
# :section_id The ID of the section
|
45
|
+
#
|
46
|
+
def update_section(section_id, data)
|
47
|
+
post("update_section/#{section_id}", data)
|
48
|
+
end
|
53
49
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
50
|
+
#
|
51
|
+
# Updates an existing section (partial updates are supported, i.e. you can submit and update specific fields only).
|
52
|
+
# Please note: Deleting a section cannot be undone and also deletes all related test cases
|
53
|
+
# as well as active tests & results, i.e. tests & results that weren't closed (archived) yet.
|
54
|
+
#
|
55
|
+
# :section_id The ID of the section
|
56
|
+
#
|
57
|
+
def delete_section(section_id)
|
58
|
+
post("delete_section/#{section_id}")
|
59
|
+
end
|
63
60
|
end
|
64
61
|
end
|
65
62
|
end
|
@@ -4,16 +4,17 @@ module TestRail
|
|
4
4
|
#
|
5
5
|
# @see http://docs.gurock.com/testrail-api2/reference-statuses
|
6
6
|
# Use the following API methods to request details about test statuses.
|
7
|
-
|
8
7
|
# Each status has a unique ID, a name (system name) as well as a label (display name).
|
9
8
|
# The color related fields specify the different colors used for a status and are RGB colors.
|
10
9
|
# The following system statuses are available by default.
|
11
10
|
# You can add additional custom statuses under Administration > Customizations in TestRail.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
module Statuses
|
12
|
+
#
|
13
|
+
# @return a list of available_contexts test statuses.
|
14
|
+
# @see http://docs.gurock.com/testrail-api2/reference-statuses#get_statuses
|
15
|
+
def statuses
|
16
|
+
get('get_statuses')
|
17
|
+
end
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
@@ -4,40 +4,42 @@ module TestRail
|
|
4
4
|
#
|
5
5
|
# @see http://docs.gurock.com/testrail-api2/reference-suites
|
6
6
|
# Use the following API methods to request details about test suites and to create or modify test suites.
|
7
|
+
module Suites
|
8
|
+
#
|
9
|
+
# Returns an existing test suite.
|
10
|
+
#
|
11
|
+
# :suite_id The ID of the test suite
|
12
|
+
#
|
13
|
+
def suite(suite_id)
|
14
|
+
get("get_suite/#{suite_id}")
|
15
|
+
end
|
7
16
|
|
8
|
-
|
9
|
-
# Returns an existing test suite.
|
10
|
-
#
|
11
|
-
# :suite_id The ID of the test suite
|
12
|
-
#
|
13
|
-
def suite(suite_id)
|
14
|
-
get("get_suite/#{suite_id}")
|
15
|
-
end
|
16
|
-
|
17
|
-
def suite_by_name(project_id, suite_name, ignore_case = true)
|
18
|
-
if ignore_case
|
17
|
+
def suite_by_name(project_id, suite_name)
|
19
18
|
suites(project_id).find { |suite| suite['name'].casecmp(suite_name) == 0 }
|
20
|
-
else
|
21
|
-
suites(project_id).find { |suite| suite['name'] == suite_name }
|
22
19
|
end
|
23
|
-
end
|
24
20
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
21
|
+
#
|
22
|
+
# Returns a list of test suites for a project.
|
23
|
+
#
|
24
|
+
# :project_id The ID of the project
|
25
|
+
#
|
26
|
+
def suites(project_id)
|
27
|
+
get("get_suites/#{project_id}")
|
28
|
+
end
|
33
29
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
30
|
+
def suites_by_project_name(project_name)
|
31
|
+
project_id = project_by_name(project_name).fetch('id')
|
32
|
+
suites(project_id)
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Creates a new test suite.
|
37
|
+
#
|
38
|
+
# :project_id The ID of the project the test suite should be added to
|
39
|
+
#
|
40
|
+
def add_suite(project_id, data)
|
41
|
+
post("add_suite/#{project_id}", data)
|
42
|
+
end
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
@@ -4,41 +4,38 @@ module TestRail
|
|
4
4
|
# Use the following API methods to request details about tests.
|
5
5
|
#
|
6
6
|
# @see http://docs.gurock.com/testrail-api2/reference-tests
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
module Tests
|
8
|
+
#
|
9
|
+
# Returns an existing test by its ID
|
10
|
+
#
|
11
|
+
# @param [Integer, String] test_id The ID of the test
|
12
|
+
# @return an existing test by its ID
|
13
|
+
# @see http://docs.gurock.com/testrail-api2/reference-runs#add_run
|
14
|
+
def test(test_id)
|
15
|
+
get("get_test/#{test_id}")
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
if ignore_case
|
18
|
+
# TODO: add documentation
|
19
|
+
def test_by_title(run_id, test_title)
|
20
20
|
tests(run_id).find { |test| test['title'].casecmp(test_title) == 0 }
|
21
|
-
else
|
22
|
-
tests(run_id).find { |test| test['title'] == test_title }
|
23
|
-
|
24
21
|
end
|
25
|
-
end
|
26
22
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
23
|
+
# TODO: add documentation
|
24
|
+
def test_id_by_title(run_id, test_title)
|
25
|
+
test_by_title(run_id, test_title)['id']
|
26
|
+
end
|
31
27
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
28
|
+
#
|
29
|
+
# Returns a list of tests for a test run.
|
30
|
+
#
|
31
|
+
# TODO: finish method and documentation
|
32
|
+
# @param [Integer, String] run_id The ID of the test run
|
33
|
+
# @option [String] status_id
|
34
|
+
# @return an existing test by its ID
|
35
|
+
# @see http://docs.gurock.com/testrail-api2/reference-runs#add_run
|
36
|
+
def tests(run_id)
|
37
|
+
get("get_tests/#{run_id}")
|
38
|
+
end
|
42
39
|
end
|
43
40
|
end
|
44
41
|
end
|
@@ -3,30 +3,31 @@ module TestRail
|
|
3
3
|
# Methods for the Users API
|
4
4
|
#
|
5
5
|
# @see http://docs.gurock.com/testrail-api2/reference-users
|
6
|
-
|
6
|
+
module Users
|
7
|
+
#
|
8
|
+
# Returns an existing user.
|
9
|
+
#
|
10
|
+
# :user_id The ID of the user
|
11
|
+
#
|
12
|
+
def user(user_id)
|
13
|
+
get("get_user/#{user_id}")
|
14
|
+
end
|
7
15
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
16
|
+
#
|
17
|
+
# Returns a list of users.
|
18
|
+
#
|
19
|
+
def users
|
20
|
+
get('get_users')
|
21
|
+
end
|
15
22
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
# Returns an existing user by his/her email address.
|
25
|
-
#
|
26
|
-
# :email The email address to get the user for
|
27
|
-
#
|
28
|
-
def user_by_email(email)
|
29
|
-
get("get_user_by_email&email=#{email}")
|
23
|
+
#
|
24
|
+
# Returns an existing user by his/her email address.
|
25
|
+
#
|
26
|
+
# :email The email address to get the user for
|
27
|
+
#
|
28
|
+
def user_by_email(email)
|
29
|
+
get("get_user_by_email&email=#{email}")
|
30
|
+
end
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|