jira-ruby 0.1.7 → 0.1.8
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 +4 -4
- data/lib/jira/base.rb +31 -3
- data/lib/jira/resource/project.rb +5 -4
- data/lib/jira/version.rb +1 -1
- data/spec/integration/project_spec.rb +1 -1
- data/spec/jira/base_spec.rb +30 -0
- data/spec/jira/resource/project_spec.rb +46 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73c4e19bc5c82d26d320a378266855abc8244997
|
4
|
+
data.tar.gz: 2fd1c376a41076726c10f28afd9e4c380b38b91f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b150a3fc57ba754238ae9851d2dd1c0b8f190203cd3e195d88c4778381c261f8f8a5196200f8ec13382eca8821fa2e24cf0008c37bf9582d91efda165d0e162
|
7
|
+
data.tar.gz: af41788a14386555867711bd12b40622f2b473f02362b6fec5268cd7a3a99a4b82de73cb873bc91954296140e001900fd5f561cb307baf6eb45926b25c1bb911
|
data/lib/jira/base.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'active_support/core_ext/string'
|
2
2
|
require 'active_support/inflector'
|
3
|
+
require 'set'
|
3
4
|
|
4
5
|
module JIRA
|
5
6
|
|
@@ -50,6 +51,8 @@ module JIRA
|
|
50
51
|
# new_comment = issue.comments.build
|
51
52
|
#
|
52
53
|
class Base
|
54
|
+
QUERY_PARAMS_FOR_SINGLE_FETCH = Set.new [:expand, :fields]
|
55
|
+
QUERY_PARAMS_FOR_SEARCH = Set.new [:expand, :fields, :startAt, :maxResults]
|
53
56
|
|
54
57
|
# A reference to the JIRA::Client used to initialize this resource.
|
55
58
|
attr_reader :client
|
@@ -104,7 +107,7 @@ module JIRA
|
|
104
107
|
def self.find(client, key, options = {})
|
105
108
|
instance = self.new(client, options)
|
106
109
|
instance.attrs[key_attribute.to_s] = key
|
107
|
-
instance.fetch
|
110
|
+
instance.fetch(false, query_params_for_single_fetch(options))
|
108
111
|
instance
|
109
112
|
end
|
110
113
|
|
@@ -331,9 +334,9 @@ module JIRA
|
|
331
334
|
# Fetches the attributes for the specified resource from JIRA unless
|
332
335
|
# the resource is already expanded and the optional force reload flag
|
333
336
|
# is not set
|
334
|
-
def fetch(reload = false)
|
337
|
+
def fetch(reload = false, query_params = {})
|
335
338
|
return if expanded? && !reload
|
336
|
-
response = client.get(url)
|
339
|
+
response = client.get(url_with_query_params(url, query_params))
|
337
340
|
set_attrs_from_response(response)
|
338
341
|
@expanded = true
|
339
342
|
end
|
@@ -465,5 +468,30 @@ module JIRA
|
|
465
468
|
end
|
466
469
|
end
|
467
470
|
|
471
|
+
def url_with_query_params(url, query_params)
|
472
|
+
if not query_params.empty?
|
473
|
+
"#{url}?#{hash_to_query_string query_params}"
|
474
|
+
else
|
475
|
+
url
|
476
|
+
end
|
477
|
+
end
|
478
|
+
|
479
|
+
def hash_to_query_string(query_params)
|
480
|
+
query_params.map do |k,v|
|
481
|
+
CGI.escape(k.to_s) + "=" + CGI.escape(v.to_s)
|
482
|
+
end.join('&')
|
483
|
+
end
|
484
|
+
|
485
|
+
def self.query_params_for_single_fetch(options)
|
486
|
+
Hash[options.select do |k,v|
|
487
|
+
QUERY_PARAMS_FOR_SINGLE_FETCH.include? k
|
488
|
+
end]
|
489
|
+
end
|
490
|
+
|
491
|
+
def self.query_params_for_search(options)
|
492
|
+
Hash[options.select do |k,v|
|
493
|
+
QUERY_PARAMS_FOR_SEARCH.include? k
|
494
|
+
end]
|
495
|
+
end
|
468
496
|
end
|
469
497
|
end
|
@@ -16,15 +16,16 @@ module JIRA
|
|
16
16
|
end
|
17
17
|
|
18
18
|
# Returns all the issues for this project
|
19
|
-
def issues
|
20
|
-
|
19
|
+
def issues(options={})
|
20
|
+
search_url = client.options[:rest_base_path] + '/search'
|
21
|
+
query_params = {:jql => "project=\"#{key}\""}
|
22
|
+
query_params.update Base.query_params_for_search(options)
|
23
|
+
response = client.get(url_with_query_params(search_url, query_params))
|
21
24
|
json = self.class.parse_json(response.body)
|
22
25
|
json['issues'].map do |issue|
|
23
26
|
client.Issue.build(issue)
|
24
27
|
end
|
25
28
|
end
|
26
|
-
|
27
29
|
end
|
28
|
-
|
29
30
|
end
|
30
31
|
end
|
data/lib/jira/version.rb
CHANGED
@@ -26,7 +26,7 @@ describe JIRA::Resource::Project do
|
|
26
26
|
describe "issues" do
|
27
27
|
|
28
28
|
it "returns all the issues" do
|
29
|
-
stub_request(:get, site_url + "/jira/rest/api/2/search?jql=project
|
29
|
+
stub_request(:get, site_url + "/jira/rest/api/2/search?jql=project=\"SAMPLEPROJECT\"").
|
30
30
|
to_return(:status => 200, :body => get_mock_response('project/SAMPLEPROJECT.issues.json'))
|
31
31
|
subject = client.Project.build('key' => key)
|
32
32
|
issues = subject.issues
|
data/spec/jira/base_spec.rb
CHANGED
@@ -67,6 +67,21 @@ describe JIRA::Base do
|
|
67
67
|
deadbeef.expanded?.should be_true
|
68
68
|
end
|
69
69
|
|
70
|
+
it "finds a deadbeef containing changelog by id" do
|
71
|
+
response = double()
|
72
|
+
response.stub(:body).and_return('{"self":"http://deadbeef/","id":"98765","changelog":{"histories":[]}}')
|
73
|
+
client.should_receive(:get).with('/jira/rest/api/2/deadbeef/98765?expand=changelog').and_return(response)
|
74
|
+
|
75
|
+
JIRA::Resource::Deadbeef.should_receive(:collection_path).and_return('/jira/rest/api/2/deadbeef')
|
76
|
+
|
77
|
+
deadbeef = JIRA::Resource::Deadbeef.find(client, '98765', {expand:'changelog'})
|
78
|
+
deadbeef.client.should == client
|
79
|
+
deadbeef.attrs['self'].should == 'http://deadbeef/'
|
80
|
+
deadbeef.attrs['id'].should == '98765'
|
81
|
+
deadbeef.expanded?.should be_true
|
82
|
+
deadbeef.attrs['changelog']['histories'].should == []
|
83
|
+
end
|
84
|
+
|
70
85
|
it "builds a deadbeef" do
|
71
86
|
deadbeef = JIRA::Resource::Deadbeef.build(client, 'id' => "98765" )
|
72
87
|
deadbeef.expanded?.should be_false
|
@@ -176,6 +191,21 @@ describe JIRA::Base do
|
|
176
191
|
end
|
177
192
|
end
|
178
193
|
|
194
|
+
context "with expand parameter 'changelog'" do
|
195
|
+
it "fetchs changelogs '" do
|
196
|
+
response = double()
|
197
|
+
response.stub(:body).and_return('{"self":"http://deadbeef/","id":"98765","changelog":{"histories":[]}}')
|
198
|
+
client.should_receive(:get).with('/jira/rest/api/2/deadbeef/98765?expand=changelog').and_return(response)
|
199
|
+
|
200
|
+
JIRA::Resource::Deadbeef.should_receive(:collection_path).and_return('/jira/rest/api/2/deadbeef')
|
201
|
+
|
202
|
+
subject.fetch(false, {expand:'changelog'})
|
203
|
+
|
204
|
+
subject.self.should == "http://deadbeef/"
|
205
|
+
subject.id.should == "98765"
|
206
|
+
subject.changelog['histories'].should == []
|
207
|
+
end
|
208
|
+
end
|
179
209
|
end
|
180
210
|
|
181
211
|
describe "save" do
|
@@ -2,14 +2,17 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe JIRA::Resource::Project do
|
4
4
|
|
5
|
-
let(:client) { double(
|
5
|
+
let(:client) { double("client", :options => {
|
6
|
+
:rest_base_path => '/jira/rest/api/2'
|
7
|
+
})
|
8
|
+
}
|
6
9
|
|
7
10
|
describe "relationships" do
|
8
11
|
subject {
|
9
12
|
JIRA::Resource::Project.new(client, :attrs => {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
+
'lead' => {'foo' => 'bar'},
|
14
|
+
'issueTypes' => [{'foo' =>'bar'},{'baz' => 'flum'}],
|
15
|
+
'versions' => [{'foo' =>'bar'},{'baz' => 'flum'}],
|
13
16
|
})
|
14
17
|
}
|
15
18
|
|
@@ -25,4 +28,43 @@ describe JIRA::Resource::Project do
|
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
31
|
+
describe "issues" do
|
32
|
+
subject {
|
33
|
+
JIRA::Resource::Project.new(client, :attrs => {
|
34
|
+
'key' => 'test'
|
35
|
+
})
|
36
|
+
}
|
37
|
+
|
38
|
+
it "returns issues" do
|
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")
|
43
|
+
|
44
|
+
client.should_receive(:get)
|
45
|
+
.with('/jira/rest/api/2/search?jql=project%3D%22test%22')
|
46
|
+
.and_return(response)
|
47
|
+
client.should_receive(:Issue).and_return(issue_factory)
|
48
|
+
issue_factory.should_receive(:build)
|
49
|
+
.with(JSON.parse(response_body)["issues"][0])
|
50
|
+
subject.issues
|
51
|
+
end
|
52
|
+
|
53
|
+
context "with changelog" do
|
54
|
+
it "returns issues" do
|
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")
|
59
|
+
|
60
|
+
client.should_receive(:get)
|
61
|
+
.with('/jira/rest/api/2/search?jql=project%3D%22test%22&expand=changelog&startAt=1&maxResults=100')
|
62
|
+
.and_return(response)
|
63
|
+
client.should_receive(:Issue).and_return(issue_factory)
|
64
|
+
issue_factory.should_receive(:build)
|
65
|
+
.with(JSON.parse(response_body)["issues"][0])
|
66
|
+
subject.issues({expand:'changelog', startAt:1, maxResults:100})
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
28
70
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jira-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SUMO Heavy Industries
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oauth
|