jira-ruby 1.5.0 → 1.6.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 (88) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +7 -1
  3. data/Guardfile +1 -1
  4. data/Rakefile +4 -5
  5. data/http-basic-example.rb +13 -12
  6. data/jira-ruby.gemspec +9 -10
  7. data/lib/jira-ruby.rb +5 -2
  8. data/lib/jira/base.rb +49 -48
  9. data/lib/jira/base_factory.rb +1 -4
  10. data/lib/jira/client.rb +29 -20
  11. data/lib/jira/has_many_proxy.rb +0 -1
  12. data/lib/jira/http_client.rb +9 -10
  13. data/lib/jira/http_error.rb +3 -5
  14. data/lib/jira/oauth_client.rb +19 -20
  15. data/lib/jira/request_client.rb +3 -4
  16. data/lib/jira/resource/agile.rb +10 -8
  17. data/lib/jira/resource/applinks.rb +5 -8
  18. data/lib/jira/resource/attachment.rb +1 -2
  19. data/lib/jira/resource/board.rb +84 -0
  20. data/lib/jira/resource/comment.rb +0 -2
  21. data/lib/jira/resource/component.rb +1 -3
  22. data/lib/jira/resource/createmeta.rb +12 -14
  23. data/lib/jira/resource/field.rb +22 -22
  24. data/lib/jira/resource/filter.rb +2 -2
  25. data/lib/jira/resource/issue.rb +41 -39
  26. data/lib/jira/resource/issuelink.rb +3 -5
  27. data/lib/jira/resource/issuelinktype.rb +0 -1
  28. data/lib/jira/resource/issuetype.rb +1 -3
  29. data/lib/jira/resource/priority.rb +1 -3
  30. data/lib/jira/resource/project.rb +5 -7
  31. data/lib/jira/resource/rapidview.rb +28 -7
  32. data/lib/jira/resource/remotelink.rb +1 -4
  33. data/lib/jira/resource/resolution.rb +2 -4
  34. data/lib/jira/resource/serverinfo.rb +1 -2
  35. data/lib/jira/resource/sprint.rb +82 -18
  36. data/lib/jira/resource/sprint_report.rb +8 -0
  37. data/lib/jira/resource/status.rb +1 -3
  38. data/lib/jira/resource/transition.rb +2 -6
  39. data/lib/jira/resource/user.rb +12 -2
  40. data/lib/jira/resource/version.rb +1 -3
  41. data/lib/jira/resource/watcher.rb +1 -5
  42. data/lib/jira/resource/webhook.rb +3 -6
  43. data/lib/jira/resource/worklog.rb +3 -5
  44. data/lib/jira/version.rb +1 -1
  45. data/lib/tasks/generate.rake +4 -4
  46. data/spec/integration/attachment_spec.rb +15 -16
  47. data/spec/integration/comment_spec.rb +31 -34
  48. data/spec/integration/component_spec.rb +21 -24
  49. data/spec/integration/field_spec.rb +15 -18
  50. data/spec/integration/issue_spec.rb +44 -48
  51. data/spec/integration/issuelinktype_spec.rb +8 -11
  52. data/spec/integration/issuetype_spec.rb +5 -7
  53. data/spec/integration/priority_spec.rb +5 -8
  54. data/spec/integration/project_spec.rb +13 -20
  55. data/spec/integration/rapidview_spec.rb +17 -10
  56. data/spec/integration/resolution_spec.rb +7 -10
  57. data/spec/integration/status_spec.rb +5 -8
  58. data/spec/integration/transition_spec.rb +17 -20
  59. data/spec/integration/user_spec.rb +24 -8
  60. data/spec/integration/version_spec.rb +21 -25
  61. data/spec/integration/watcher_spec.rb +28 -34
  62. data/spec/integration/webhook.rb +8 -17
  63. data/spec/integration/worklog_spec.rb +30 -34
  64. data/spec/jira/base_factory_spec.rb +11 -12
  65. data/spec/jira/base_spec.rb +204 -228
  66. data/spec/jira/client_spec.rb +26 -28
  67. data/spec/jira/has_many_proxy_spec.rb +11 -12
  68. data/spec/jira/http_client_spec.rb +51 -52
  69. data/spec/jira/http_error_spec.rb +7 -9
  70. data/spec/jira/oauth_client_spec.rb +44 -46
  71. data/spec/jira/request_client_spec.rb +5 -5
  72. data/spec/jira/resource/agile_spec.rb +5 -7
  73. data/spec/jira/resource/attachment_spec.rb +25 -26
  74. data/spec/jira/resource/board_spec.rb +175 -0
  75. data/spec/jira/resource/createmeta_spec.rb +29 -32
  76. data/spec/jira/resource/field_spec.rb +42 -48
  77. data/spec/jira/resource/filter_spec.rb +40 -40
  78. data/spec/jira/resource/issue_spec.rb +87 -89
  79. data/spec/jira/resource/issuelink_spec.rb +1 -1
  80. data/spec/jira/resource/project_factory_spec.rb +2 -4
  81. data/spec/jira/resource/project_spec.rb +33 -33
  82. data/spec/jira/resource/sprint_spec.rb +78 -0
  83. data/spec/jira/resource/user_factory_spec.rb +6 -8
  84. data/spec/jira/resource/worklog_spec.rb +9 -11
  85. data/spec/spec_helper.rb +8 -9
  86. data/spec/support/clients_helper.rb +4 -4
  87. data/spec/support/shared_examples/integration.rb +60 -77
  88. metadata +59 -53
@@ -1,158 +1,157 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe JIRA::Resource::Issue do
4
-
5
4
  class JIRAResourceDelegation < SimpleDelegator # :nodoc:
6
5
  end
7
6
 
8
7
  let(:client) do
9
- client = double(options: {rest_base_path: '/jira/rest/api/2'} )
8
+ client = double(options: { rest_base_path: '/jira/rest/api/2' })
10
9
  allow(client).to receive(:Field).and_return(JIRA::Resource::FieldFactory.new(client))
11
10
  allow(client).to receive(:cache).and_return(OpenStruct.new)
12
11
  client
13
12
  end
14
13
 
15
- describe "#respond_to?" do
16
- describe "when decorated by SimpleDelegator" do
14
+ describe '#respond_to?' do
15
+ describe 'when decorated by SimpleDelegator' do
17
16
  before(:each) do
18
- response = double()
17
+ response = double
19
18
  allow(response).to receive(:body).and_return('{"key":"foo","id":"101"}')
20
19
  allow(JIRA::Resource::Issue).to receive(:collection_path).and_return('/jira/rest/api/2/issue')
21
- allow(client).to receive(:get).with('/jira/rest/api/2/issue/101').
22
- and_return(response)
20
+ allow(client).to receive(:get).with('/jira/rest/api/2/issue/101')
21
+ .and_return(response)
23
22
 
24
- issue = JIRA::Resource::Issue.find(client,101)
25
- @decorated = JIRAResourceDelegation.new( issue )
23
+ issue = JIRA::Resource::Issue.find(client, 101)
24
+ @decorated = JIRAResourceDelegation.new(issue)
26
25
  end
27
- it "responds to key" do
26
+ it 'responds to key' do
28
27
  expect(@decorated.respond_to?(:key)).to eq(true)
29
28
  end
30
- it "does not raise an error" do
31
- expect {
29
+ it 'does not raise an error' do
30
+ expect do
32
31
  @issue.respond_to?(:project)
33
- }.not_to raise_error
32
+ end.not_to raise_error
34
33
  end
35
34
  end
36
35
  end
37
36
 
38
- it "should find all issues" do
39
- response = double()
40
- empty_response = double()
41
- issue = double()
37
+ it 'should find all issues' do
38
+ response = double
39
+ empty_response = double
40
+ issue = double
42
41
 
43
42
  allow(response).to receive(:body).and_return('{"issues":[{"id":"1","summary":"Bugs Everywhere"}]}')
44
- expect(client).to receive(:get).with('/jira/rest/api/2/search?expand=transitions.fields&maxResults=1000&startAt=0').
45
- and_return(response)
43
+ expect(client).to receive(:get).with('/jira/rest/api/2/search?expand=transitions.fields&maxResults=1000&startAt=0')
44
+ .and_return(response)
46
45
  allow(empty_response).to receive(:body).and_return('{"issues":[]}')
47
- expect(client).to receive(:get).with('/jira/rest/api/2/search?expand=transitions.fields&maxResults=1000&startAt=1').
48
- and_return(empty_response)
49
-
46
+ expect(client).to receive(:get).with('/jira/rest/api/2/search?expand=transitions.fields&maxResults=1000&startAt=1')
47
+ .and_return(empty_response)
48
+
50
49
  expect(client).to receive(:Issue).and_return(issue)
51
- expect(issue).to receive(:build).with({"id"=>"1","summary"=>"Bugs Everywhere"})
50
+ expect(issue).to receive(:build).with('id' => '1', 'summary' => 'Bugs Everywhere')
52
51
 
53
52
  issues = JIRA::Resource::Issue.all(client)
54
53
  end
55
54
 
56
- it "should find an issue by key or id" do
57
- response = double()
55
+ it 'should find an issue by key or id' do
56
+ response = double
58
57
 
59
58
  allow(response).to receive(:body).and_return('{"key":"foo","id":"101"}')
60
59
  allow(JIRA::Resource::Issue).to receive(:collection_path).and_return('/jira/rest/api/2/issue')
61
- expect(client).to receive(:get).with('/jira/rest/api/2/issue/foo').
62
- and_return(response)
63
- expect(client).to receive(:get).with('/jira/rest/api/2/issue/101').
64
- and_return(response)
60
+ expect(client).to receive(:get).with('/jira/rest/api/2/issue/foo')
61
+ .and_return(response)
62
+ expect(client).to receive(:get).with('/jira/rest/api/2/issue/101')
63
+ .and_return(response)
65
64
 
66
- issue_from_id = JIRA::Resource::Issue.find(client,101)
67
- issue_from_key = JIRA::Resource::Issue.find(client,'foo')
65
+ issue_from_id = JIRA::Resource::Issue.find(client, 101)
66
+ issue_from_key = JIRA::Resource::Issue.find(client, 'foo')
68
67
 
69
68
  expect(issue_from_id.attrs).to eq(issue_from_key.attrs)
70
69
  end
71
70
 
72
- it "should search an issue with a jql query string" do
73
- response = double()
74
- issue = double()
71
+ it 'should search an issue with a jql query string' do
72
+ response = double
73
+ issue = double
75
74
 
76
75
  allow(response).to receive(:body).and_return('{"issues": {"key":"foo"}}')
77
- expect(client).to receive(:get).with('/jira/rest/api/2/search?jql=foo+bar').
78
- and_return(response)
76
+ expect(client).to receive(:get).with('/jira/rest/api/2/search?jql=foo+bar')
77
+ .and_return(response)
79
78
  expect(client).to receive(:Issue).and_return(issue)
80
- expect(issue).to receive(:build).with(["key", "foo"]).and_return('')
79
+ expect(issue).to receive(:build).with(%w[key foo]).and_return('')
81
80
 
82
- expect(JIRA::Resource::Issue.jql(client,'foo bar')).to eq([''])
81
+ expect(JIRA::Resource::Issue.jql(client, 'foo bar')).to eq([''])
83
82
  end
84
83
 
85
- it "should search an issue with a jql query string and fields" do
86
- response = double()
87
- issue = double()
84
+ it 'should search an issue with a jql query string and fields' do
85
+ response = double
86
+ issue = double
88
87
 
89
88
  allow(response).to receive(:body).and_return('{"issues": {"key":"foo"}}')
90
89
  expect(client).to receive(:get)
91
90
  .with('/jira/rest/api/2/search?jql=foo+bar&fields=foo,bar')
92
91
  .and_return(response)
93
92
  expect(client).to receive(:Issue).and_return(issue)
94
- expect(issue).to receive(:build).with(["key", "foo"]).and_return('')
93
+ expect(issue).to receive(:build).with(%w[key foo]).and_return('')
95
94
 
96
- expect(JIRA::Resource::Issue.jql(client, 'foo bar', fields: ['foo','bar'])).to eq([''])
95
+ expect(JIRA::Resource::Issue.jql(client, 'foo bar', fields: %w[foo bar])).to eq([''])
97
96
  end
98
97
 
99
- it "should search an issue with a jql query string, start at, and maxResults" do
100
- response = double()
101
- issue = double()
98
+ it 'should search an issue with a jql query string, start at, and maxResults' do
99
+ response = double
100
+ issue = double
102
101
 
103
102
  allow(response).to receive(:body).and_return('{"issues": {"key":"foo"}}')
104
103
  expect(client).to receive(:get)
105
104
  .with('/jira/rest/api/2/search?jql=foo+bar&startAt=1&maxResults=3')
106
105
  .and_return(response)
107
106
  expect(client).to receive(:Issue).and_return(issue)
108
- expect(issue).to receive(:build).with(["key", "foo"]).and_return('')
107
+ expect(issue).to receive(:build).with(%w[key foo]).and_return('')
109
108
 
110
- expect(JIRA::Resource::Issue.jql(client,'foo bar', start_at: 1, max_results: 3)).to eq([''])
109
+ expect(JIRA::Resource::Issue.jql(client, 'foo bar', start_at: 1, max_results: 3)).to eq([''])
111
110
  end
112
111
 
113
- it "should search an issue with a jql query string and maxResults equals zero and should return the count of tickets" do
114
- response = double()
115
- issue = double()
112
+ it 'should search an issue with a jql query string and maxResults equals zero and should return the count of tickets' do
113
+ response = double
114
+ issue = double
116
115
 
117
116
  allow(response).to receive(:body).and_return('{"total": 1, "issues": []}')
118
117
  expect(client).to receive(:get)
119
118
  .with('/jira/rest/api/2/search?jql=foo+bar&maxResults=0')
120
119
  .and_return(response)
121
120
 
122
- expect(JIRA::Resource::Issue.jql(client,'foo bar', max_results: 0)).to eq(1)
121
+ expect(JIRA::Resource::Issue.jql(client, 'foo bar', max_results: 0)).to eq(1)
123
122
  end
124
123
 
125
- it "should search an issue with a jql query string and string expand" do
126
- response = double()
127
- issue = double()
124
+ it 'should search an issue with a jql query string and string expand' do
125
+ response = double
126
+ issue = double
128
127
 
129
128
  allow(response).to receive(:body).and_return('{"issues": {"key":"foo"}}')
130
129
  expect(client).to receive(:get)
131
130
  .with('/jira/rest/api/2/search?jql=foo+bar&expand=transitions')
132
131
  .and_return(response)
133
132
  expect(client).to receive(:Issue).and_return(issue)
134
- expect(issue).to receive(:build).with(["key", "foo"]).and_return('')
133
+ expect(issue).to receive(:build).with(%w[key foo]).and_return('')
135
134
 
136
- expect(JIRA::Resource::Issue.jql(client,'foo bar', expand: 'transitions')).to eq([''])
135
+ expect(JIRA::Resource::Issue.jql(client, 'foo bar', expand: 'transitions')).to eq([''])
137
136
  end
138
137
 
139
- it "should search an issue with a jql query string and array expand" do
140
- response = double()
141
- issue = double()
138
+ it 'should search an issue with a jql query string and array expand' do
139
+ response = double
140
+ issue = double
142
141
 
143
142
  allow(response).to receive(:body).and_return('{"issues": {"key":"foo"}}')
144
143
  expect(client).to receive(:get)
145
144
  .with('/jira/rest/api/2/search?jql=foo+bar&expand=transitions')
146
145
  .and_return(response)
147
146
  expect(client).to receive(:Issue).and_return(issue)
148
- expect(issue).to receive(:build).with(["key", "foo"]).and_return('')
147
+ expect(issue).to receive(:build).with(%w[key foo]).and_return('')
149
148
 
150
- expect(JIRA::Resource::Issue.jql(client,'foo bar', expand: %w(transitions))).to eq([''])
149
+ expect(JIRA::Resource::Issue.jql(client, 'foo bar', expand: %w[transitions])).to eq([''])
151
150
  end
152
151
 
153
152
  it 'should return meta data available for editing an issue' do
154
- subject = JIRA::Resource::Issue.new(client, :attrs => {'fields' => {'key' =>'TST=123'}})
155
- response = double()
153
+ subject = JIRA::Resource::Issue.new(client, attrs: { 'fields' => { 'key' => 'TST=123' } })
154
+ response = double
156
155
 
157
156
  allow(response).to receive(:body).and_return(
158
157
  '{"fields":{"summary":{"required":true,"name":"Summary","operations":["set"]}}}'
@@ -161,37 +160,36 @@ describe JIRA::Resource::Issue do
161
160
  .with('/jira/rest/api/2/issue/TST=123/editmeta')
162
161
  .and_return(response)
163
162
 
164
- expect(subject.editmeta).to eq({'summary' => {'required' => true, 'name' => 'Summary', 'operations' => ['set']}})
163
+ expect(subject.editmeta).to eq('summary' => { 'required' => true, 'name' => 'Summary', 'operations' => ['set'] })
165
164
  end
166
165
 
167
-
168
- it "provides direct accessors to the fields" do
169
- subject = JIRA::Resource::Issue.new(client, :attrs => {'fields' => {'foo' =>'bar'}})
166
+ it 'provides direct accessors to the fields' do
167
+ subject = JIRA::Resource::Issue.new(client, attrs: { 'fields' => { 'foo' => 'bar' } })
170
168
  expect(subject).to respond_to(:foo)
171
169
  expect(subject.foo).to eq('bar')
172
170
  end
173
171
 
174
- describe "relationships" do
175
- subject {
176
- JIRA::Resource::Issue.new(client, :attrs => {
177
- 'id' => '123',
178
- 'fields' => {
179
- 'reporter' => {'foo' => 'bar'},
180
- 'assignee' => {'foo' => 'bar'},
181
- 'project' => {'foo' => 'bar'},
182
- 'priority' => {'foo' => 'bar'},
183
- 'issuetype' => {'foo' => 'bar'},
184
- 'status' => {'foo' => 'bar'},
185
- 'components' => [{'foo' => 'bar'}, {'baz' => 'flum'}],
186
- 'versions' => [{'foo' => 'bar'}, {'baz' => 'flum'}],
187
- 'comment' => { 'comments' => [{'foo' => 'bar'}, {'baz' => 'flum'}]},
188
- 'attachment' => [{'foo' => 'bar'}, {'baz' => 'flum'}],
189
- 'worklog' => { 'worklogs' => [{'foo' => 'bar'}, {'baz' => 'flum'}]},
190
- }
191
- })
192
- }
193
-
194
- it "has the correct relationships" do
172
+ describe 'relationships' do
173
+ subject do
174
+ JIRA::Resource::Issue.new(client, attrs: {
175
+ 'id' => '123',
176
+ 'fields' => {
177
+ 'reporter' => { 'foo' => 'bar' },
178
+ 'assignee' => { 'foo' => 'bar' },
179
+ 'project' => { 'foo' => 'bar' },
180
+ 'priority' => { 'foo' => 'bar' },
181
+ 'issuetype' => { 'foo' => 'bar' },
182
+ 'status' => { 'foo' => 'bar' },
183
+ 'components' => [{ 'foo' => 'bar' }, { 'baz' => 'flum' }],
184
+ 'versions' => [{ 'foo' => 'bar' }, { 'baz' => 'flum' }],
185
+ 'comment' => { 'comments' => [{ 'foo' => 'bar' }, { 'baz' => 'flum' }] },
186
+ 'attachment' => [{ 'foo' => 'bar' }, { 'baz' => 'flum' }],
187
+ 'worklog' => { 'worklogs' => [{ 'foo' => 'bar' }, { 'baz' => 'flum' }] }
188
+ }
189
+ })
190
+ end
191
+
192
+ it 'has the correct relationships' do
195
193
  expect(subject).to have_one(:reporter, JIRA::Resource::User)
196
194
  expect(subject.reporter.foo).to eq('bar')
197
195
 
@@ -11,4 +11,4 @@
11
11
  # )
12
12
  # }
13
13
  # end
14
- # end
14
+ # end
@@ -1,13 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe JIRA::Resource::ProjectFactory do
4
-
5
- let(:client) { double() }
4
+ let(:client) { double }
6
5
  subject { JIRA::Resource::ProjectFactory.new(client) }
7
6
 
8
- it "initializes correctly" do
7
+ it 'initializes correctly' do
9
8
  expect(subject.class).to eq(JIRA::Resource::ProjectFactory)
10
9
  expect(subject.client).to eq(client)
11
10
  end
12
-
13
11
  end
@@ -1,22 +1,22 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe JIRA::Resource::Project do
4
+ let(:client) do
5
+ double('client', options: {
6
+ rest_base_path: '/jira/rest/api/2'
7
+ })
8
+ end
9
+
10
+ describe 'relationships' do
11
+ subject do
12
+ JIRA::Resource::Project.new(client, attrs: {
13
+ 'lead' => { 'foo' => 'bar' },
14
+ 'issueTypes' => [{ 'foo' => 'bar' }, { 'baz' => 'flum' }],
15
+ 'versions' => [{ 'foo' => 'bar' }, { 'baz' => 'flum' }]
16
+ })
17
+ end
4
18
 
5
- let(:client) { double("client", :options => {
6
- :rest_base_path => '/jira/rest/api/2'
7
- })
8
- }
9
-
10
- describe "relationships" do
11
- subject {
12
- JIRA::Resource::Project.new(client, :attrs => {
13
- 'lead' => {'foo' => 'bar'},
14
- 'issueTypes' => [{'foo' =>'bar'},{'baz' => 'flum'}],
15
- 'versions' => [{'foo' =>'bar'},{'baz' => 'flum'}],
16
- })
17
- }
18
-
19
- it "has the correct relationships" do
19
+ it 'has the correct relationships' do
20
20
  expect(subject).to have_one(:lead, JIRA::Resource::User)
21
21
  expect(subject.lead.foo).to eq('bar')
22
22
 
@@ -28,42 +28,42 @@ describe JIRA::Resource::Project do
28
28
  end
29
29
  end
30
30
 
31
- describe "issues" do
32
- subject {
33
- JIRA::Resource::Project.new(client, :attrs => {
34
- 'key' => 'test'
35
- })
36
- }
31
+ describe 'issues' do
32
+ subject do
33
+ JIRA::Resource::Project.new(client, attrs: {
34
+ 'key' => 'test'
35
+ })
36
+ end
37
37
 
38
- it "returns issues" do
38
+ it 'returns issues' do
39
39
  response_body = '{"expand":"schema,names","startAt":0,"maxResults":1,"total":1,"issues":[{"expand":"editmeta,renderedFields,transitions,changelog,operations","id":"53062","self":"/rest/api/2/issue/53062","key":"test key","fields":{"summary":"test summary"}}]}'
40
- response = double("response",
41
- :body => response_body)
42
- issue_factory = double("issue factory")
40
+ response = double('response',
41
+ body: response_body)
42
+ issue_factory = double('issue factory')
43
43
 
44
44
  expect(client).to receive(:get)
45
45
  .with('/jira/rest/api/2/search?jql=project%3D%22test%22')
46
46
  .and_return(response)
47
47
  expect(client).to receive(:Issue).and_return(issue_factory)
48
48
  expect(issue_factory).to receive(:build)
49
- .with(JSON.parse(response_body)["issues"][0])
49
+ .with(JSON.parse(response_body)['issues'][0])
50
50
  subject.issues
51
51
  end
52
52
 
53
- context "with changelog" do
54
- it "returns issues" do
53
+ context 'with changelog' do
54
+ it 'returns issues' do
55
55
  response_body = '{"expand":"schema,names","startAt":0,"maxResults":1,"total":1,"issues":[{"expand":"editmeta,renderedFields,transitions,changelog,operations","id":"53062","self":"/rest/api/2/issue/53062","key":"test key","fields":{"summary":"test summary"},"changelog":{}}]}'
56
- response = double("response",
57
- :body => response_body)
58
- issue_factory = double("issue factory")
56
+ response = double('response',
57
+ body: response_body)
58
+ issue_factory = double('issue factory')
59
59
 
60
60
  expect(client).to receive(:get)
61
61
  .with('/jira/rest/api/2/search?jql=project%3D%22test%22&expand=changelog&startAt=1&maxResults=100')
62
62
  .and_return(response)
63
63
  expect(client).to receive(:Issue).and_return(issue_factory)
64
64
  expect(issue_factory).to receive(:build)
65
- .with(JSON.parse(response_body)["issues"][0])
66
- subject.issues({expand:'changelog', startAt:1, maxResults:100})
65
+ .with(JSON.parse(response_body)['issues'][0])
66
+ subject.issues(expand: 'changelog', startAt: 1, maxResults: 100)
67
67
  end
68
68
  end
69
69
  end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+
3
+ describe JIRA::Resource::Sprint do
4
+ describe 'peristence' do
5
+ let(:sprint) { described_class.new(client) }
6
+ let(:client) { double('Client', options: { site: 'https://foo.bar.com' }) }
7
+
8
+ describe '#save' do
9
+ let(:agile_sprint_url) { "#{sprint.client.options[:site]}/rest/agile/1.0/sprint/#{sprint.id}" }
10
+ let(:instance_attrs) { { start_date: '2016-06-01' } }
11
+
12
+ before do
13
+ sprint.attrs = instance_attrs
14
+ end
15
+
16
+ context 'when attributes are specified' do
17
+ let(:given_attrs) { { start_date: '2016-06-10' } }
18
+
19
+ it 'calls save on the super class with the given attributes & agile url' do
20
+ expect_any_instance_of(JIRA::Base).to receive(:save).with(given_attrs, agile_sprint_url)
21
+
22
+ sprint.save(given_attrs)
23
+ end
24
+ end
25
+
26
+ context 'when attributes are not specified' do
27
+ it 'calls save on the super class with the instance attributes & agile url' do
28
+ expect_any_instance_of(JIRA::Base).to receive(:save).with(instance_attrs, agile_sprint_url)
29
+
30
+ sprint.save
31
+ end
32
+ end
33
+
34
+ context 'when providing the path argument' do
35
+ it 'ignores it' do
36
+ expect_any_instance_of(JIRA::Base).to receive(:save).with(instance_attrs, agile_sprint_url)
37
+
38
+ sprint.save({}, 'mavenlink.com')
39
+ end
40
+ end
41
+ end
42
+
43
+ describe '#save!' do
44
+ let(:agile_sprint_url) { "#{sprint.client.options[:site]}/rest/agile/1.0/sprint/#{sprint.id}" }
45
+ let(:instance_attrs) { { start_date: '2016-06-01' } }
46
+
47
+ before do
48
+ sprint.attrs = instance_attrs
49
+ end
50
+
51
+ context 'when attributes are specified' do
52
+ let(:given_attrs) { { start_date: '2016-06-10' } }
53
+
54
+ it 'calls save! on the super class with the given attributes & agile url' do
55
+ expect_any_instance_of(JIRA::Base).to receive(:save!).with(given_attrs, agile_sprint_url)
56
+
57
+ sprint.save!(given_attrs)
58
+ end
59
+ end
60
+
61
+ context 'when attributes are not specified' do
62
+ it 'calls save! on the super class with the instance attributes & agile url' do
63
+ expect_any_instance_of(JIRA::Base).to receive(:save!).with(instance_attrs, agile_sprint_url)
64
+
65
+ sprint.save!
66
+ end
67
+ end
68
+
69
+ context 'when providing the path argument' do
70
+ it 'ignores it' do
71
+ expect_any_instance_of(JIRA::Base).to receive(:save!).with(instance_attrs, agile_sprint_url)
72
+
73
+ sprint.save!({}, 'mavenlink.com')
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end