jira-ruby 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/README.rdoc +259 -0
  2. data/Rakefile +9 -0
  3. data/example.rb +47 -4
  4. data/jira-ruby.gemspec +5 -3
  5. data/lib/jira.rb +21 -7
  6. data/lib/jira/base.rb +466 -0
  7. data/lib/jira/base_factory.rb +49 -0
  8. data/lib/jira/client.rb +79 -8
  9. data/lib/jira/has_many_proxy.rb +43 -0
  10. data/lib/jira/http_error.rb +16 -0
  11. data/lib/jira/resource/attachment.rb +12 -0
  12. data/lib/jira/resource/comment.rb +14 -0
  13. data/lib/jira/resource/component.rb +4 -9
  14. data/lib/jira/resource/issue.rb +49 -5
  15. data/lib/jira/resource/issuetype.rb +10 -0
  16. data/lib/jira/resource/priority.rb +10 -0
  17. data/lib/jira/resource/project.rb +24 -3
  18. data/lib/jira/resource/status.rb +10 -0
  19. data/lib/jira/resource/user.rb +14 -0
  20. data/lib/jira/resource/version.rb +10 -0
  21. data/lib/jira/resource/worklog.rb +16 -0
  22. data/lib/jira/version.rb +2 -2
  23. data/spec/integration/attachment_spec.rb +26 -0
  24. data/spec/integration/comment_spec.rb +55 -0
  25. data/spec/integration/component_spec.rb +25 -52
  26. data/spec/integration/issue_spec.rb +50 -47
  27. data/spec/integration/issuetype_spec.rb +27 -0
  28. data/spec/integration/priority_spec.rb +27 -0
  29. data/spec/integration/project_spec.rb +32 -24
  30. data/spec/integration/status_spec.rb +27 -0
  31. data/spec/integration/user_spec.rb +25 -0
  32. data/spec/integration/version_spec.rb +43 -0
  33. data/spec/integration/worklog_spec.rb +55 -0
  34. data/spec/jira/base_factory_spec.rb +46 -0
  35. data/spec/jira/base_spec.rb +555 -0
  36. data/spec/jira/client_spec.rb +12 -12
  37. data/spec/jira/has_many_proxy_spec.rb +45 -0
  38. data/spec/jira/{resource/http_error_spec.rb → http_error_spec.rb} +1 -1
  39. data/spec/jira/resource/attachment_spec.rb +20 -0
  40. data/spec/jira/resource/issue_spec.rb +83 -0
  41. data/spec/jira/resource/project_factory_spec.rb +3 -3
  42. data/spec/jira/resource/project_spec.rb +28 -0
  43. data/spec/jira/resource/worklog_spec.rb +24 -0
  44. data/spec/mock_responses/attachment/10000.json +20 -0
  45. data/spec/mock_responses/component/10000.invalid.put.json +5 -0
  46. data/spec/mock_responses/issue.json +1108 -0
  47. data/spec/mock_responses/issue/10002.invalid.put.json +6 -0
  48. data/spec/mock_responses/issue/10002.json +13 -1
  49. data/spec/mock_responses/issue/10002.put.missing_field_update.json +6 -0
  50. data/spec/mock_responses/issue/10002/comment.json +65 -0
  51. data/spec/mock_responses/issue/10002/comment.post.json +29 -0
  52. data/spec/mock_responses/issue/10002/comment/10000.json +29 -0
  53. data/spec/mock_responses/issue/10002/comment/10000.put.json +29 -0
  54. data/spec/mock_responses/issue/10002/worklog.json +98 -0
  55. data/spec/mock_responses/issue/10002/worklog.post.json +30 -0
  56. data/spec/mock_responses/issue/10002/worklog/10000.json +31 -0
  57. data/spec/mock_responses/issue/10002/worklog/10000.put.json +30 -0
  58. data/spec/mock_responses/issuetype.json +42 -0
  59. data/spec/mock_responses/issuetype/5.json +8 -0
  60. data/spec/mock_responses/priority.json +42 -0
  61. data/spec/mock_responses/priority/1.json +8 -0
  62. data/spec/mock_responses/project/SAMPLEPROJECT.issues.json +1108 -0
  63. data/spec/mock_responses/project/SAMPLEPROJECT.json +15 -1
  64. data/spec/mock_responses/status.json +37 -0
  65. data/spec/mock_responses/status/1.json +7 -0
  66. data/spec/mock_responses/user?username=admin.json +17 -0
  67. data/spec/mock_responses/version.post.json +7 -0
  68. data/spec/mock_responses/version/10000.invalid.put.json +5 -0
  69. data/spec/mock_responses/version/10000.json +11 -0
  70. data/spec/mock_responses/version/10000.put.json +7 -0
  71. data/spec/spec_helper.rb +7 -12
  72. data/spec/support/matchers/have_attributes.rb +11 -0
  73. data/spec/support/matchers/have_many.rb +9 -0
  74. data/spec/support/matchers/have_one.rb +5 -0
  75. data/spec/support/shared_examples/integration.rb +174 -0
  76. metadata +139 -24
  77. data/README.markdown +0 -81
  78. data/lib/jira/resource/base.rb +0 -148
  79. data/lib/jira/resource/base_factory.rb +0 -44
  80. data/lib/jira/resource/http_error.rb +0 -17
  81. data/spec/jira/resource/base_factory_spec.rb +0 -36
  82. data/spec/jira/resource/base_spec.rb +0 -292
@@ -12,7 +12,21 @@
12
12
  "displayName": "admin",
13
13
  "active": true
14
14
  },
15
- "components": [],
15
+ "components": [
16
+ {
17
+ "self": "http://localhost:2990/jira/rest/api/2/component/10001",
18
+ "id": "10001",
19
+ "name": "Jamflam",
20
+ "isAssigneeTypeValid": false
21
+ },
22
+ {
23
+ "self": "http://localhost:2990/jira/rest/api/2/component/10000",
24
+ "id": "10000",
25
+ "name": "Jammy",
26
+ "description": "Description!",
27
+ "isAssigneeTypeValid": false
28
+ }
29
+ ],
16
30
  "issueTypes": [
17
31
  {
18
32
  "self": "http://localhost:2990/jira/rest/api/2/issuetype/1",
@@ -0,0 +1,37 @@
1
+ [
2
+ {
3
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
4
+ "description": "The issue is open and ready for the assignee to start work on it.",
5
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
6
+ "name": "Open",
7
+ "id": "1"
8
+ },
9
+ {
10
+ "self": "http://localhost:2990/jira/rest/api/2/status/3",
11
+ "description": "This issue is being actively worked on at the moment by the assignee.",
12
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_inprogress.gif",
13
+ "name": "In Progress",
14
+ "id": "3"
15
+ },
16
+ {
17
+ "self": "http://localhost:2990/jira/rest/api/2/status/4",
18
+ "description": "This issue was once resolved, but the resolution was deemed incorrect. From here issues are either marked assigned or resolved.",
19
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_reopened.gif",
20
+ "name": "Reopened",
21
+ "id": "4"
22
+ },
23
+ {
24
+ "self": "http://localhost:2990/jira/rest/api/2/status/5",
25
+ "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.",
26
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_resolved.gif",
27
+ "name": "Resolved",
28
+ "id": "5"
29
+ },
30
+ {
31
+ "self": "http://localhost:2990/jira/rest/api/2/status/6",
32
+ "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.",
33
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_closed.gif",
34
+ "name": "Closed",
35
+ "id": "6"
36
+ }
37
+ ]
@@ -0,0 +1,7 @@
1
+ {
2
+ "self": "http://localhost:2990/jira/rest/api/2/status/1",
3
+ "description": "The issue is open and ready for the assignee to start work on it.",
4
+ "iconUrl": "http://localhost:2990/jira/images/icons/status_open.gif",
5
+ "name": "Open",
6
+ "id": "1"
7
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "self": "http://localhost:2990/jira/rest/api/2/user?username=admin",
3
+ "name": "admin",
4
+ "emailAddress": "admin@example.com",
5
+ "avatarUrls": {
6
+ "16x16": "http://localhost:2990/jira/secure/useravatar?size=small&avatarId=10122",
7
+ "48x48": "http://localhost:2990/jira/secure/useravatar?avatarId=10122"
8
+ },
9
+ "displayName": "admin",
10
+ "active": true,
11
+ "timeZone": "Pacific/Auckland",
12
+ "groups": {
13
+ "size": 3,
14
+ "items": []
15
+ },
16
+ "expand": "groups"
17
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "self": "http://localhost:2990/jira/rest/api/2/version/10001",
3
+ "id": "10001",
4
+ "name": "2.0",
5
+ "archived": false,
6
+ "released": false
7
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "errorMessages": [
3
+ "Unrecognized field \"chump\" (Class com.atlassian.jira.rest.v2.issue.version.VersionBean), not marked as ignorable\n at [Source: org.apache.catalina.connector.CoyoteInputStream@4264a42e; line: 1, column: 2]"
4
+ ]
5
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "self": "http://localhost:2990/jira/rest/api/2/version/10000",
3
+ "id": "10000",
4
+ "description": "Initial version",
5
+ "name": "1.0",
6
+ "overdue": false,
7
+ "userReleaseDate": "12/Jan/12",
8
+ "archived": false,
9
+ "releaseDate": "2012-01-12",
10
+ "released": false
11
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "self": "http://localhost:2990/jira/rest/api/2/version/10000",
3
+ "id": "10000",
4
+ "name": "2.0.0",
5
+ "archived": false,
6
+ "released": false
7
+ }
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  require 'rubygems'
3
3
  require 'bundler/setup'
4
4
  require 'webmock/rspec'
5
+ Dir["./spec/support/**/*.rb"].each {|f| require f}
5
6
 
6
7
  require 'jira'
7
8
 
@@ -9,18 +10,12 @@ RSpec.configure do |config|
9
10
 
10
11
  end
11
12
 
12
- RSpec::Matchers.define :have_attributes do |expected|
13
- match do |actual|
14
- expected.each do |key, value|
15
- actual.attrs[key].should == value
16
- end
17
- end
18
13
 
19
- failure_message_for_should do |actual|
20
- "expected #{actual.attrs} to match #{expected}"
14
+ def get_mock_response(file, value_if_file_not_found = false)
15
+ begin
16
+ File.read(File.join(File.dirname(__FILE__), 'mock_responses/', file))
17
+ rescue Errno::ENOENT => e
18
+ raise e if value_if_file_not_found == false
19
+ value_if_file_not_found
21
20
  end
22
21
  end
23
-
24
- def get_mock_response(file)
25
- File.read(File.join(File.dirname(__FILE__), 'mock_responses/', file))
26
- end
@@ -0,0 +1,11 @@
1
+ RSpec::Matchers.define :have_attributes do |expected|
2
+ match do |actual|
3
+ expected.each do |key, value|
4
+ actual.attrs[key].should == value
5
+ end
6
+ end
7
+
8
+ failure_message_for_should do |actual|
9
+ "expected #{actual.attrs} to match #{expected}"
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ RSpec::Matchers.define :have_many do |collection, klass|
2
+ match do |actual|
3
+ actual.send(collection).class.should == JIRA::HasManyProxy
4
+ actual.send(collection).length.should > 0
5
+ actual.send(collection).each do |member|
6
+ member.class.should == klass
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ RSpec::Matchers.define :have_one do |resource, klass|
2
+ match do |actual|
3
+ actual.send(resource).class.should == klass
4
+ end
5
+ end
@@ -0,0 +1,174 @@
1
+ def get_mock_from_path(method, options = {})
2
+ if defined? belongs_to
3
+ prefix = belongs_to.path_component + '/'
4
+ else
5
+ prefix = ''
6
+ end
7
+
8
+ if options[:url]
9
+ url = options[:url]
10
+ elsif options[:key]
11
+ url = described_class.singular_path(client, options[:key], prefix)
12
+ else
13
+ url = described_class.collection_path(client, prefix)
14
+ end
15
+ file_path = url.sub(client.options[:rest_base_path], '')
16
+ file_path = file_path + '.' + options[:suffix] if options[:suffix]
17
+ file_path = file_path + '.' + method.to_s unless method == :get
18
+ value_if_not_found = options.keys.include?(:value_if_not_found) ? options[:value_if_not_found] : false
19
+ get_mock_response("#{file_path}.json", value_if_not_found)
20
+ end
21
+
22
+ def class_basename
23
+ described_class.name.split('::').last
24
+ end
25
+
26
+ def options
27
+ options = {}
28
+ if defined? belongs_to
29
+ options[belongs_to.to_sym] = belongs_to
30
+ end
31
+ options
32
+ end
33
+
34
+ def prefix
35
+ prefix = '/'
36
+ if defined? belongs_to
37
+ prefix = belongs_to.path_component + '/'
38
+ end
39
+ prefix
40
+ end
41
+
42
+ def build_receiver
43
+ if defined?(belongs_to)
44
+ belongs_to.send(described_class.endpoint_name.pluralize.to_sym)
45
+ else
46
+ client.send(class_basename)
47
+ end
48
+ end
49
+
50
+ shared_examples "a resource" do
51
+
52
+ it "gracefully handles non-json responses" do
53
+ if defined? target
54
+ subject = target
55
+ else
56
+ subject = client.send(class_basename).build(described_class.key_attribute.to_s => '99999')
57
+ end
58
+ stub_request(:put, 'http://localhost:2990' + subject.url).
59
+ to_return(:status => 405, :body => "<html><body>Some HTML</body></html>")
60
+ subject.save('foo' => 'bar').should be_false
61
+ lambda do
62
+ subject.save!('foo' => 'bar').should be_false
63
+ end.should raise_error(JIRA::HTTPError)
64
+ end
65
+
66
+ end
67
+
68
+ shared_examples "a resource with a collection GET endpoint" do
69
+
70
+ it "should get the collection" do
71
+ stub_request(:get, "http://localhost:2990" + described_class.collection_path(client)).
72
+ to_return(:status => 200, :body => get_mock_from_path(:get))
73
+ collection = build_receiver.all
74
+ collection.length.should == expected_collection_length
75
+
76
+ first = collection.first
77
+ first.should have_attributes(expected_attributes)
78
+ end
79
+
80
+ end
81
+
82
+ shared_examples "a resource with a singular GET endpoint" do
83
+
84
+ it "GETs a single resource" do
85
+ # E.g., for JIRA::Resource::Project, we need to call
86
+ # client.Project.find()
87
+ stub_request(:get, "http://localhost:2990" + described_class.singular_path(client, key, prefix)).
88
+ to_return(:status => 200, :body => get_mock_from_path(:get, :key => key))
89
+ subject = client.send(class_basename).find(key, options)
90
+
91
+ subject.should have_attributes(expected_attributes)
92
+ end
93
+
94
+ it "builds and fetches a single resource" do
95
+ # E.g., for JIRA::Resource::Project, we need to call
96
+ # client.Project.build('key' => 'ABC123')
97
+ stub_request(:get, "http://localhost:2990" + described_class.singular_path(client, key, prefix)).
98
+ to_return(:status => 200, :body => get_mock_from_path(:get, :key => key))
99
+
100
+ subject = build_receiver.build(described_class.key_attribute.to_s => key)
101
+ subject.fetch
102
+
103
+ subject.should have_attributes(expected_attributes)
104
+ end
105
+
106
+ it "handles a 404" do
107
+ stub_request(:get, "http://localhost:2990" + described_class.singular_path(client, '99999', prefix)).
108
+ to_return(:status => 404, :body => '{"errorMessages":["'+class_basename+' Does Not Exist"],"errors": {}}')
109
+ lambda do
110
+ client.send(class_basename).find('99999', options)
111
+ end.should raise_exception(JIRA::HTTPError)
112
+ end
113
+ end
114
+
115
+ shared_examples "a resource with a DELETE endpoint" do
116
+ it "deletes a resource" do
117
+ # E.g., for JIRA::Resource::Project, we need to call
118
+ # client.Project.delete()
119
+ stub_request(:delete, "http://localhost:2990" + described_class.singular_path(client, key, prefix)).
120
+ to_return(:status => 204, :body => nil)
121
+
122
+ subject = build_receiver.build(described_class.key_attribute.to_s => key)
123
+ subject.delete.should be_true
124
+ end
125
+ end
126
+
127
+ shared_examples "a resource with a POST endpoint" do
128
+
129
+ it "saves a new resource" do
130
+ stub_request(:post, "http://localhost:2990" + described_class.collection_path(client, prefix)).
131
+ to_return(:status => 201, :body => get_mock_from_path(:post))
132
+ subject = build_receiver.build
133
+ subject.save(attributes_for_post).should be_true
134
+ expected_attributes_from_post.each do |method_name, value|
135
+ subject.send(method_name).should == value
136
+ end
137
+ end
138
+
139
+ end
140
+
141
+ shared_examples "a resource with a PUT endpoint" do
142
+
143
+ it "saves an existing component" do
144
+ stub_request(:get, "http://localhost:2990" + described_class.singular_path(client, key, prefix)).
145
+ to_return(:status => 200, :body => get_mock_from_path(:get, :key =>key))
146
+ stub_request(:put, "http://localhost:2990" + described_class.singular_path(client, key, prefix)).
147
+ to_return(:status => 200, :body => get_mock_from_path(:put, :key => key, :value_if_not_found => nil))
148
+ subject = build_receiver.build(described_class.key_attribute.to_s => key)
149
+ subject.fetch
150
+ subject.save(attributes_for_put).should be_true
151
+ expected_attributes_from_put.each do |method_name, value|
152
+ subject.send(method_name).should == value
153
+ end
154
+ end
155
+
156
+ end
157
+
158
+ shared_examples 'a resource with a PUT endpoint that rejects invalid fields' do
159
+
160
+ it "fails to save with an invalid field" do
161
+ stub_request(:get, "http://localhost:2990" + described_class.singular_path(client, key)).
162
+ to_return(:status => 200, :body => get_mock_from_path(:get, :key => key))
163
+ stub_request(:put, "http://localhost:2990" + described_class.singular_path(client, key)).
164
+ to_return(:status => 400, :body => get_mock_from_path(:put, :key => key, :suffix => "invalid"))
165
+ subject = client.send(class_basename).build(described_class.key_attribute.to_s => key)
166
+ subject.fetch
167
+
168
+ subject.save('fields'=> {'invalid' => 'field'}).should be_false
169
+ lambda do
170
+ subject.save!('fields'=> {'invalid' => 'field'})
171
+ end.should raise_error(JIRA::HTTPError)
172
+ end
173
+
174
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jira-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-15 00:00:00.000000000Z
12
+ date: 2012-01-30 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth
16
- requirement: &70116927294340 !ruby/object:Gem::Requirement
16
+ requirement: &70202332043180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70116927294340
24
+ version_requirements: *70202332043180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: oauth
27
- requirement: &70116927293920 !ruby/object:Gem::Requirement
27
+ requirement: &70202332042760 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70116927293920
35
+ version_requirements: *70202332042760
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: railties
38
- requirement: &70116927293500 !ruby/object:Gem::Requirement
38
+ requirement: &70202332042340 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70116927293500
46
+ version_requirements: *70202332042340
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: railties
49
- requirement: &70116927321980 !ruby/object:Gem::Requirement
49
+ requirement: &70202332041920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,32 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70116927321980
57
+ version_requirements: *70202332041920
58
+ - !ruby/object:Gem::Dependency
59
+ name: activesupport
60
+ requirement: &70202332041500 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70202332041500
69
+ - !ruby/object:Gem::Dependency
70
+ name: activesupport
71
+ requirement: &70202332041080 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70202332041080
58
80
  - !ruby/object:Gem::Dependency
59
81
  name: webmock
60
- requirement: &70116927321560 !ruby/object:Gem::Requirement
82
+ requirement: &70202332040660 !ruby/object:Gem::Requirement
61
83
  none: false
62
84
  requirements:
63
85
  - - ! '>='
@@ -65,8 +87,8 @@ dependencies:
65
87
  version: '0'
66
88
  type: :development
67
89
  prerelease: false
68
- version_requirements: *70116927321560
69
- description: API for Jira 5
90
+ version_requirements: *70202332040660
91
+ description: API for JIRA 5
70
92
  email:
71
93
  executables: []
72
94
  extensions: []
@@ -74,37 +96,88 @@ extra_rdoc_files: []
74
96
  files:
75
97
  - .gitignore
76
98
  - Gemfile
77
- - README.markdown
99
+ - README.rdoc
78
100
  - Rakefile
79
101
  - example.rb
80
102
  - jira-ruby.gemspec
81
103
  - lib/jira.rb
104
+ - lib/jira/base.rb
105
+ - lib/jira/base_factory.rb
82
106
  - lib/jira/client.rb
83
- - lib/jira/resource/base.rb
84
- - lib/jira/resource/base_factory.rb
107
+ - lib/jira/has_many_proxy.rb
108
+ - lib/jira/http_error.rb
109
+ - lib/jira/resource/attachment.rb
110
+ - lib/jira/resource/comment.rb
85
111
  - lib/jira/resource/component.rb
86
- - lib/jira/resource/http_error.rb
87
112
  - lib/jira/resource/issue.rb
113
+ - lib/jira/resource/issuetype.rb
114
+ - lib/jira/resource/priority.rb
88
115
  - lib/jira/resource/project.rb
116
+ - lib/jira/resource/status.rb
117
+ - lib/jira/resource/user.rb
118
+ - lib/jira/resource/version.rb
119
+ - lib/jira/resource/worklog.rb
89
120
  - lib/jira/tasks.rb
90
121
  - lib/jira/version.rb
91
122
  - lib/tasks/generate.rake
123
+ - spec/integration/attachment_spec.rb
124
+ - spec/integration/comment_spec.rb
92
125
  - spec/integration/component_spec.rb
93
126
  - spec/integration/issue_spec.rb
127
+ - spec/integration/issuetype_spec.rb
128
+ - spec/integration/priority_spec.rb
94
129
  - spec/integration/project_spec.rb
130
+ - spec/integration/status_spec.rb
131
+ - spec/integration/user_spec.rb
132
+ - spec/integration/version_spec.rb
133
+ - spec/integration/worklog_spec.rb
134
+ - spec/jira/base_factory_spec.rb
135
+ - spec/jira/base_spec.rb
95
136
  - spec/jira/client_spec.rb
96
- - spec/jira/resource/base_factory_spec.rb
97
- - spec/jira/resource/base_spec.rb
98
- - spec/jira/resource/http_error_spec.rb
137
+ - spec/jira/has_many_proxy_spec.rb
138
+ - spec/jira/http_error_spec.rb
139
+ - spec/jira/resource/attachment_spec.rb
140
+ - spec/jira/resource/issue_spec.rb
99
141
  - spec/jira/resource/project_factory_spec.rb
142
+ - spec/jira/resource/project_spec.rb
143
+ - spec/jira/resource/worklog_spec.rb
144
+ - spec/mock_responses/attachment/10000.json
100
145
  - spec/mock_responses/component.post.json
146
+ - spec/mock_responses/component/10000.invalid.put.json
101
147
  - spec/mock_responses/component/10000.json
102
148
  - spec/mock_responses/component/10000.put.json
149
+ - spec/mock_responses/issue.json
103
150
  - spec/mock_responses/issue.post.json
151
+ - spec/mock_responses/issue/10002.invalid.put.json
104
152
  - spec/mock_responses/issue/10002.json
153
+ - spec/mock_responses/issue/10002.put.missing_field_update.json
154
+ - spec/mock_responses/issue/10002/comment.json
155
+ - spec/mock_responses/issue/10002/comment.post.json
156
+ - spec/mock_responses/issue/10002/comment/10000.json
157
+ - spec/mock_responses/issue/10002/comment/10000.put.json
158
+ - spec/mock_responses/issue/10002/worklog.json
159
+ - spec/mock_responses/issue/10002/worklog.post.json
160
+ - spec/mock_responses/issue/10002/worklog/10000.json
161
+ - spec/mock_responses/issue/10002/worklog/10000.put.json
162
+ - spec/mock_responses/issuetype.json
163
+ - spec/mock_responses/issuetype/5.json
164
+ - spec/mock_responses/priority.json
165
+ - spec/mock_responses/priority/1.json
105
166
  - spec/mock_responses/project.json
167
+ - spec/mock_responses/project/SAMPLEPROJECT.issues.json
106
168
  - spec/mock_responses/project/SAMPLEPROJECT.json
169
+ - spec/mock_responses/status.json
170
+ - spec/mock_responses/status/1.json
171
+ - spec/mock_responses/user?username=admin.json
172
+ - spec/mock_responses/version.post.json
173
+ - spec/mock_responses/version/10000.invalid.put.json
174
+ - spec/mock_responses/version/10000.json
175
+ - spec/mock_responses/version/10000.put.json
107
176
  - spec/spec_helper.rb
177
+ - spec/support/matchers/have_attributes.rb
178
+ - spec/support/matchers/have_many.rb
179
+ - spec/support/matchers/have_one.rb
180
+ - spec/support/shared_examples/integration.rb
108
181
  homepage: http://trineo.co.nz
109
182
  licenses: []
110
183
  post_install_message:
@@ -128,21 +201,63 @@ rubyforge_project: jira-ruby
128
201
  rubygems_version: 1.8.6
129
202
  signing_key:
130
203
  specification_version: 3
131
- summary: Ruby Gem for use with the Atlassian Jira 5 REST API
204
+ summary: Ruby Gem for use with the Atlassian JIRA 5 REST API
132
205
  test_files:
206
+ - spec/integration/attachment_spec.rb
207
+ - spec/integration/comment_spec.rb
133
208
  - spec/integration/component_spec.rb
134
209
  - spec/integration/issue_spec.rb
210
+ - spec/integration/issuetype_spec.rb
211
+ - spec/integration/priority_spec.rb
135
212
  - spec/integration/project_spec.rb
213
+ - spec/integration/status_spec.rb
214
+ - spec/integration/user_spec.rb
215
+ - spec/integration/version_spec.rb
216
+ - spec/integration/worklog_spec.rb
217
+ - spec/jira/base_factory_spec.rb
218
+ - spec/jira/base_spec.rb
136
219
  - spec/jira/client_spec.rb
137
- - spec/jira/resource/base_factory_spec.rb
138
- - spec/jira/resource/base_spec.rb
139
- - spec/jira/resource/http_error_spec.rb
220
+ - spec/jira/has_many_proxy_spec.rb
221
+ - spec/jira/http_error_spec.rb
222
+ - spec/jira/resource/attachment_spec.rb
223
+ - spec/jira/resource/issue_spec.rb
140
224
  - spec/jira/resource/project_factory_spec.rb
225
+ - spec/jira/resource/project_spec.rb
226
+ - spec/jira/resource/worklog_spec.rb
227
+ - spec/mock_responses/attachment/10000.json
141
228
  - spec/mock_responses/component.post.json
229
+ - spec/mock_responses/component/10000.invalid.put.json
142
230
  - spec/mock_responses/component/10000.json
143
231
  - spec/mock_responses/component/10000.put.json
232
+ - spec/mock_responses/issue.json
144
233
  - spec/mock_responses/issue.post.json
234
+ - spec/mock_responses/issue/10002.invalid.put.json
145
235
  - spec/mock_responses/issue/10002.json
236
+ - spec/mock_responses/issue/10002.put.missing_field_update.json
237
+ - spec/mock_responses/issue/10002/comment.json
238
+ - spec/mock_responses/issue/10002/comment.post.json
239
+ - spec/mock_responses/issue/10002/comment/10000.json
240
+ - spec/mock_responses/issue/10002/comment/10000.put.json
241
+ - spec/mock_responses/issue/10002/worklog.json
242
+ - spec/mock_responses/issue/10002/worklog.post.json
243
+ - spec/mock_responses/issue/10002/worklog/10000.json
244
+ - spec/mock_responses/issue/10002/worklog/10000.put.json
245
+ - spec/mock_responses/issuetype.json
246
+ - spec/mock_responses/issuetype/5.json
247
+ - spec/mock_responses/priority.json
248
+ - spec/mock_responses/priority/1.json
146
249
  - spec/mock_responses/project.json
250
+ - spec/mock_responses/project/SAMPLEPROJECT.issues.json
147
251
  - spec/mock_responses/project/SAMPLEPROJECT.json
252
+ - spec/mock_responses/status.json
253
+ - spec/mock_responses/status/1.json
254
+ - spec/mock_responses/user?username=admin.json
255
+ - spec/mock_responses/version.post.json
256
+ - spec/mock_responses/version/10000.invalid.put.json
257
+ - spec/mock_responses/version/10000.json
258
+ - spec/mock_responses/version/10000.put.json
148
259
  - spec/spec_helper.rb
260
+ - spec/support/matchers/have_attributes.rb
261
+ - spec/support/matchers/have_many.rb
262
+ - spec/support/matchers/have_one.rb
263
+ - spec/support/shared_examples/integration.rb