roust 1.7.0 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b227d0780f4901c6964f0dbabc8249a14eb36ca
4
- data.tar.gz: 74852906c70295672ef84e94f545236948bc71ea
3
+ metadata.gz: c102bb99b7d456ca07bf00247fbaa73bb59d478f
4
+ data.tar.gz: b27166baced2282c39f4abb164852e865815c88c
5
5
  SHA512:
6
- metadata.gz: 4f5f32014af95ef2afed1b8bd21574532a8eadee97293ee135e80a67d152ccd58dc2731e30a35afd053996636ca7826157758e9c5b88951a0739a30d3e54b1d4
7
- data.tar.gz: 2f126f6276a5fd87467ae0d7a804cf458f52089d4825b4df4dcad5b7a76185136cf9f2259482489a3d9b65957c192c353ab7ca5c0e1d0b0ab920c8b061fb4e62
6
+ metadata.gz: e305f5117a6a07a034699cf5644362c05815bc7d903041ea4325cc652164d12101348f876dbf4b5970712880244fe0f021ba822393f450bc53f8ec392d54bffb
7
+ data.tar.gz: b646a7d5c1fcd8e5614292f575964a2b89d16204e6ac38a54a7eb207bb6cb364cdbc437662aec048c25adca1ce4e95560336927391b8312d9bd0c3f6d7b4451e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- roust (1.7.0)
4
+ roust (1.7.1)
5
5
  activesupport (>= 4.1.0)
6
6
  httparty (>= 0.13.1)
7
7
  mail (>= 2.5.4)
data/README.md CHANGED
@@ -44,7 +44,8 @@ rt = Roust.new(credentials)
44
44
  rt.authenticated? # => true
45
45
 
46
46
  # Query RT
47
- rt.search(:query => "id = 1 or id = 2") # => [["1", "A subject"], ["2", "Another subject"]]
47
+ rt.search(:query => "id = 1 or id = 2") # => [ {"id"=>"1", "Subject"=>"tell Nestor password for ROAR website"}, {"id"=>"2", "Subject"=>"Blum"} ]
48
+ rt.search(:query => "id = 1 or id = 2", :verbose => true) # => [ { "Subject"=>"Heavy packet loss", "id"=>"1", "Queue"=>"support", "Owner"=>"bob", "Creator"=>"alice", ... } ]
48
49
 
49
50
  # Fetch ticket metadata
50
51
  rt.show("1") # => { {"cc"=>["dan@us.example", "dave@them.example"], "owner"=>"bob", "creator"=>"alice", "status"=>"open", … }
@@ -53,6 +54,13 @@ rt.show("1") # => { {"cc"=>["dan@us.example", "dave@them.example"], "owner"=>"bo
53
54
  rt.history("1", :format => "short") # => [["1", "Ticket created by alice"], ["2", "Status changed from 'open' to 'resolved' by bob"]]
54
55
  rt.history("1", :format => "long") # => [{"id"=>"1", "ticket"=>"1", "timetaken"=>"0", "type"=>"Create", "field"=>"", "oldvalue"=>"", "newvalue"=>"", "data"=>"", "description"=>"Ticket created by alice" }, … ]
55
56
 
57
+ # Create ticket
58
+ attrs = {
59
+ 'Subject' => 'a test ticket',
60
+ 'Queue' => 'sales'
61
+ }
62
+ rt.create(attrs) # => { 'Subject' => 'a test ticket', 'Queue' => 'sales', … }
63
+
56
64
  # Fetch user details
57
65
  rt.user("dan@us.example") # => {"id"=>"user/160000", "name"=>"dan", "password"=>"********", "emailaddress"=>"dan@us.example", "realname"=>"Dan Smith", "nickname"=>"dan", … }
58
66
 
data/lib/roust/ticket.rb CHANGED
@@ -96,6 +96,8 @@ class Roust
96
96
 
97
97
  body, _ = explode_response(response)
98
98
 
99
+ return [] if body =~ /^No matching results\./
100
+
99
101
  if verbose
100
102
  results = body.split("\n--\n\n")
101
103
  results.map do |result_body|
data/lib/roust/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Roust
2
- VERSION = '1.7.0'
2
+ VERSION = '1.7.1'
3
3
  end
@@ -0,0 +1,19 @@
1
+ RT/3.4.6 200 Ok
2
+
3
+ id: ticket/99
4
+ Queue: sales
5
+ Subject: test ticket
6
+ Status: new
7
+ Priority: 101
8
+ InitialPriority: 101
9
+ FinalPriority: 100
10
+ Created: Tue Dec 11 07:59:31 2012
11
+ Starts: Not set
12
+ Started: Not set
13
+ Due: Wed Dec 12 20:58:48 2012
14
+ Resolved: Wed Jan 16 16:33:15 2013
15
+ Told: Mon Jan 07 15:27:09 2013
16
+ LastUpdated: Wed Nov 06 09:33:43 2013
17
+ TimeEstimated: 0
18
+ TimeWorked: 12 hours
19
+ TimeLeft: 0
@@ -0,0 +1,4 @@
1
+ RT/3.4.6 200 Ok
2
+
3
+ # Ticket 99 created
4
+
@@ -0,0 +1,3 @@
1
+ RT/3.4.6 200 Ok
2
+
3
+ No matching results.
@@ -17,6 +17,13 @@ describe Roust do
17
17
  :body => mocks_path.join('ticket-search-1-or-2-long.txt').read,
18
18
  :headers => {})
19
19
 
20
+ %w(s l).each do |format|
21
+ stub_request(:get, "http://rt.example.org/REST/1.0/search/ticket?format=#{format}&orderby=%2Bid&query=subject%20=%20%22a%20ticket%20that%20does%20not%20exist%22")
22
+ .to_return(:status => 200,
23
+ :body => mocks_path.join('ticket-search-that-does-not-exist.txt').read,
24
+ :headers => {})
25
+ end
26
+
20
27
  stub_request(:get, 'http://rt.example.org/REST/1.0/ticket/1/history?format=s')
21
28
  .to_return(:status => 200,
22
29
  :body => mocks_path.join('ticket-1-history-short.txt').read,
@@ -32,6 +39,17 @@ describe Roust do
32
39
  :body => mocks_path.join('ticket-3-links.txt').read,
33
40
  :headers => {})
34
41
 
42
+ stub_request(:post, "http://rt.example.org/REST/1.0/ticket/new")
43
+ .with(:body => "content=id%3A%20ticket%2Fnew%0ASubject%3A%20test%20ticket%0AQueue%3A%20sales")
44
+ .to_return(:status => 200,
45
+ :body => mocks_path.join('ticket-create.txt').read,
46
+ :headers => {})
47
+
48
+ stub_request(:get, 'http://rt.example.org/REST/1.0/ticket/99/show')
49
+ .to_return(:status => 200,
50
+ :body => mocks_path.join('ticket-99-show.txt').read,
51
+ :headers => {})
52
+
35
53
  @rt = Roust.new(credentials)
36
54
  expect(@rt.authenticated?).to eq(true)
37
55
  end
@@ -45,6 +63,14 @@ describe Roust do
45
63
  end
46
64
  end
47
65
 
66
+ it 'can list no tickets when there are no search results' do
67
+ results = @rt.search(:query => 'subject = "a ticket that does not exist"')
68
+ expect(results.size).to eq(0)
69
+
70
+ results = @rt.search(:query => 'subject = "a ticket that does not exist"', :verbose => true)
71
+ expect(results.size).to eq(0)
72
+ end
73
+
48
74
  it 'can verbosely list tickets matching a query' do
49
75
  results = @rt.search(:query => 'id = 1 or id = 2', :verbose => true)
50
76
  expect(results.size).to eq(2)
@@ -115,5 +141,17 @@ describe Roust do
115
141
  expect(links[key]).to_not be_empty
116
142
  end
117
143
  end
144
+
145
+ it 'can create tickets' do
146
+ attrs = {
147
+ 'Subject' => 'test ticket',
148
+ 'Queue' => 'sales',
149
+ }
150
+ ticket = @rt.ticket_create(attrs)
151
+
152
+ attrs.each do |k, v|
153
+ expect(ticket[k]).to eq(v)
154
+ end
155
+ end
118
156
  end
119
157
  end
data/spec/spec_helper.rb CHANGED
@@ -35,7 +35,9 @@ RSpec.shared_context 'credentials' do
35
35
  'user' => 'admin',
36
36
  'pass' => 'password'
37
37
  })
38
- .to_return(:status => 200, :body => '', :headers => {})
38
+ .to_return(:status => 200,
39
+ :body => mocks_path.join('ticket-create.txt').read,
40
+ :headers => {})
39
41
 
40
42
  stub_request(:get, 'http://rt.example.org/REST/1.0/ticket/1/show')
41
43
  .to_return(:status => 200,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roust
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.7.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-09-05 00:00:00.000000000 Z
11
+ date: 2014-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -85,8 +85,11 @@ files:
85
85
  - spec/mocks/ticket-1-show-unauthenticated.txt
86
86
  - spec/mocks/ticket-1-show.txt
87
87
  - spec/mocks/ticket-3-links.txt
88
+ - spec/mocks/ticket-99-show.txt
89
+ - spec/mocks/ticket-create.txt
88
90
  - spec/mocks/ticket-search-1-or-2-long.txt
89
91
  - spec/mocks/ticket-search-1-or-2.txt
92
+ - spec/mocks/ticket-search-that-does-not-exist.txt
90
93
  - spec/mocks/user-dan@us.example-after-edit.txt
91
94
  - spec/mocks/user-dan@us.example-edit.txt
92
95
  - spec/mocks/user-dan@us.example.txt
@@ -130,8 +133,11 @@ test_files:
130
133
  - spec/mocks/ticket-1-show-unauthenticated.txt
131
134
  - spec/mocks/ticket-1-show.txt
132
135
  - spec/mocks/ticket-3-links.txt
136
+ - spec/mocks/ticket-99-show.txt
137
+ - spec/mocks/ticket-create.txt
133
138
  - spec/mocks/ticket-search-1-or-2-long.txt
134
139
  - spec/mocks/ticket-search-1-or-2.txt
140
+ - spec/mocks/ticket-search-that-does-not-exist.txt
135
141
  - spec/mocks/user-dan@us.example-after-edit.txt
136
142
  - spec/mocks/user-dan@us.example-edit.txt
137
143
  - spec/mocks/user-dan@us.example.txt