hipchat 1.4.0 → 1.5.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.
data/lib/hipchat/user.rb CHANGED
@@ -5,13 +5,13 @@ module HipChat
5
5
 
6
6
  class User < OpenStruct
7
7
  include HTTParty
8
+ include FileHelper
8
9
 
9
- format :json
10
+ format :json
10
11
 
11
12
  def initialize(token, params)
12
13
  @token = token
13
- @api = HipChat::ApiVersion::User.new(params[:user_id],
14
- params)
14
+ @api = HipChat::ApiVersion::User.new(params)
15
15
  self.class.base_uri(@api.base_uri)
16
16
  super(params)
17
17
  end
@@ -19,13 +19,36 @@ module HipChat
19
19
  #
20
20
  # Send a private message to user.
21
21
  #
22
- def send(message)
22
+ def send(message, message_format='text')
23
23
  response = self.class.post(@api.send_config[:url],
24
+ :query => { :auth_token => @token },
25
+ :body => {
26
+ :message => message,
27
+ :message_format => message_format
28
+ }.send(@api.send_config[:body_format]),
29
+ :headers => @api.headers
30
+ )
31
+
32
+ case response.code
33
+ when 200, 204;
34
+ true
35
+ when 404
36
+ raise UnknownUser, "Unknown user: `#{user_id}'"
37
+ when 401
38
+ raise Unauthorized, "Access denied to user `#{user_id}'"
39
+ else
40
+ raise UnknownResponseCode, "Unexpected #{response.code} for private message to `#{user_id}'"
41
+ end
42
+ end
43
+
44
+ #
45
+ # Send a private file to user.
46
+ #
47
+ def send_file(message, file)
48
+ response = self.class.post(@api.send_file_config[:url],
24
49
  :query => { :auth_token => @token },
25
- :body => {
26
- :message => message
27
- }.send(@api.send_config[:body_format]),
28
- :headers => @api.headers
50
+ :body => file_body({ :message => message }.send(@api.send_config[:body_format]), file),
51
+ :headers => file_body_headers(@api.headers)
29
52
  )
30
53
 
31
54
  case response.code
@@ -43,18 +66,36 @@ module HipChat
43
66
  # Get a user's details.
44
67
  #
45
68
  def view
46
- puts "#{@api.base_uri}#{@api.view_config[:url]}"
47
69
  response = self.class.get(@api.view_config[:url],
48
- :query => { :auth_token => @token },
49
- :headers => @api.headers
70
+ :query => { :auth_token => @token }.merge(@api.view_config[:query_params]),
71
+ :headers => @api.headers
50
72
  )
51
73
 
52
74
  case response.code
53
75
  when 200
54
- User.new(@token, response.merge(:api_version => 'v2'))
76
+ User.new(@token, response.merge(:api_version => @api.version))
55
77
  else
56
78
  raise UnknownResponseCode, "Unexpected #{response.code} for view message to `#{user_id}'"
57
79
  end
58
80
  end
81
+
82
+ #
83
+ # Get private message history
84
+ #
85
+ def history(params = {})
86
+ params.select! { |key, _value| @api.history_config[:allowed_params].include? key }
87
+
88
+ response = self.class.get(@api.history_config[:url],
89
+ :query => { :auth_token => @token }.merge(params),
90
+ :headers => @api.headers
91
+ )
92
+
93
+ case response.code
94
+ when 200
95
+ response.body
96
+ else
97
+ raise UnknownResponseCode, "Unexpected #{response.code} for view private message history for `#{user_id}'"
98
+ end
99
+ end
59
100
  end
60
101
  end
@@ -1,3 +1,3 @@
1
1
  module HipChat
2
- VERSION = "1.4.0"
2
+ VERSION = '1.5.0'
3
3
  end
@@ -11,20 +11,20 @@ describe "HipChat (API V1)" do
11
11
  it "is successful without custom options" do
12
12
  mock_successful_history()
13
13
 
14
- room.history().should be_true
14
+ expect(room.history()).to be_truthy
15
15
  end
16
16
 
17
17
  it "is successful with custom options" do
18
- mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19')
19
- room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19').should be_true
18
+ mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)
19
+ expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)).to be_truthy
20
20
  end
21
21
 
22
22
  it "is successful from fetched room" do
23
23
  mock_successful_rooms
24
24
  mock_successful_history
25
25
 
26
- subject.rooms.should be_true
27
- subject.rooms.first.history.should be_true
26
+ expect(subject.rooms).to be_truthy
27
+ expect(subject.rooms.first.history).to be_truthy
28
28
  end
29
29
 
30
30
  it "fails when the room doen't exist" do
@@ -32,7 +32,7 @@ describe "HipChat (API V1)" do
32
32
  OpenStruct.new(:code => 404)
33
33
  }
34
34
 
35
- lambda { room.history }.should raise_error(HipChat::UnknownRoom)
35
+ expect { room.history }.to raise_error(HipChat::UnknownRoom)
36
36
  end
37
37
 
38
38
  it "fails when we're not allowed to do so" do
@@ -40,7 +40,7 @@ describe "HipChat (API V1)" do
40
40
  OpenStruct.new(:code => 401)
41
41
  }
42
42
 
43
- lambda { room.history }.should raise_error(HipChat::Unauthorized)
43
+ expect { room.history }.to raise_error(HipChat::Unauthorized)
44
44
  end
45
45
 
46
46
  it "fails if we get an unknown response code" do
@@ -48,8 +48,7 @@ describe "HipChat (API V1)" do
48
48
  OpenStruct.new(:code => 403)
49
49
  }
50
50
 
51
- lambda { room.history }.
52
- should raise_error(HipChat::UnknownResponseCode)
51
+ expect { room.history }.to raise_error(HipChat::UnknownResponseCode)
53
52
  end
54
53
  end
55
54
 
@@ -58,13 +57,13 @@ describe "HipChat (API V1)" do
58
57
  it "is successful without custom options" do
59
58
  mock_successful_topic_change("Nice topic")
60
59
 
61
- room.topic("Nice topic").should be_true
60
+ expect(room.topic("Nice topic")).to be_truthy
62
61
  end
63
62
 
64
63
  it "is successful with a custom from" do
65
64
  mock_successful_topic_change("Nice topic", :from => "Me")
66
65
 
67
- room.topic("Nice topic", :from => "Me").should be_true
66
+ expect(room.topic("Nice topic", :from => "Me")).to be_truthy
68
67
  end
69
68
 
70
69
  it "fails when the room doesn't exist" do
@@ -72,7 +71,7 @@ describe "HipChat (API V1)" do
72
71
  OpenStruct.new(:code => 404)
73
72
  }
74
73
 
75
- lambda { room.topic "" }.should raise_error(HipChat::UnknownRoom)
74
+ expect { room.topic "" }.to raise_error(HipChat::UnknownRoom)
76
75
  end
77
76
 
78
77
  it "fails when we're not allowed to do so" do
@@ -80,7 +79,7 @@ describe "HipChat (API V1)" do
80
79
  OpenStruct.new(:code => 401)
81
80
  }
82
81
 
83
- lambda { room.topic "" }.should raise_error(HipChat::Unauthorized)
82
+ expect { room.topic "" }.to raise_error(HipChat::Unauthorized)
84
83
  end
85
84
 
86
85
  it "fails if we get an unknown response code" do
@@ -88,8 +87,7 @@ describe "HipChat (API V1)" do
88
87
  OpenStruct.new(:code => 403)
89
88
  }
90
89
 
91
- lambda { room.topic "" }.
92
- should raise_error(HipChat::UnknownResponseCode)
90
+ expect { room.topic "" }.to raise_error(HipChat::UnknownResponseCode)
93
91
  end
94
92
  end
95
93
 
@@ -98,25 +96,25 @@ describe "HipChat (API V1)" do
98
96
  it "successfully without custom options" do
99
97
  mock_successful_send 'Dude', 'Hello world'
100
98
 
101
- room.send("Dude", "Hello world").should be_true
99
+ expect(room.send("Dude", "Hello world")).to be_truthy
102
100
  end
103
101
 
104
102
  it "successfully with notifications on as option" do
105
103
  mock_successful_send 'Dude', 'Hello world', :notify => 1
106
104
 
107
- room.send("Dude", "Hello world", :notify => 1).should be_true
105
+ expect(room.send("Dude", "Hello world", :notify => 1)).to be_truthy
108
106
  end
109
107
 
110
108
  it "successfully with custom color" do
111
109
  mock_successful_send 'Dude', 'Hello world', :color => 'red'
112
110
 
113
- room.send("Dude", "Hello world", :color => 'red').should be_true
111
+ expect(room.send("Dude", "Hello world", :color => 'red')).to be_truthy
114
112
  end
115
113
 
116
114
  it "successfully with text message_format" do
117
115
  mock_successful_send 'Dude', 'Hello world', :message_format => 'text'
118
116
 
119
- room.send("Dude", "Hello world", :message_format => 'text').should be_true
117
+ expect(room.send("Dude", "Hello world", :message_format => 'text')).to be_truthy
120
118
  end
121
119
 
122
120
  it "but fails when the room doesn't exist" do
@@ -124,7 +122,7 @@ describe "HipChat (API V1)" do
124
122
  OpenStruct.new(:code => 404)
125
123
  }
126
124
 
127
- lambda { room.send "", "" }.should raise_error(HipChat::UnknownRoom)
125
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownRoom)
128
126
  end
129
127
 
130
128
  it "but fails when we're not allowed to do so" do
@@ -132,11 +130,11 @@ describe "HipChat (API V1)" do
132
130
  OpenStruct.new(:code => 401)
133
131
  }
134
132
 
135
- lambda { room.send "", "" }.should raise_error(HipChat::Unauthorized)
133
+ expect { room.send "", "" }.to raise_error(HipChat::Unauthorized)
136
134
  end
137
135
 
138
136
  it "but fails if the username is more than 15 chars" do
139
- lambda { room.send "a very long username here", "a message" }.should raise_error(HipChat::UsernameTooLong)
137
+ expect { room.send "a very long username here", "a message" }.to raise_error(HipChat::UsernameTooLong)
140
138
  end
141
139
 
142
140
  it "but fails if we get an unknown response code" do
@@ -144,8 +142,7 @@ describe "HipChat (API V1)" do
144
142
  OpenStruct.new(:code => 403)
145
143
  }
146
144
 
147
- lambda { room.send "", "" }.
148
- should raise_error(HipChat::UnknownResponseCode)
145
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownResponseCode)
149
146
  end
150
147
  end
151
148
 
@@ -155,26 +152,25 @@ describe "HipChat (API V1)" do
155
152
  it "successfully with room name" do
156
153
  mock_successful_room_creation("A Room", :owner_user_id => "123456")
157
154
 
158
- subject.create_room("A Room", {:owner_user_id => "123456"}).should be_true
155
+ expect(subject.create_room("A Room", {:owner_user_id => "123456"})).to be_truthy
159
156
  end
160
157
 
161
158
  it "successfully with custom parameters" do
162
159
  mock_successful_room_creation("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access => "1"})
163
160
 
164
- subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true}).should be_true
161
+ expect(subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true})).to be_truthy
165
162
  end
166
163
 
167
164
  it "but fails if we dont pass owner_user_id" do
168
- lambda { subject.create_room("A Room", {:privacy => "private", :guest_access =>true}) }.
169
- should raise_error(HipChat::RoomMissingOwnerUserId)
165
+ expect { subject.create_room("A Room", {:privacy => "private", :guest_access =>true}) }.to raise_error(HipChat::RoomMissingOwnerUserId)
170
166
  end
171
167
  end
172
168
 
173
169
  describe "#send user message" do
174
170
  it "fails because API V1 doesn't support user operations" do
175
171
 
176
- lambda { HipChat::Client.new("blah", :api_version => @api_version).user('12345678') }.
177
- should raise_error(HipChat::InvalidApiVersion)
172
+ expect { HipChat::Client.new("blah", :api_version => @api_version).user('12345678').send('nope') }.
173
+ to raise_error(HipChat::InvalidApiVersion)
178
174
  end
179
175
  end
180
176
  end
@@ -12,20 +12,20 @@ describe "HipChat (API V2)" do
12
12
  it "is successful without custom options" do
13
13
  mock_successful_history()
14
14
 
15
- room.history().should be_true
15
+ expect(room.history()).to be_truthy
16
16
  end
17
17
 
18
18
  it "is successful with custom options" do
19
- mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19')
20
- room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19').should be_true
19
+ mock_successful_history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)
20
+ expect(room.history(:timezone => 'America/Los_Angeles', :date => '2010-11-19', :'max-results' => 10)).to be_truthy
21
21
  end
22
22
 
23
23
  it "is successful from fetched room" do
24
24
  mock_successful_rooms
25
25
  mock_successful_history
26
26
 
27
- subject.rooms.should be_true
28
- subject.rooms.first.history.should be_true
27
+ expect(subject.rooms).to be_truthy
28
+ expect(subject.rooms.first.history).to be_truthy
29
29
  end
30
30
 
31
31
  it "fails when the room doen't exist" do
@@ -33,7 +33,7 @@ describe "HipChat (API V2)" do
33
33
  OpenStruct.new(:code => 404)
34
34
  }
35
35
 
36
- lambda { room.history }.should raise_error(HipChat::UnknownRoom)
36
+ expect { room.history }.to raise_error(HipChat::UnknownRoom)
37
37
  end
38
38
 
39
39
  it "fails when we're not allowed to do so" do
@@ -41,7 +41,7 @@ describe "HipChat (API V2)" do
41
41
  OpenStruct.new(:code => 401)
42
42
  }
43
43
 
44
- lambda { room.history }.should raise_error(HipChat::Unauthorized)
44
+ expect { room.history }.to raise_error(HipChat::Unauthorized)
45
45
  end
46
46
 
47
47
  it "fails if we get an unknown response code" do
@@ -49,8 +49,7 @@ describe "HipChat (API V2)" do
49
49
  OpenStruct.new(:code => 403)
50
50
  }
51
51
 
52
- lambda { room.history }.
53
- should raise_error(HipChat::UnknownResponseCode)
52
+ expect { room.history }.to raise_error(HipChat::UnknownResponseCode)
54
53
  end
55
54
  end
56
55
 
@@ -59,15 +58,15 @@ describe "HipChat (API V2)" do
59
58
  it "is successful without custom options" do
60
59
  mock_successful_statistics
61
60
 
62
- room.statistics().should be_true
61
+ expect(room.statistics()).to be_truthy
63
62
  end
64
63
 
65
64
  it "is successful from fetched room" do
66
65
  mock_successful_rooms
67
66
  mock_successful_statistics
68
67
 
69
- subject.rooms.should be_true
70
- subject.rooms.first.statistics.should be_true
68
+ expect(subject.rooms).to be_truthy
69
+ expect(subject.rooms.first.statistics).to be_truthy
71
70
  end
72
71
 
73
72
  it "fails when the room doen't exist" do
@@ -75,7 +74,7 @@ describe "HipChat (API V2)" do
75
74
  OpenStruct.new(:code => 404)
76
75
  }
77
76
 
78
- lambda { room.statistics }.should raise_error(HipChat::UnknownRoom)
77
+ expect { room.statistics }.to raise_error(HipChat::UnknownRoom)
79
78
  end
80
79
 
81
80
  it "fails when we're not allowed to do so" do
@@ -83,7 +82,7 @@ describe "HipChat (API V2)" do
83
82
  OpenStruct.new(:code => 401)
84
83
  }
85
84
 
86
- lambda { room.statistics }.should raise_error(HipChat::Unauthorized)
85
+ expect { room.statistics }.to raise_error(HipChat::Unauthorized)
87
86
  end
88
87
 
89
88
  it "fails if we get an unknown response code" do
@@ -91,9 +90,8 @@ describe "HipChat (API V2)" do
91
90
  OpenStruct.new(:code => 403)
92
91
  }
93
92
 
94
- lambda { room.statistics }.
95
- should raise_error(HipChat::UnknownResponseCode)
96
- end
93
+ expect { room.statistics }.to raise_error(HipChat::UnknownResponseCode)
94
+ end
97
95
  end
98
96
 
99
97
  describe "#topic" do
@@ -101,13 +99,13 @@ describe "HipChat (API V2)" do
101
99
  it "is successful without custom options" do
102
100
  mock_successful_topic_change("Nice topic")
103
101
 
104
- room.topic("Nice topic").should be_true
102
+ expect(room.topic("Nice topic")).to be_truthy
105
103
  end
106
104
 
107
105
  it "is successful with a custom from" do
108
106
  mock_successful_topic_change("Nice topic", :from => "Me")
109
107
 
110
- room.topic("Nice topic", :from => "Me").should be_true
108
+ expect(room.topic("Nice topic", :from => "Me")).to be_truthy
111
109
  end
112
110
 
113
111
  it "fails when the room doesn't exist" do
@@ -115,7 +113,7 @@ describe "HipChat (API V2)" do
115
113
  OpenStruct.new(:code => 404)
116
114
  }
117
115
 
118
- lambda { room.topic "" }.should raise_error(HipChat::UnknownRoom)
116
+ expect { room.topic "" }.to raise_error(HipChat::UnknownRoom)
119
117
  end
120
118
 
121
119
  it "fails when we're not allowed to do so" do
@@ -123,7 +121,7 @@ describe "HipChat (API V2)" do
123
121
  OpenStruct.new(:code => 401)
124
122
  }
125
123
 
126
- lambda { room.topic "" }.should raise_error(HipChat::Unauthorized)
124
+ expect { room.topic "" }.to raise_error(HipChat::Unauthorized)
127
125
  end
128
126
 
129
127
  it "fails if we get an unknown response code" do
@@ -131,8 +129,7 @@ describe "HipChat (API V2)" do
131
129
  OpenStruct.new(:code => 403)
132
130
  }
133
131
 
134
- lambda { room.topic "" }.
135
- should raise_error(HipChat::UnknownResponseCode)
132
+ expect { room.topic "" }.to raise_error(HipChat::UnknownResponseCode)
136
133
  end
137
134
  end
138
135
 
@@ -141,25 +138,25 @@ describe "HipChat (API V2)" do
141
138
  it "successfully without custom options" do
142
139
  mock_successful_send 'Dude', 'Hello world'
143
140
 
144
- room.send("Dude", "Hello world").should be_true
141
+ expect(room.send("Dude", "Hello world")).to be_truthy
145
142
  end
146
143
 
147
144
  it "successfully with notifications on as option" do
148
145
  mock_successful_send 'Dude', 'Hello world', :notify => true
149
146
 
150
- room.send("Dude", "Hello world", :notify => true).should be_true
147
+ expect(room.send("Dude", "Hello world", :notify => true)).to be_truthy
151
148
  end
152
149
 
153
150
  it "successfully with custom color" do
154
151
  mock_successful_send 'Dude', 'Hello world', :color => 'red'
155
152
 
156
- room.send("Dude", "Hello world", :color => 'red').should be_true
153
+ expect(room.send("Dude", "Hello world", :color => 'red')).to be_truthy
157
154
  end
158
155
 
159
156
  it "successfully with text message_format" do
160
157
  mock_successful_send 'Dude', 'Hello world', :message_format => 'text'
161
158
 
162
- room.send("Dude", "Hello world", :message_format => 'text').should be_true
159
+ expect(room.send("Dude", "Hello world", :message_format => 'text')).to be_truthy
163
160
  end
164
161
 
165
162
  it "but fails when the room doesn't exist" do
@@ -167,7 +164,7 @@ describe "HipChat (API V2)" do
167
164
  OpenStruct.new(:code => 404)
168
165
  }
169
166
 
170
- lambda { room.send "", "" }.should raise_error(HipChat::UnknownRoom)
167
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownRoom)
171
168
  end
172
169
 
173
170
  it "but fails when we're not allowed to do so" do
@@ -175,11 +172,11 @@ describe "HipChat (API V2)" do
175
172
  OpenStruct.new(:code => 401)
176
173
  }
177
174
 
178
- lambda { room.send "", "" }.should raise_error(HipChat::Unauthorized)
175
+ expect { room.send "", "" }.to raise_error(HipChat::Unauthorized)
179
176
  end
180
177
 
181
178
  it "but fails if the username is more than 15 chars" do
182
- lambda { room.send "a very long username here", "a message" }.should raise_error(HipChat::UsernameTooLong)
179
+ expect { room.send "a very long username here", "a message" }.to raise_error(HipChat::UsernameTooLong)
183
180
  end
184
181
 
185
182
  it "but fails if we get an unknown response code" do
@@ -187,7 +184,54 @@ describe "HipChat (API V2)" do
187
184
  OpenStruct.new(:code => 403)
188
185
  }
189
186
 
190
- lambda { room.send "", "" }.
187
+ expect { room.send "", "" }.to raise_error(HipChat::UnknownResponseCode)
188
+ end
189
+ end
190
+
191
+ describe "#send_file" do
192
+ let(:file) do
193
+ Tempfile.new('foo').tap do |f|
194
+ f.write("the content")
195
+ f.rewind
196
+ end
197
+ end
198
+
199
+ after { file.unlink }
200
+
201
+ include_context "HipChatV2"
202
+
203
+ it "successfully" do
204
+ mock_successful_file_send 'Dude', 'Hello world', file
205
+
206
+ room.send_file("Dude", "Hello world", file).should be_truthy
207
+ end
208
+
209
+ it "but fails when the room doesn't exist" do
210
+ mock(HipChat::Room).post(anything, anything) {
211
+ OpenStruct.new(:code => 404)
212
+ }
213
+
214
+ lambda { room.send_file "", "", file }.should raise_error(HipChat::UnknownRoom)
215
+ end
216
+
217
+ it "but fails when we're not allowed to do so" do
218
+ mock(HipChat::Room).post(anything, anything) {
219
+ OpenStruct.new(:code => 401)
220
+ }
221
+
222
+ lambda { room.send_file "", "", file }.should raise_error(HipChat::Unauthorized)
223
+ end
224
+
225
+ it "but fails if the username is more than 15 chars" do
226
+ lambda { room.send_file "a very long username here", "a message", file }.should raise_error(HipChat::UsernameTooLong)
227
+ end
228
+
229
+ it "but fails if we get an unknown response code" do
230
+ mock(HipChat::Room).post(anything, anything) {
231
+ OpenStruct.new(:code => 403)
232
+ }
233
+
234
+ lambda { room.send_file "", "", file }.
191
235
  should raise_error(HipChat::UnknownResponseCode)
192
236
  end
193
237
  end
@@ -198,18 +242,18 @@ describe "HipChat (API V2)" do
198
242
  it "successfully with room name" do
199
243
  mock_successful_room_creation("A Room")
200
244
 
201
- subject.create_room("A Room").should be_true
245
+ expect(subject.create_room("A Room")).to be_truthy
202
246
  end
203
247
 
204
248
  it "successfully with custom parameters" do
205
249
  mock_successful_room_creation("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access => true})
206
250
 
207
- subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true}).should be_true
251
+ expect(subject.create_room("A Room", {:owner_user_id => "123456", :privacy => "private", :guest_access =>true})).to be_truthy
208
252
  end
209
253
 
210
254
  it "but fail is name is longer then 50 char" do
211
- lambda { subject.create_room("A Room that is too long that I should fail right now") }.
212
- should raise_error(HipChat::RoomNameTooLong)
255
+ expect { subject.create_room("A Room that is too long that I should fail right now") }.
256
+ to raise_error(HipChat::RoomNameTooLong)
213
257
  end
214
258
  end
215
259
 
@@ -219,7 +263,7 @@ describe "HipChat (API V2)" do
219
263
  it "successfully" do
220
264
  mock_successful_get_room("Hipchat")
221
265
 
222
- room.get_room.should be_true
266
+ expect(room.get_room).to be_truthy
223
267
  end
224
268
 
225
269
  end
@@ -236,9 +280,9 @@ describe "HipChat (API V2)" do
236
280
  "owner" => { "id" => "12345" }
237
281
  }
238
282
  }
239
- it "successfully" do
283
+ it "successfully" do
240
284
  mock_successful_update_room("Hipchat", room_info)
241
- room.update_room(room_info).should be_true
285
+ expect(room.update_room(room_info)).to be_truthy
242
286
  end
243
287
  end
244
288
 
@@ -248,13 +292,13 @@ describe "HipChat (API V2)" do
248
292
  it "successfully with user_id" do
249
293
  mock_successful_invite()
250
294
 
251
- room.invite("1234").should be_true
295
+ expect(room.invite("1234")).to be_truthy
252
296
  end
253
297
 
254
298
  it "successfully with custom parameters" do
255
299
  mock_successful_invite({:user_id => "321", :reason => "A great reason"})
256
300
 
257
- room.invite("321", "A great reason").should be_true
301
+ expect(room.invite("321", "A great reason")).to be_truthy
258
302
  end
259
303
  end
260
304
 
@@ -263,7 +307,53 @@ describe "HipChat (API V2)" do
263
307
  it "successfully with a standard message" do
264
308
  mock_successful_user_send 'Equal bytes for everyone'
265
309
 
266
- user.send('Equal bytes for everyone').should be_true
310
+ expect(user.send('Equal bytes for everyone')).to be_truthy
311
+ end
312
+
313
+ it "but fails when the user doesn't exist" do
314
+ mock(HipChat::User).post(anything, anything) {
315
+ OpenStruct.new(:code => 404)
316
+ }
317
+
318
+ expect { user.send "" }.to raise_error(HipChat::UnknownUser)
319
+ end
320
+
321
+ it "but fails when we're not allowed to do so" do
322
+ mock(HipChat::User).post(anything, anything) {
323
+ OpenStruct.new(:code => 401)
324
+ }
325
+
326
+ expect { user.send "" }.to raise_error(HipChat::Unauthorized)
327
+ end
328
+ end
329
+
330
+ describe '#get_user_history' do
331
+ include_context 'HipChatV2'
332
+
333
+ it 'successfully returns history' do
334
+ mock_successful_user_history
335
+ user.history.should be_truthy
336
+ end
337
+
338
+ it 'has allowed params' do
339
+ expect(user.instance_variable_get(:@api).history_config[:allowed_params]).to eq([:'max-results', :timezone, :'not-before'])
340
+ end
341
+ end
342
+
343
+ describe "#send_file user" do
344
+ include_context "HipChatV2"
345
+
346
+ let(:file) do
347
+ Tempfile.new('foo').tap do |f|
348
+ f.write("the content")
349
+ f.rewind
350
+ end
351
+ end
352
+
353
+ it "successfully with a standard file" do
354
+ mock_successful_user_send_file 'Equal bytes for everyone', file
355
+
356
+ user.send_file('Equal bytes for everyone', file).should be_truthy
267
357
  end
268
358
 
269
359
  it "but fails when the user doesn't exist" do
@@ -271,7 +361,7 @@ describe "HipChat (API V2)" do
271
361
  OpenStruct.new(:code => 404)
272
362
  }
273
363
 
274
- lambda { user.send "" }.should raise_error(HipChat::UnknownUser)
364
+ lambda { user.send_file "", file }.should raise_error(HipChat::UnknownUser)
275
365
  end
276
366
 
277
367
  it "but fails when we're not allowed to do so" do
@@ -279,7 +369,7 @@ describe "HipChat (API V2)" do
279
369
  OpenStruct.new(:code => 401)
280
370
  }
281
371
 
282
- lambda { user.send "" }.should raise_error(HipChat::Unauthorized)
372
+ lambda { user.send_file "", file }.should raise_error(HipChat::Unauthorized)
283
373
  end
284
374
  end
285
375
  end