roust 1.5.0 → 1.6.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ecda9bb4e79252eb39c2839ff0b8ae25f4069817
4
- data.tar.gz: fc627b8cb18996b1658249f0cf5d434a219f1a90
3
+ metadata.gz: 3febce0ccfa7b44ea209547f57d97b758f7e7190
4
+ data.tar.gz: d45a596e62bc4c1039428796539f7c5057f7ffd4
5
5
  SHA512:
6
- metadata.gz: 5773318cc0aad6e9f4da047481c7f3aecd760854f9d94dc6cefe3a2751f0c984ca0ca141dce9eb80da50468d2dfcb1b9a1b9f3ed064353d4a8e075d94edb22fd
7
- data.tar.gz: eaa2ffe6bbcb5ff81ffa52c759d65a3af9cc34b85c781538a536ead7494806c61eed87471edf0b875f2d6f41b686daf80dfd7ccbea76f73599d1987faa6ecc73
6
+ metadata.gz: ae9c3cc4cdc0518d99d0c8a0a5e2947ff1267614c01f20c221218634a4fbafe2794c5933f97d79cf081bd55d0a52da1f023298a1dd201fc04246c55ab0088d72
7
+ data.tar.gz: 68025367e6042fecf660cdb6ade159895d5b1d12e1db9cdf685cfdee65b5602c0fba187b421f0eeb391557fb335e99c5f732a5fcb9a40ea06c4ca0052f430a42
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.0.0-p247
1
+ 2.1.2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roust (1.5.0)
4
+ roust (1.6.1)
5
5
  activesupport (>= 4.1.0)
6
6
  httparty (>= 0.13.1)
7
7
  mail (>= 2.5.4)
@@ -25,19 +25,17 @@ GEM
25
25
  httparty (0.13.1)
26
26
  json (~> 1.8)
27
27
  multi_xml (>= 0.5.2)
28
- i18n (0.6.9)
28
+ i18n (0.6.11)
29
29
  json (1.8.1)
30
- mail (2.5.4)
31
- mime-types (~> 1.16)
32
- treetop (~> 1.4.8)
30
+ mail (2.6.1)
31
+ mime-types (>= 1.16, < 3)
33
32
  method_source (0.8.2)
34
- mime-types (1.25.1)
33
+ mime-types (2.3)
35
34
  minitest (5.3.3)
36
35
  multi_xml (0.5.5)
37
36
  parser (2.2.0.pre.3)
38
37
  ast (>= 1.1, < 3.0)
39
38
  slop (~> 3.4, >= 3.4.5)
40
- polyglot (0.3.4)
41
39
  powerpack (0.0.9)
42
40
  pry (0.9.12.2)
43
41
  coderay (~> 1.0.5)
@@ -67,9 +65,6 @@ GEM
67
65
  safe_yaml (0.9.7)
68
66
  slop (3.5.0)
69
67
  thread_safe (0.3.3)
70
- treetop (1.4.15)
71
- polyglot
72
- polyglot (>= 0.3.1)
73
68
  tzinfo (1.1.0)
74
69
  thread_safe (~> 0.1)
75
70
  webmock (1.17.1)
data/README.md CHANGED
@@ -101,6 +101,5 @@ TODO
101
101
  ----
102
102
 
103
103
  - Links CRUD (linking tickets to one another)
104
- - User CRUD (creating + updating + deleting users)
105
104
  - Ticket comment + correspondence
106
105
  - Attachment fetching
data/lib/roust/ticket.rb CHANGED
@@ -113,14 +113,16 @@ class Roust
113
113
  end
114
114
  end
115
115
 
116
- def ticket_search(query)
116
+ def ticket_search(attrs)
117
117
  params = {
118
- :query => query,
119
118
  :format => 's',
120
119
  :orderby => '+id'
121
- }
120
+ }.merge(attrs)
121
+
122
+ # FIXME(auxesis): query should be an actual method argument
123
+ raise ArgumentError, ":query not specified" unless params[:query]
124
+
122
125
  response = self.class.get('/search/ticket', :query => params)
123
- # FIXME(auxesis) use explode_response here
124
126
 
125
127
  body, _ = explode_response(response)
126
128
  body.split("\n").map do |t|
@@ -153,7 +155,20 @@ class Roust
153
155
  end
154
156
  end
155
157
 
156
- # TODO(auxesis): add method for getting ticket links
158
+ def ticket_links(id)
159
+ response = self.class.get("/ticket/#{id}/links")
160
+ body, _ = explode_response(response)
161
+
162
+ hash = body_to_hash(body)
163
+ id = hash.delete('id').split('/')[1]
164
+ cleaned_hash = hash.map do |k, v|
165
+ ids = v.split(/\s*,\s*/).map {|url| url.split('/').last }
166
+ [ k, ids ]
167
+ end
168
+
169
+ Hash[cleaned_hash].merge('id' => id)
170
+ end
171
+
157
172
  # TODO(auxesis): add method for updating ticket links
158
173
  # TODO(auxesis): add method for listing ticket attachments
159
174
  # TODO(auxesis): add method for getting a ticket attachment
data/lib/roust/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Roust
2
- VERSION = '1.5.0'
2
+ VERSION = '1.6.1'
3
3
  end
@@ -0,0 +1,19 @@
1
+ RT/3.4.6 200 Ok
2
+
3
+ id: ticket/3/links
4
+
5
+ Members: fsck.com-rt://rt.example.org/ticket/100,
6
+ fsck.com-rt://rt.example.org/ticket/101,
7
+ fsck.com-rt://rt.example.org/ticket/102
8
+
9
+ MemberOf: fsck.com-rt://rt.example.org/ticket/99
10
+
11
+ RefersTo: fsck.com-rt://rt.example.org/ticket/150
12
+
13
+ ReferredToBy: fsck.com-rt://rt.example.org/ticket/151
14
+
15
+ DependsOn: fsck.com-rt://rt.example.org/ticket/50,
16
+ fsck.com-rt://rt.example.org/ticket/51,
17
+ fsck.com-rt://rt.example.org/ticket/52
18
+
19
+ DependedOnBy: fsck.com-rt://rt.example.org/ticket/49
@@ -7,7 +7,7 @@ describe Roust do
7
7
  before do
8
8
  mocks_path = Pathname.new(__FILE__).parent.parent.join('mocks')
9
9
 
10
- stub_request(:get, 'http://rt.example.org/REST/1.0/search/ticket?format=s&orderby=%2Bid&query%5Bquery%5D=id%20=%201%20or%20id%20=%202')
10
+ stub_request(:get, "http://rt.example.org/REST/1.0/search/ticket?format=s&orderby=%2Bid&query=id%20=%201%20or%20id%20=%202")
11
11
  .to_return(:status => 200,
12
12
  :body => mocks_path.join('ticket-search-1-or-2.txt').read,
13
13
  :headers => {})
@@ -22,6 +22,11 @@ describe Roust do
22
22
  :body => mocks_path.join('ticket-1-history-long.txt').read,
23
23
  :headers => {})
24
24
 
25
+ stub_request(:get, "http://rt.example.org/REST/1.0/ticket/3/links")
26
+ .to_return(:status => 200,
27
+ :body => mocks_path.join('ticket-3-links.txt').read,
28
+ :headers => {})
29
+
25
30
  @rt = Roust.new(credentials)
26
31
  expect(@rt.authenticated?).to eq(true)
27
32
  end
@@ -76,5 +81,16 @@ describe Roust do
76
81
  end
77
82
  end
78
83
  end
84
+
85
+ it 'can list linked tickets on individual tickets' do
86
+ links = @rt.ticket_links('3')
87
+
88
+ expect(links['id']).to eq('3')
89
+
90
+ %w(Members MemberOf RefersTo ReferredToBy DependsOn DependedOnBy).each do |key|
91
+ expect(links).to include(key)
92
+ expect(links[key]).to_not be_empty
93
+ end
94
+ end
79
95
  end
80
96
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roust
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lindsay Holmwood
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-07 00:00:00.000000000 Z
11
+ date: 2014-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.5.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.5.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: httparty
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.13.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.13.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 4.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 4.1.0
55
55
  description: Roust is a Ruby API client to access Request Tracker's REST interface.
@@ -59,13 +59,13 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .rspec
64
- - .rubocop.yml
65
- - .rubocop_roust.yml
66
- - .rubocop_todo.yml
67
- - .ruby-version
68
- - .travis.yml
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".rubocop.yml"
65
+ - ".rubocop_roust.yml"
66
+ - ".rubocop_todo.yml"
67
+ - ".ruby-version"
68
+ - ".travis.yml"
69
69
  - Gemfile
70
70
  - Gemfile.lock
71
71
  - LICENSE
@@ -84,6 +84,7 @@ files:
84
84
  - spec/mocks/ticket-1-history-short.txt
85
85
  - spec/mocks/ticket-1-show-unauthenticated.txt
86
86
  - spec/mocks/ticket-1-show.txt
87
+ - spec/mocks/ticket-3-links.txt
87
88
  - spec/mocks/ticket-search-1-or-2.txt
88
89
  - spec/mocks/user-dan@us.example-after-edit.txt
89
90
  - spec/mocks/user-dan@us.example-edit.txt
@@ -106,17 +107,17 @@ require_paths:
106
107
  - lib
107
108
  required_ruby_version: !ruby/object:Gem::Requirement
108
109
  requirements:
109
- - - '>='
110
+ - - ">="
110
111
  - !ruby/object:Gem::Version
111
112
  version: 1.9.2
112
113
  required_rubygems_version: !ruby/object:Gem::Requirement
113
114
  requirements:
114
- - - '>='
115
+ - - ">="
115
116
  - !ruby/object:Gem::Version
116
117
  version: '0'
117
118
  requirements: []
118
119
  rubyforge_project:
119
- rubygems_version: 2.0.3
120
+ rubygems_version: 2.2.2
120
121
  signing_key:
121
122
  specification_version: 4
122
123
  summary: Ruby client for RT's REST API
@@ -127,6 +128,7 @@ test_files:
127
128
  - spec/mocks/ticket-1-history-short.txt
128
129
  - spec/mocks/ticket-1-show-unauthenticated.txt
129
130
  - spec/mocks/ticket-1-show.txt
131
+ - spec/mocks/ticket-3-links.txt
130
132
  - spec/mocks/ticket-search-1-or-2.txt
131
133
  - spec/mocks/user-dan@us.example-after-edit.txt
132
134
  - spec/mocks/user-dan@us.example-edit.txt