jira-ruby 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
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