tinder 1.9.4 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/tinder.png)](http://badge.fury.io/rb/tinder)
|
4
|
+
[![Build Status](https://travis-ci.org/collectiveidea/tinder.png?branch=master)](https://travis-ci.org/collectiveidea/tinder)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/collectiveidea/tinder.png)](https://codeclimate.com/github/collectiveidea/tinder)
|
6
|
+
[![Dependency Status](https://gemnasium.com/collectiveidea/tinder.png)](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
|
-
[![Build Status](https://secure.travis-ci.org/collectiveidea/tinder.png)](http://travis-ci.org/collectiveidea/tinder) [![Dependency Status](https://gemnasium.com/collectiveidea/tinder.png)](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
|