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.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/LICENSE +10 -0
  4. data/README.md +348 -0
  5. data/Rakefile +9 -0
  6. data/leantesting.gemspec +20 -0
  7. data/lib/BaseClass/APIRequest.rb +195 -0
  8. data/lib/BaseClass/Entity.rb +33 -0
  9. data/lib/BaseClass/EntityHandler.rb +183 -0
  10. data/lib/BaseClass/EntityList.rb +188 -0
  11. data/lib/Entity/Bug/Bug.rb +11 -0
  12. data/lib/Entity/Bug/BugAttachment.rb +7 -0
  13. data/lib/Entity/Bug/BugComment.rb +7 -0
  14. data/lib/Entity/Platform/PlatformBrowser.rb +10 -0
  15. data/lib/Entity/Platform/PlatformBrowserVersion.rb +7 -0
  16. data/lib/Entity/Platform/PlatformDevice.rb +7 -0
  17. data/lib/Entity/Platform/PlatformOS.rb +10 -0
  18. data/lib/Entity/Platform/PlatformOSVersion.rb +7 -0
  19. data/lib/Entity/Platform/PlatformType.rb +10 -0
  20. data/lib/Entity/Project/Project.rb +27 -0
  21. data/lib/Entity/Project/ProjectBugScheme.rb +7 -0
  22. data/lib/Entity/Project/ProjectSection.rb +7 -0
  23. data/lib/Entity/Project/ProjectUser.rb +7 -0
  24. data/lib/Entity/Project/ProjectVersion.rb +7 -0
  25. data/lib/Entity/User/UserOrganization.rb +7 -0
  26. data/lib/Exception/BaseException/SDKException.rb +19 -0
  27. data/lib/Exception/SDKBadJSONResponseException.rb +15 -0
  28. data/lib/Exception/SDKDuplicateRequestException.rb +19 -0
  29. data/lib/Exception/SDKErrorResponseException.rb +13 -0
  30. data/lib/Exception/SDKIncompleteRequestException.rb +19 -0
  31. data/lib/Exception/SDKInvalidArgException.rb +15 -0
  32. data/lib/Exception/SDKMissingArgException.rb +15 -0
  33. data/lib/Exception/SDKUnexpectedResponseException.rb +15 -0
  34. data/lib/Exception/SDKUnsupportedRequestException.rb +19 -0
  35. data/lib/Handler/Attachment/AttachmentsHandler.rb +17 -0
  36. data/lib/Handler/Auth/OAuth2Handler.rb +118 -0
  37. data/lib/Handler/Bug/BugAttachmentsHandler.rb +51 -0
  38. data/lib/Handler/Bug/BugCommentsHandler.rb +20 -0
  39. data/lib/Handler/Bug/BugsHandler.rb +57 -0
  40. data/lib/Handler/Platform/PlatformBrowserVersionsHandler.rb +20 -0
  41. data/lib/Handler/Platform/PlatformBrowsersHandler.rb +23 -0
  42. data/lib/Handler/Platform/PlatformDevicesHandler.rb +10 -0
  43. data/lib/Handler/Platform/PlatformHandler.rb +22 -0
  44. data/lib/Handler/Platform/PlatformOSHandler.rb +23 -0
  45. data/lib/Handler/Platform/PlatformOSVersionsHandler.rb +20 -0
  46. data/lib/Handler/Platform/PlatformTypeDevicesHandler.rb +20 -0
  47. data/lib/Handler/Platform/PlatformTypesHandler.rb +21 -0
  48. data/lib/Handler/Project/ProjectBugReproducibilitySchemeHandler.rb +20 -0
  49. data/lib/Handler/Project/ProjectBugSeveritySchemeHandler.rb +20 -0
  50. data/lib/Handler/Project/ProjectBugStatusSchemeHandler.rb +20 -0
  51. data/lib/Handler/Project/ProjectBugTypeSchemeHandler.rb +20 -0
  52. data/lib/Handler/Project/ProjectBugsHandler.rb +67 -0
  53. data/lib/Handler/Project/ProjectSectionsHandler.rb +39 -0
  54. data/lib/Handler/Project/ProjectUsersHandler.rb +20 -0
  55. data/lib/Handler/Project/ProjectVersionsHandler.rb +39 -0
  56. data/lib/Handler/Project/ProjectsHandler.rb +46 -0
  57. data/lib/Handler/User/UserHandler.rb +14 -0
  58. data/lib/Handler/User/UserOrganizationsHandler.rb +14 -0
  59. data/lib/leantesting.rb +65 -0
  60. data/lib/loader.rb +18 -0
  61. data/tests/APIRequestTest.rb +152 -0
  62. data/tests/BaseClassesTest.rb +96 -0
  63. data/tests/ClientTest.rb +52 -0
  64. data/tests/EntitiesTest.rb +97 -0
  65. data/tests/EntityListTest.rb +51 -0
  66. data/tests/ExceptionsTest.rb +70 -0
  67. data/tests/HandlersRequestsTest.rb +215 -0
  68. data/tests/MockRequestsTest.rb +556 -0
  69. data/tests/OAuth2HandlerTest.rb +75 -0
  70. data/tests/res/upload_sample.jpg +0 -0
  71. 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,10 @@
1
+ class PlatformDevicesHandler < EntityHandler
2
+
3
+ def find(id)
4
+ super
5
+
6
+ req = APIRequest.new(@origin, '/v1/platform/devices/' + id.to_s(), 'GET')
7
+ PlatformDevice.new(@origin, req.exec)
8
+ end
9
+
10
+ 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