tinder 1.9.4 → 1.10.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.
- checksums.yaml +4 -4
- data/.rspec +0 -1
- data/.travis.yml +2 -5
- data/CHANGELOG.txt +4 -0
- data/README.markdown +17 -15
- data/lib/tinder/connection.rb +5 -0
- data/lib/tinder/room.rb +11 -5
- data/lib/tinder/version.rb +1 -1
- data/spec/tinder/campfire_spec.rb +16 -16
- data/spec/tinder/connection_spec.rb +10 -10
- data/spec/tinder/room_spec.rb +84 -50
- data/tinder.gemspec +2 -2
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50c72ad3e132534c8ea6bd580bdf08f8ae887de9
|
4
|
+
data.tar.gz: 44a5904f7f5e3a7b4c696252001bbfe3a496049d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ef6c40d79948f38dc1c631fa0473530501c228a86266891595ae81cb70d58f95f2c2899bff1d27ad6f3f96901d65530b2138d6c5a9b7d9c2cb2e501d545a19f
|
7
|
+
data.tar.gz: defdff16dd87556202c1494c4613fac0357b369b5a51de573fd4d638c96791c464ee9b2d69a2f62249580fb5bcf5daf11a0fb3ea1b58e664166281e62ddec507
|
data/.rspec
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.txt
CHANGED
data/README.markdown
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Tinder - get the Campfire started
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/tinder)
|
4
|
+
[](https://travis-ci.org/collectiveidea/tinder)
|
5
|
+
[](https://codeclimate.com/github/collectiveidea/tinder)
|
6
|
+
[](https://gemnasium.com/collectiveidea/tinder)
|
7
|
+
|
3
8
|
Tinder is a library for interfacing with Campfire, the chat application from 37Signals, allowing you to programmatically manage and speak/listen in chat rooms. As of December 2009, thanks to initial work from Joshua Peek at 37signals, it now makes use of the official Campfire API (described at: http://developer.37signals.com/campfire/).
|
4
9
|
|
5
10
|
## Usage
|
@@ -24,22 +29,19 @@ See the RDoc for more details.
|
|
24
29
|
|
25
30
|
gem install tinder
|
26
31
|
|
27
|
-
##
|
28
|
-
|
29
|
-
[](http://travis-ci.org/collectiveidea/tinder) [](https://gemnasium.com/collectiveidea/tinder)
|
30
|
-
|
31
|
-
## How to contribute
|
32
|
+
## Contributions
|
32
33
|
|
33
|
-
|
34
|
+
Tinder is open source and contributions from the community are encouraged! No contribution is too small. Please consider:
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
* adding an awesome feature
|
37
|
+
* fixing a terrible bug
|
38
|
+
* updating documentation
|
39
|
+
* fixing a not-so-bad bug
|
40
|
+
* fixing typos
|
38
41
|
|
39
|
-
|
42
|
+
For the best chance of having your changes merged, please:
|
40
43
|
|
41
|
-
1.
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
4. Send a pull request.
|
44
|
+
1. Ask us! We'd love to hear what you're up to.
|
45
|
+
2. Fork the project.
|
46
|
+
3. Commit your changes and tests (if applicable (they're applicable)).
|
47
|
+
4. Submit a pull request with a thorough explanation and at least one animated GIF.
|
data/lib/tinder/connection.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require 'faraday'
|
3
|
+
require 'faraday/request/multipart'
|
3
4
|
require 'faraday/response/raise_on_authentication_failure'
|
4
5
|
require 'faraday/response/remove_whitespace'
|
5
6
|
require 'faraday_middleware'
|
6
7
|
require 'json'
|
7
8
|
require 'uri'
|
8
9
|
|
10
|
+
class Faraday::RequestOptions
|
11
|
+
attr_accessor :preserve_raw
|
12
|
+
end
|
13
|
+
|
9
14
|
module Tinder
|
10
15
|
class Connection
|
11
16
|
HOST = 'campfirenow.com'
|
data/lib/tinder/room.rb
CHANGED
@@ -204,13 +204,18 @@ module Tinder
|
|
204
204
|
@stream = nil
|
205
205
|
end
|
206
206
|
|
207
|
-
# Get the transcript for the given date (
|
208
|
-
#
|
207
|
+
# Get the transcript for the given date (Returns a hash in the same format as #listen)
|
208
|
+
#
|
209
|
+
# room.transcript(Time.now)
|
210
|
+
# #=> [{:message=>"foobar!",
|
211
|
+
# :user_id=>"99999",
|
212
|
+
# :person=>"Brandon",
|
213
|
+
# :id=>"18659245",
|
214
|
+
# :timestamp=>=>Tue May 05 07:15:00 -0700 2009}]
|
215
|
+
#
|
216
|
+
# The timestamp slot will typically have a granularity of five minutes.
|
209
217
|
#
|
210
218
|
def transcript(transcript_date = Date.today)
|
211
|
-
unless transcript_date.is_a?(Date)
|
212
|
-
transcript_date = transcript_date.to_date
|
213
|
-
end
|
214
219
|
url = "/room/#{@id}/transcript/#{transcript_date.strftime('%Y/%m/%d')}.json"
|
215
220
|
connection.get(url)['messages'].map do |message|
|
216
221
|
parse_message(message)
|
@@ -303,5 +308,6 @@ module Tinder
|
|
303
308
|
def connection
|
304
309
|
@connection
|
305
310
|
end
|
311
|
+
|
306
312
|
end
|
307
313
|
end
|
data/lib/tinder/version.rb
CHANGED
@@ -14,14 +14,14 @@ describe Tinder::Campfire do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should return rooms" do
|
17
|
-
@campfire.rooms.size.
|
18
|
-
@campfire.rooms.first.
|
17
|
+
expect(@campfire.rooms.size).to eq(2)
|
18
|
+
expect(@campfire.rooms.first).to be_kind_of(Tinder::Room)
|
19
19
|
end
|
20
20
|
|
21
21
|
it "should set the room name and id" do
|
22
22
|
room = @campfire.rooms.first
|
23
|
-
room.name.
|
24
|
-
room.id.
|
23
|
+
expect(room.name).to eq('Room 1')
|
24
|
+
expect(room.id).to eq(80749)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -33,14 +33,14 @@ describe Tinder::Campfire do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should return rooms" do
|
36
|
-
@campfire.presence.size.
|
37
|
-
@campfire.presence.first.
|
36
|
+
expect(@campfire.presence.size).to eq(3)
|
37
|
+
expect(@campfire.presence.first).to be_kind_of(Tinder::Room)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should set the room name and id" do
|
41
41
|
room = @campfire.presence.last
|
42
|
-
room.name.
|
43
|
-
room.id.
|
42
|
+
expect(room.name).to eq('Room 3')
|
43
|
+
expect(room.id).to eq(80754)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -53,12 +53,12 @@ describe Tinder::Campfire do
|
|
53
53
|
|
54
54
|
it "should return a Tinder::Room object when a match is found" do
|
55
55
|
room = @campfire.find_room_by_id 80749
|
56
|
-
room.
|
56
|
+
expect(room).to be_kind_of(Tinder::Room)
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should return nil when no match is found" do
|
60
60
|
room = @campfire.find_room_by_id 123
|
61
|
-
room.
|
61
|
+
expect(room).to eq(nil)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
@@ -71,12 +71,12 @@ describe Tinder::Campfire do
|
|
71
71
|
|
72
72
|
it "should return a Tinder::Room object when a match is found" do
|
73
73
|
room = @campfire.find_room_by_name 'Room 1'
|
74
|
-
room.
|
74
|
+
expect(room).to be_kind_of(Tinder::Room)
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should return nil when no match is found" do
|
78
78
|
room = @campfire.find_room_by_name 'asdf'
|
79
|
-
room.
|
79
|
+
expect(room).to eq(nil)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
@@ -92,9 +92,9 @@ describe Tinder::Campfire do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should return a sorted list of users in all rooms" do
|
95
|
-
@campfire.users.length.
|
96
|
-
@campfire.users.first[:name].
|
97
|
-
@campfire.users.last[:name].
|
95
|
+
expect(@campfire.users.length).to eq(2)
|
96
|
+
expect(@campfire.users.first[:name]).to eq("Jane Doe")
|
97
|
+
expect(@campfire.users.last[:name]).to eq("John Doe")
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -106,7 +106,7 @@ describe Tinder::Campfire do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
it "should return the current user's information" do
|
109
|
-
@campfire.me["name"].
|
109
|
+
expect(@campfire.me["name"]).to eq("John Doe")
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
@@ -9,7 +9,7 @@ describe Tinder::Connection do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
connection = Tinder::Connection.new('test', :token => 'foo')
|
12
|
-
|
12
|
+
expect { connection.get('/rooms.json') }.to raise_error(Tinder::AuthenticationFailed)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should raise an exception when an invalid subdomain is specified" do
|
@@ -18,7 +18,7 @@ describe Tinder::Connection do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
connection = Tinder::Connection.new('test', :token => 'foo')
|
21
|
-
|
21
|
+
expect { connection.get('/rooms.json') }.to raise_error(Tinder::AuthenticationFailed)
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should lookup token when username/password provided" do
|
@@ -27,7 +27,7 @@ describe Tinder::Connection do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass')
|
30
|
-
connection.token.
|
30
|
+
expect(connection.token).to eq("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should use basic auth for credentials" do
|
@@ -35,7 +35,7 @@ describe Tinder::Connection do
|
|
35
35
|
stub.get("/rooms.json") {[200, {}, fixture('rooms.json')]}
|
36
36
|
end
|
37
37
|
connection = Tinder::Connection.new('test', :token => 'mytoken')
|
38
|
-
|
38
|
+
expect { connection.get('/rooms.json') }.not_to raise_error
|
39
39
|
end
|
40
40
|
|
41
41
|
end
|
@@ -51,17 +51,17 @@ describe Tinder::Connection do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should authenticate" do
|
54
|
-
|
54
|
+
expect { connection.get('/rooms.json') }.to_not raise_error
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should set the oauth_token" do
|
58
58
|
connection.get('/rooms.json')
|
59
|
-
connection.options[:oauth_token].
|
59
|
+
expect(connection.options[:oauth_token]).to eq(oauth_token)
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should set an Authorization header" do
|
63
63
|
connection.get('/rooms.json')
|
64
|
-
connection.connection.headers["Authorization"].
|
64
|
+
expect(connection.connection.headers["Authorization"]).to eq("Bearer #{oauth_token}")
|
65
65
|
end
|
66
66
|
|
67
67
|
end
|
@@ -73,7 +73,7 @@ describe Tinder::Connection do
|
|
73
73
|
end
|
74
74
|
|
75
75
|
connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass')
|
76
|
-
connection.ssl
|
76
|
+
expect(connection.ssl?).to eq(true)
|
77
77
|
end
|
78
78
|
|
79
79
|
it "should should allow peer verification to be turned off" do
|
@@ -82,7 +82,7 @@ describe Tinder::Connection do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
connection = Tinder::Connection.new('test', :username => 'user', :password => 'pass', :ssl_verify => false)
|
85
|
-
connection.connection.ssl
|
85
|
+
expect(connection.connection.ssl.verify?).to eq(false)
|
86
86
|
end
|
87
87
|
|
88
88
|
it "should allow passing any ssl_options to Faraday" do
|
@@ -98,7 +98,7 @@ describe Tinder::Connection do
|
|
98
98
|
:ca_file => "/etc/ssl/custom"
|
99
99
|
}
|
100
100
|
)
|
101
|
-
connection.connection.ssl.
|
101
|
+
expect(connection.connection.ssl.to_hash).to eq(:verify => false, :ca_path => "/usr/lib/ssl/certs", :ca_file => "/etc/ssl/custom")
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
data/spec/tinder/room_spec.rb
CHANGED
@@ -3,6 +3,13 @@ require 'spec_helper'
|
|
3
3
|
require 'date'
|
4
4
|
|
5
5
|
describe Tinder::Room do
|
6
|
+
|
7
|
+
def mock_listen_callbacks(stream)
|
8
|
+
expect(stream).to receive(:each_item).with(any_args).and_return(true)
|
9
|
+
expect(stream).to receive(:on_error)
|
10
|
+
expect(stream).to receive(:on_max_reconnects)
|
11
|
+
end
|
12
|
+
|
6
13
|
before do
|
7
14
|
@connection = Tinder::Connection.new('test', :token => 'mytoken')
|
8
15
|
|
@@ -15,11 +22,9 @@ describe Tinder::Room do
|
|
15
22
|
# Get EventMachine out of the way. We could be using em-spec, but seems like overkill
|
16
23
|
require 'twitter/json_stream'
|
17
24
|
module EventMachine; def self.run; yield end end
|
18
|
-
EventMachine.
|
25
|
+
expect(EventMachine).to receive(:reactor_running?).at_most(:once).and_return(true)
|
26
|
+
|
19
27
|
@stream = double(Twitter::JSONStream)
|
20
|
-
@stream.stub(:each_item)
|
21
|
-
@stream.stub(:on_error)
|
22
|
-
@stream.stub(:on_max_reconnects)
|
23
28
|
end
|
24
29
|
|
25
30
|
describe "join" do
|
@@ -46,7 +51,7 @@ describe Tinder::Room do
|
|
46
51
|
end
|
47
52
|
|
48
53
|
it "stops listening" do
|
49
|
-
@room.
|
54
|
+
expect(@room).to receive(:stop_listening)
|
50
55
|
@room.leave
|
51
56
|
end
|
52
57
|
end
|
@@ -71,14 +76,14 @@ describe Tinder::Room do
|
|
71
76
|
end
|
72
77
|
|
73
78
|
it "should GET the search endpoint with the search term and filter by room" do
|
74
|
-
@room.
|
75
|
-
@room.
|
79
|
+
expect(@room).to receive(:id).twice.and_return(490096)
|
80
|
+
expect(@room).to receive(:parse_message).exactly(2).times
|
76
81
|
@room.search("foo")
|
77
82
|
end
|
78
83
|
|
79
84
|
it "should return empty array if no messages in room" do
|
80
|
-
@room.
|
81
|
-
@room.search("foo").
|
85
|
+
expect(@room).not_to receive(:parse_message)
|
86
|
+
expect(@room.search("foo")).to be_empty
|
82
87
|
end
|
83
88
|
end
|
84
89
|
|
@@ -87,7 +92,7 @@ describe Tinder::Room do
|
|
87
92
|
stub_connection(@connection) do |stub|
|
88
93
|
stub.get('/room/80749/transcript/2012/10/15.json') {[200, {}, fixture("rooms/recent.json")]}
|
89
94
|
end
|
90
|
-
@room.
|
95
|
+
expect(@room).to receive(:parse_message).exactly(2).times
|
91
96
|
@room.transcript(Date.parse('2012-10-15'))
|
92
97
|
end
|
93
98
|
|
@@ -95,10 +100,35 @@ describe Tinder::Room do
|
|
95
100
|
stub_connection(@connection) do |stub|
|
96
101
|
stub.get('/room/80749/transcript/1981/03/21.json') {[200, {}, fixture("rooms/recent.json")]}
|
97
102
|
end
|
98
|
-
Date.
|
99
|
-
@room.
|
103
|
+
expect(Date).to receive(:today).and_return(Date.parse('1981-03-21'))
|
104
|
+
expect(@room).to receive(:parse_message).exactly(2).times
|
100
105
|
@room.transcript
|
101
106
|
end
|
107
|
+
|
108
|
+
it "should return an array of messages" do
|
109
|
+
stub_connection(@connection) do |stub|
|
110
|
+
stub.get('/room/80749/transcript/2012/10/15.json') {[200, {}, fixture('rooms/recent.json')]}
|
111
|
+
stub.get('/users/1158839.json') {[200, {}, fixture('users/me.json')]}
|
112
|
+
stub.get('/users/1158837.json') {[200, {}, fixture('users/me.json')]}
|
113
|
+
end
|
114
|
+
|
115
|
+
expect(@room.transcript(Date.parse('2012-10-15'))).to be_a(Array)
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should have messages with attributes" do
|
119
|
+
stub_connection(@connection) do |stub|
|
120
|
+
stub.get('/room/80749/transcript/2012/10/15.json') {[200, {}, fixture("rooms/recent.json")]}
|
121
|
+
stub.get('/users/1158839.json') {[200, {}, fixture('users/me.json')]}
|
122
|
+
stub.get('/users/1158837.json') {[200, {}, fixture('users/me.json')]}
|
123
|
+
end
|
124
|
+
|
125
|
+
message = @room.transcript(Date.parse('2012-10-15')).first
|
126
|
+
|
127
|
+
expect(message[:id]).to be_a(Integer)
|
128
|
+
expect(message[:user][:id]).to be_a(Integer)
|
129
|
+
expect(message[:body]).to be_a(String)
|
130
|
+
expect(message[:created_at]).to be_a(Time)
|
131
|
+
end
|
102
132
|
end
|
103
133
|
|
104
134
|
describe "unlock" do
|
@@ -115,31 +145,32 @@ describe Tinder::Room do
|
|
115
145
|
|
116
146
|
describe "guest_url" do
|
117
147
|
it "should use guest_invite_code if active" do
|
118
|
-
@room.
|
119
|
-
@room.
|
148
|
+
expect(@room).to receive(:guest_access_enabled?).and_return(true)
|
149
|
+
expect(@room).to receive(:guest_invite_code).and_return('123')
|
150
|
+
expect(@room.guest_url).to eq("https://test.campfirenow.com/123")
|
120
151
|
end
|
121
152
|
|
122
153
|
it "should return nil when guest access is not enabled" do
|
123
|
-
@room.
|
124
|
-
@room.guest_url.
|
154
|
+
expect(@room).to receive(:guest_access_enabled?).and_return(false)
|
155
|
+
expect(@room.guest_url).to be_nil
|
125
156
|
end
|
126
157
|
end
|
127
158
|
|
128
159
|
it "should set guest_invite_code" do
|
129
|
-
@room.guest_invite_code.
|
160
|
+
expect(@room.guest_invite_code).to eq("90cf7")
|
130
161
|
end
|
131
162
|
|
132
163
|
it "should set guest_access_enabled?" do
|
133
|
-
@room.guest_access_enabled
|
164
|
+
expect(@room.guest_access_enabled?).to eq(true)
|
134
165
|
end
|
135
166
|
|
136
167
|
describe "topic" do
|
137
168
|
it "should get the current topic" do
|
138
|
-
@room.topic.
|
169
|
+
expect(@room.topic).to eq("Testing")
|
139
170
|
end
|
140
171
|
|
141
172
|
it "should get the current topic even if it's changed" do
|
142
|
-
@room.topic.
|
173
|
+
expect(@room.topic).to eq("Testing")
|
143
174
|
|
144
175
|
# reinitialize a new connection since we can't modify the
|
145
176
|
# faraday stack after a request has already been submitted
|
@@ -150,7 +181,7 @@ describe Tinder::Room do
|
|
150
181
|
stub.get('/room/80749.json') {[200, {}, fixture('rooms/room80751.json')]}
|
151
182
|
end
|
152
183
|
|
153
|
-
@room.topic.
|
184
|
+
expect(@room.topic).to eq("Testing 2")
|
154
185
|
|
155
186
|
end
|
156
187
|
end
|
@@ -174,7 +205,7 @@ describe Tinder::Room do
|
|
174
205
|
end
|
175
206
|
|
176
207
|
it "should get from the streaming url" do
|
177
|
-
Twitter::JSONStream.
|
208
|
+
expect(Twitter::JSONStream).to receive(:connect).with(
|
178
209
|
{
|
179
210
|
:host=>"streaming.campfirenow.com",
|
180
211
|
:path=>"/room/80749/live.json",
|
@@ -183,21 +214,22 @@ describe Tinder::Room do
|
|
183
214
|
:ssl=>true
|
184
215
|
}
|
185
216
|
).and_return(@stream)
|
186
|
-
|
217
|
+
mock_listen_callbacks(@stream)
|
187
218
|
@room.listen { }
|
188
219
|
end
|
189
220
|
|
190
221
|
it "should raise an exception if no block is given" do
|
191
|
-
|
222
|
+
expect {
|
192
223
|
@room.listen
|
193
|
-
}.
|
224
|
+
}.to raise_error(ArgumentError, "no block provided")
|
194
225
|
end
|
195
226
|
|
196
227
|
it "marks the room as listening" do
|
197
|
-
Twitter::JSONStream.
|
198
|
-
|
228
|
+
expect(Twitter::JSONStream).to receive(:connect).and_return(@stream)
|
229
|
+
mock_listen_callbacks(@stream)
|
230
|
+
expect {
|
199
231
|
@room.listen { }
|
200
|
-
}.
|
232
|
+
}.to change(@room, :listening?).from(false).to(true)
|
201
233
|
end
|
202
234
|
end
|
203
235
|
|
@@ -207,24 +239,26 @@ describe Tinder::Room do
|
|
207
239
|
stub.post('/room/80749/join.json') {[200, {}, ""]}
|
208
240
|
end
|
209
241
|
|
210
|
-
Twitter::JSONStream.
|
211
|
-
@stream.
|
242
|
+
expect(Twitter::JSONStream).to receive(:connect).and_return(@stream)
|
243
|
+
expect(@stream).to receive(:stop)
|
212
244
|
end
|
213
245
|
|
214
246
|
it "changes a listening room to a non-listening room" do
|
247
|
+
mock_listen_callbacks(@stream)
|
215
248
|
@room.listen { }
|
216
|
-
|
249
|
+
expect {
|
217
250
|
@room.stop_listening
|
218
|
-
}.
|
251
|
+
}.to change(@room, :listening?).from(true).to(false)
|
219
252
|
end
|
220
253
|
|
221
254
|
it "tells the json stream to stop" do
|
255
|
+
mock_listen_callbacks(@stream)
|
222
256
|
@room.listen { }
|
223
|
-
@stream.should_receive(:stop)
|
224
257
|
@room.stop_listening
|
225
258
|
end
|
226
259
|
|
227
260
|
it "does nothing if the room is not listening" do
|
261
|
+
mock_listen_callbacks(@stream)
|
228
262
|
@room.listen { }
|
229
263
|
@room.stop_listening
|
230
264
|
@room.stop_listening
|
@@ -241,7 +275,7 @@ describe Tinder::Room do
|
|
241
275
|
end
|
242
276
|
|
243
277
|
it "should get a list of parsed recent messages" do
|
244
|
-
@room.
|
278
|
+
expect(@room).to receive(:parse_message).exactly(2).times
|
245
279
|
messages = @room.recent
|
246
280
|
end
|
247
281
|
end
|
@@ -260,16 +294,16 @@ describe Tinder::Room do
|
|
260
294
|
:body => 'An aunt is worth two nieces',
|
261
295
|
:created_at => Time.parse('2012/02/14 16:21:00 +0000')
|
262
296
|
}
|
263
|
-
@room.
|
297
|
+
expect(@room).to receive(:user).with(123).and_return({ :name => 'Dr. Noodles' })
|
264
298
|
|
265
299
|
actual = @room.parse_message(unparsed_message)
|
266
|
-
actual.
|
300
|
+
expect(actual).to eq(expected)
|
267
301
|
end
|
268
302
|
end
|
269
303
|
|
270
304
|
describe "user" do
|
271
305
|
before do
|
272
|
-
@room.
|
306
|
+
expect(@room).to receive(:current_users).and_return([
|
273
307
|
{ :id => 1, :name => 'The Amazing Crayon Executive'},
|
274
308
|
{ :id => 2, :name => 'Lord Pants'},
|
275
309
|
])
|
@@ -277,21 +311,21 @@ describe Tinder::Room do
|
|
277
311
|
end
|
278
312
|
|
279
313
|
it "looks up user if not already in room's cache" do
|
280
|
-
@room.
|
314
|
+
expect(@room).to receive(:fetch_user).with(3).
|
281
315
|
and_return(@not_current_user)
|
282
|
-
@room.user(3).
|
316
|
+
expect(@room.user(3)).to eq(@not_current_user)
|
283
317
|
end
|
284
318
|
|
285
319
|
it "pulls user from room's cache if user in participant list" do
|
286
|
-
@room.
|
320
|
+
expect(@room).not_to receive(:fetch_user)
|
287
321
|
user = @room.user(1)
|
288
322
|
end
|
289
323
|
|
290
324
|
it "adds user to cache after first lookup" do
|
291
|
-
@room.
|
325
|
+
expect(@room).to receive(:fetch_user).with(3).at_most(:once).
|
292
326
|
and_return(@not_current_user)
|
293
|
-
@room.user(3).
|
294
|
-
@room.user(3).
|
327
|
+
expect(@room.user(3)).to eq(@not_current_user)
|
328
|
+
expect(@room.user(3)).to eq(@not_current_user)
|
295
329
|
end
|
296
330
|
end
|
297
331
|
|
@@ -303,28 +337,28 @@ describe Tinder::Room do
|
|
303
337
|
end
|
304
338
|
|
305
339
|
it "requests via GET and returns the requested user's information" do
|
306
|
-
@room.fetch_user(5)['name'].
|
340
|
+
expect(@room.fetch_user(5)['name']).to eq('John Doe')
|
307
341
|
end
|
308
342
|
end
|
309
343
|
|
310
344
|
describe "current_users" do
|
311
345
|
it "returns list of currently participating users" do
|
312
346
|
current_users = @room.current_users
|
313
|
-
current_users.size.
|
314
|
-
current_users.first[:name].
|
347
|
+
expect(current_users.size).to eq(1)
|
348
|
+
expect(current_users.first[:name]).to eq('Brandon Keepers')
|
315
349
|
end
|
316
350
|
end
|
317
351
|
|
318
352
|
describe "users" do
|
319
353
|
it "returns current users if cache has not been initialized yet" do
|
320
|
-
@room.
|
321
|
-
@room.users.
|
354
|
+
expect(@room).to receive(:current_users).and_return(:the_whole_spittoon)
|
355
|
+
expect(@room.users).to eq(:the_whole_spittoon)
|
322
356
|
end
|
323
357
|
|
324
358
|
it "returns current users plus any added cached users" do
|
325
|
-
@room.
|
359
|
+
expect(@room).to receive(:current_users).and_return([:mia_cuttlefish])
|
326
360
|
@room.users << :guy_wearing_new_mexico_as_a_hat
|
327
|
-
@room.users.
|
361
|
+
expect(@room.users).to eq([:mia_cuttlefish, :guy_wearing_new_mexico_as_a_hat])
|
328
362
|
end
|
329
363
|
end
|
330
364
|
end
|
data/tinder.gemspec
CHANGED
@@ -4,11 +4,11 @@ require 'tinder/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.add_dependency 'eventmachine', '~> 1.0'
|
7
|
-
gem.add_dependency 'faraday', '~> 0.
|
7
|
+
gem.add_dependency 'faraday', '~> 0.9.0'
|
8
8
|
gem.add_dependency 'faraday_middleware', '~> 0.9'
|
9
9
|
gem.add_dependency 'hashie', ['>= 1.0', '< 3']
|
10
10
|
gem.add_dependency 'json', '~> 1.8.0'
|
11
|
-
gem.add_dependency 'mime-types'
|
11
|
+
gem.add_dependency 'mime-types'
|
12
12
|
gem.add_dependency 'multi_json', '~> 1.7'
|
13
13
|
gem.add_dependency 'twitter-stream', '~> 0.1'
|
14
14
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tinder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Keepers
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-08-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: eventmachine
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.
|
35
|
+
version: 0.9.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.
|
42
|
+
version: 0.9.0
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: faraday_middleware
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,16 +92,16 @@ dependencies:
|
|
92
92
|
name: mime-types
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - "
|
95
|
+
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
97
|
+
version: '0'
|
98
98
|
type: :runtime
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
104
|
+
version: '0'
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: multi_json
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
@@ -232,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
232
232
|
version: 1.3.6
|
233
233
|
requirements: []
|
234
234
|
rubyforge_project:
|
235
|
-
rubygems_version: 2.2.
|
235
|
+
rubygems_version: 2.2.2
|
236
236
|
signing_key:
|
237
237
|
specification_version: 4
|
238
238
|
summary: Ruby wrapper for the Campfire API
|