leantesting 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +9 -0
- data/LICENSE +10 -0
- data/README.md +348 -0
- data/Rakefile +9 -0
- data/leantesting.gemspec +20 -0
- data/lib/BaseClass/APIRequest.rb +195 -0
- data/lib/BaseClass/Entity.rb +33 -0
- data/lib/BaseClass/EntityHandler.rb +183 -0
- data/lib/BaseClass/EntityList.rb +188 -0
- data/lib/Entity/Bug/Bug.rb +11 -0
- data/lib/Entity/Bug/BugAttachment.rb +7 -0
- data/lib/Entity/Bug/BugComment.rb +7 -0
- data/lib/Entity/Platform/PlatformBrowser.rb +10 -0
- data/lib/Entity/Platform/PlatformBrowserVersion.rb +7 -0
- data/lib/Entity/Platform/PlatformDevice.rb +7 -0
- data/lib/Entity/Platform/PlatformOS.rb +10 -0
- data/lib/Entity/Platform/PlatformOSVersion.rb +7 -0
- data/lib/Entity/Platform/PlatformType.rb +10 -0
- data/lib/Entity/Project/Project.rb +27 -0
- data/lib/Entity/Project/ProjectBugScheme.rb +7 -0
- data/lib/Entity/Project/ProjectSection.rb +7 -0
- data/lib/Entity/Project/ProjectUser.rb +7 -0
- data/lib/Entity/Project/ProjectVersion.rb +7 -0
- data/lib/Entity/User/UserOrganization.rb +7 -0
- data/lib/Exception/BaseException/SDKException.rb +19 -0
- data/lib/Exception/SDKBadJSONResponseException.rb +15 -0
- data/lib/Exception/SDKDuplicateRequestException.rb +19 -0
- data/lib/Exception/SDKErrorResponseException.rb +13 -0
- data/lib/Exception/SDKIncompleteRequestException.rb +19 -0
- data/lib/Exception/SDKInvalidArgException.rb +15 -0
- data/lib/Exception/SDKMissingArgException.rb +15 -0
- data/lib/Exception/SDKUnexpectedResponseException.rb +15 -0
- data/lib/Exception/SDKUnsupportedRequestException.rb +19 -0
- data/lib/Handler/Attachment/AttachmentsHandler.rb +17 -0
- data/lib/Handler/Auth/OAuth2Handler.rb +118 -0
- data/lib/Handler/Bug/BugAttachmentsHandler.rb +51 -0
- data/lib/Handler/Bug/BugCommentsHandler.rb +20 -0
- data/lib/Handler/Bug/BugsHandler.rb +57 -0
- data/lib/Handler/Platform/PlatformBrowserVersionsHandler.rb +20 -0
- data/lib/Handler/Platform/PlatformBrowsersHandler.rb +23 -0
- data/lib/Handler/Platform/PlatformDevicesHandler.rb +10 -0
- data/lib/Handler/Platform/PlatformHandler.rb +22 -0
- data/lib/Handler/Platform/PlatformOSHandler.rb +23 -0
- data/lib/Handler/Platform/PlatformOSVersionsHandler.rb +20 -0
- data/lib/Handler/Platform/PlatformTypeDevicesHandler.rb +20 -0
- data/lib/Handler/Platform/PlatformTypesHandler.rb +21 -0
- data/lib/Handler/Project/ProjectBugReproducibilitySchemeHandler.rb +20 -0
- data/lib/Handler/Project/ProjectBugSeveritySchemeHandler.rb +20 -0
- data/lib/Handler/Project/ProjectBugStatusSchemeHandler.rb +20 -0
- data/lib/Handler/Project/ProjectBugTypeSchemeHandler.rb +20 -0
- data/lib/Handler/Project/ProjectBugsHandler.rb +67 -0
- data/lib/Handler/Project/ProjectSectionsHandler.rb +39 -0
- data/lib/Handler/Project/ProjectUsersHandler.rb +20 -0
- data/lib/Handler/Project/ProjectVersionsHandler.rb +39 -0
- data/lib/Handler/Project/ProjectsHandler.rb +46 -0
- data/lib/Handler/User/UserHandler.rb +14 -0
- data/lib/Handler/User/UserOrganizationsHandler.rb +14 -0
- data/lib/leantesting.rb +65 -0
- data/lib/loader.rb +18 -0
- data/tests/APIRequestTest.rb +152 -0
- data/tests/BaseClassesTest.rb +96 -0
- data/tests/ClientTest.rb +52 -0
- data/tests/EntitiesTest.rb +97 -0
- data/tests/EntityListTest.rb +51 -0
- data/tests/ExceptionsTest.rb +70 -0
- data/tests/HandlersRequestsTest.rb +215 -0
- data/tests/MockRequestsTest.rb +556 -0
- data/tests/OAuth2HandlerTest.rb +75 -0
- data/tests/res/upload_sample.jpg +0 -0
- metadata +169 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
class BugCommentsHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, bugID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@bugID = bugID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/bugs/' + @bugID.to_s() + '/comments', 'GET')
|
17
|
+
EntityList.new(@origin, request, BugComment, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class BugsHandler < EntityHandler
|
2
|
+
|
3
|
+
def find(id)
|
4
|
+
super
|
5
|
+
|
6
|
+
req = APIRequest.new(
|
7
|
+
@origin,
|
8
|
+
'/v1/bugs/' + id.to_s(),
|
9
|
+
'GET',
|
10
|
+
{
|
11
|
+
'params' => {
|
12
|
+
'include' => 'steps,platform,attachments,comments,tags'
|
13
|
+
}
|
14
|
+
}
|
15
|
+
)
|
16
|
+
Bug.new(@origin, req.exec)
|
17
|
+
end
|
18
|
+
|
19
|
+
def delete(id)
|
20
|
+
super
|
21
|
+
|
22
|
+
req = APIRequest.new(@origin, '/v1/bugs/' + id.to_s(), 'DELETE')
|
23
|
+
req.exec
|
24
|
+
end
|
25
|
+
|
26
|
+
def update(id, fields)
|
27
|
+
super
|
28
|
+
|
29
|
+
supports = {
|
30
|
+
'title' => false,
|
31
|
+
'status_id' => false,
|
32
|
+
'severity_id' => false,
|
33
|
+
'project_version_id' => false,
|
34
|
+
'project_section_id' => false,
|
35
|
+
'type_id' => false,
|
36
|
+
'assigned_user_id' => false,
|
37
|
+
'description' => false,
|
38
|
+
'expected_results' => false,
|
39
|
+
'steps' => false,
|
40
|
+
'platform' => false
|
41
|
+
# 'device_model' => false,
|
42
|
+
# 'device_model_id' => false,
|
43
|
+
# 'os' => false,
|
44
|
+
# 'os_version' => false,
|
45
|
+
# 'os_version_id' => false,
|
46
|
+
# 'browser_version_id' => false
|
47
|
+
}
|
48
|
+
|
49
|
+
if enforce(fields, supports)
|
50
|
+
fields = {'include' => 'steps,platform'}.merge(fields)
|
51
|
+
|
52
|
+
req = APIRequest.new(@origin, '/v1/bugs/' + id.to_s(), 'PUT', {'params' => fields})
|
53
|
+
Bug.new(@origin, req.exec)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class PlatformBrowserVersionsHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, browserID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@browserID = browserID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/platform/browsers/' + @browserID.to_s() + '/versions', 'GET')
|
17
|
+
EntityList.new(@origin, request, PlatformBrowserVersion, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class PlatformBrowsersHandler < EntityHandler
|
2
|
+
|
3
|
+
def all(filters = nil)
|
4
|
+
if !filters
|
5
|
+
filters = {}
|
6
|
+
end
|
7
|
+
|
8
|
+
super
|
9
|
+
|
10
|
+
filters = {'include' => 'versions'}.merge(filters)
|
11
|
+
|
12
|
+
request = APIRequest.new(@origin, '/v1/platform/browsers', 'GET')
|
13
|
+
EntityList.new(@origin, request, PlatformBrowser, filters)
|
14
|
+
end
|
15
|
+
|
16
|
+
def find(id)
|
17
|
+
super
|
18
|
+
|
19
|
+
req = APIRequest.new(@origin, '/v1/platform/browsers/' + id.to_s(), 'GET', {'params' => {'include' => 'versions'}})
|
20
|
+
PlatformBrowser.new(@origin, req.exec)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class PlatformHandler < EntityHandler
|
2
|
+
attr_reader \
|
3
|
+
:types,
|
4
|
+
:devices,
|
5
|
+
:os,
|
6
|
+
:browsers
|
7
|
+
|
8
|
+
@types = nil
|
9
|
+
@devices = nil
|
10
|
+
@os = nil
|
11
|
+
@browsers = nil
|
12
|
+
|
13
|
+
def initialize(origin)
|
14
|
+
super
|
15
|
+
|
16
|
+
@types = PlatformTypesHandler.new(origin)
|
17
|
+
@devices = PlatformDevicesHandler.new(origin)
|
18
|
+
@os = PlatformOSHandler.new(origin)
|
19
|
+
@browsers = PlatformBrowsersHandler.new(origin)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class PlatformOSHandler < EntityHandler
|
2
|
+
|
3
|
+
def all(filters = nil)
|
4
|
+
if !filters
|
5
|
+
filters = {}
|
6
|
+
end
|
7
|
+
|
8
|
+
super
|
9
|
+
|
10
|
+
filters = {'include' => 'versions'}.merge(filters)
|
11
|
+
|
12
|
+
request = APIRequest.new(@origin, '/v1/platform/os', 'GET')
|
13
|
+
EntityList.new(@origin, request, PlatformOS, filters)
|
14
|
+
end
|
15
|
+
|
16
|
+
def find(id)
|
17
|
+
super
|
18
|
+
|
19
|
+
req = APIRequest.new(@origin, '/v1/platform/os/' + id.to_s(), 'GET', {'params' => {'include' => 'versions'}})
|
20
|
+
PlatformOS.new(@origin, req.exec)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class PlatformOSVersionsHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, osID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@osID = osID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/platform/os/' + @osID.to_s() + '/versions', 'GET')
|
17
|
+
EntityList.new(@origin, request, PlatformOSVersion, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class PlatformTypeDevicesHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, typeID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@typeID = typeID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/platform/types/' + @typeID.to_s() + '/devices', 'GET')
|
17
|
+
EntityList.new(@origin, request, PlatformDevice, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class PlatformTypesHandler < EntityHandler
|
2
|
+
|
3
|
+
def all(filters = nil)
|
4
|
+
if !filters
|
5
|
+
filters = {}
|
6
|
+
end
|
7
|
+
|
8
|
+
super
|
9
|
+
|
10
|
+
request = APIRequest.new(@origin, '/v1/platform/types', 'GET')
|
11
|
+
EntityList.new(@origin, request, PlatformType, filters)
|
12
|
+
end
|
13
|
+
|
14
|
+
def find(id)
|
15
|
+
super
|
16
|
+
|
17
|
+
req = APIRequest.new(@origin, '/v1/platform/types/' + id.to_s(), 'GET')
|
18
|
+
PlatformType.new(@origin, req.exec)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class ProjectBugReproducibilitySchemeHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, projectID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@projectID = projectID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/projects/' + @projectID.to_s() + '/bug-reproducibility-scheme', 'GET')
|
17
|
+
EntityList.new(@origin, request, ProjectBugScheme, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class ProjectBugSeveritySchemeHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, projectID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@projectID = projectID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/projects/' + @projectID.to_s() + '/bug-severity-scheme', 'GET')
|
17
|
+
EntityList.new(@origin, request, ProjectBugScheme, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class ProjectBugStatusSchemeHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, projectID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@projectID = projectID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/projects/' + @projectID.to_s() + '/bug-status-scheme', 'GET')
|
17
|
+
EntityList.new(@origin, request, ProjectBugScheme, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class ProjectBugTypeSchemeHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, projectID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@projectID = projectID
|
7
|
+
end
|
8
|
+
|
9
|
+
def all(filters = nil)
|
10
|
+
if !filters
|
11
|
+
filters = {}
|
12
|
+
end
|
13
|
+
|
14
|
+
super
|
15
|
+
|
16
|
+
request = APIRequest.new(@origin, '/v1/projects/' + @projectID.to_s() + '/bug-type-scheme', 'GET')
|
17
|
+
EntityList.new(@origin, request, ProjectBugScheme, filters)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class ProjectBugsHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, projectID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@projectID = projectID
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(fields)
|
10
|
+
super
|
11
|
+
|
12
|
+
supports = {
|
13
|
+
'title' => true,
|
14
|
+
'status_id' => true,
|
15
|
+
'severity_id' => true,
|
16
|
+
'project_version' => true,
|
17
|
+
'project_version_id' => true,
|
18
|
+
'project_section_id' => false,
|
19
|
+
'type_id' => false,
|
20
|
+
'reproducibility_id' => false,
|
21
|
+
'assigned_user_id' => false,
|
22
|
+
'description' => false,
|
23
|
+
'expected_results' => false,
|
24
|
+
'steps' => false,
|
25
|
+
'platform' => false
|
26
|
+
# 'device_model' => false,
|
27
|
+
# 'device_model_id' => false,
|
28
|
+
# 'os' => false,
|
29
|
+
# 'os_version' => false,
|
30
|
+
# 'os_version_id' => false,
|
31
|
+
# 'browser_version_id' => false
|
32
|
+
}
|
33
|
+
|
34
|
+
if fields.has_key? 'project_version_id'
|
35
|
+
supports['project_version'] = false
|
36
|
+
elsif fields.has_key? 'project_version'
|
37
|
+
supports['project_version_id'] = false
|
38
|
+
end
|
39
|
+
|
40
|
+
if enforce(fields, supports)
|
41
|
+
fields = {'include' => 'steps,platform'}.merge(fields)
|
42
|
+
|
43
|
+
req = APIRequest.new(
|
44
|
+
@origin,
|
45
|
+
'/v1/projects/' + @projectID.to_s() + '/bugs',
|
46
|
+
'POST',
|
47
|
+
{'params' => fields}
|
48
|
+
)
|
49
|
+
|
50
|
+
Bug.new(@origin, req.exec)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def all(filters = nil)
|
55
|
+
if !filters
|
56
|
+
filters = {}
|
57
|
+
end
|
58
|
+
|
59
|
+
super
|
60
|
+
|
61
|
+
filters = {'include' => 'steps,platform,attachments,comments,tags'}.merge(filters)
|
62
|
+
|
63
|
+
request = APIRequest.new(@origin, '/v1/projects/' + @projectID.to_s() + '/bugs', 'GET')
|
64
|
+
EntityList.new(@origin, request, Bug, filters)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class ProjectSectionsHandler < EntityHandler
|
2
|
+
|
3
|
+
def initialize(origin, projectID)
|
4
|
+
super(origin)
|
5
|
+
|
6
|
+
@projectID = projectID
|
7
|
+
end
|
8
|
+
|
9
|
+
def create(fields)
|
10
|
+
super
|
11
|
+
|
12
|
+
supports = {
|
13
|
+
'name' => true
|
14
|
+
}
|
15
|
+
|
16
|
+
if enforce(fields, supports)
|
17
|
+
req = APIRequest.new(
|
18
|
+
@origin,
|
19
|
+
'/v1/projects/' + @projectID.to_s() + '/sections',
|
20
|
+
'POST',
|
21
|
+
{'params' => fields}
|
22
|
+
)
|
23
|
+
|
24
|
+
ProjectSection.new(@origin, req.exec)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def all(filters = nil)
|
29
|
+
if !filters
|
30
|
+
filters = {}
|
31
|
+
end
|
32
|
+
|
33
|
+
super
|
34
|
+
|
35
|
+
request = APIRequest.new(@origin, '/v1/projects/' + @projectID.to_s() + '/sections', 'GET')
|
36
|
+
EntityList.new(@origin, request, ProjectSection, filters)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|