campy 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,5 +15,6 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .rbenv-version
18
19
  .rvmrc
19
20
  .rbx/
@@ -7,5 +7,4 @@ rvm:
7
7
  - ree
8
8
  - rbx-18mode
9
9
  - jruby-18mode
10
- - ruby-head
11
10
  - jruby-head
@@ -1,4 +1,12 @@
1
- ## 0.1.3.dev (unreleased)
1
+ ## 0.1.4.dev (unreleased)
2
+
3
+
4
+ ## 0.1.3 (July 10, 2012)
5
+
6
+ ### New features
7
+
8
+ * Pull request [#1](https://github.com/fnichol/campy/pull/1): Add option to
9
+ use Campfire room id rather than room name. ([@mvandenbeuken][])
2
10
 
3
11
 
4
12
  ## 0.1.2 (April 5, 2012)
@@ -21,3 +29,4 @@
21
29
  The initial release.
22
30
 
23
31
  [@fnichol]: https://github.com/fnichol
32
+ [@mvandenbeuken]: https://github.com/mvandenbeuken
data/README.md CHANGED
@@ -68,6 +68,18 @@ campy.paste "Long pastes are long"
68
68
  campy.play "ohmy"
69
69
  ```
70
70
 
71
+ If you know the room ID and would prefer to use that instead of the name:
72
+
73
+ ```ruby
74
+ require 'campy'
75
+
76
+ campy = Campy::Room.new(:account => "mysubdomain",
77
+ :token => "mytoken123", :room_id => "12345")
78
+ campy.speak "Campy says yello"
79
+ campy.paste "Long pastes are long"
80
+ campy.play "ohmy"
81
+ ```
82
+
71
83
  Why not use the `campfire.yml` config? Let's do that:
72
84
 
73
85
  ```ruby
@@ -19,4 +19,5 @@ Gem::Specification.new do |gem|
19
19
 
20
20
  gem.add_development_dependency "minitest", "~> 2.12.0"
21
21
  gem.add_development_dependency "webmock", "~> 1.8.5"
22
+ gem.add_development_dependency "simplecov", "~> 0.6.1"
22
23
  end
@@ -31,7 +31,7 @@ module Campy
31
31
  def initialize(options = {})
32
32
  options = { :ssl => true }.merge(options)
33
33
 
34
- [:account, :room, :token, :ssl].each do |option|
34
+ [:account, :room_id, :room, :token, :ssl].each do |option|
35
35
  instance_variable_set "@#{option}", options[option]
36
36
  end
37
37
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module Campy
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
@@ -1,4 +1,20 @@
1
1
  # -*- encoding: utf-8 -*-
2
+
3
+ # Currently there no support for SimpleCov in Rubinus, see:
4
+ # http://donttreadonme.co.uk/rubinius/2012/02/22.html#message_243
5
+ unless defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx"
6
+ require 'simplecov'
7
+ SimpleCov.adapters.define 'gem' do
8
+ command_name 'Specs'
9
+
10
+ add_filter '/spec/'
11
+
12
+ add_group 'Binaries', '/bin/'
13
+ add_group 'Libraries', '/lib/'
14
+ end
15
+ SimpleCov.start 'gem'
16
+ end
17
+
2
18
  require 'minitest/autorun'
3
19
  require 'webmock/minitest'
4
20
  require 'campy/room'
@@ -46,6 +62,13 @@ describe Campy::Room do
46
62
  :body => fixture("speak").sub(/@@MESSAGE@@/, msg))
47
63
  end
48
64
 
65
+ def stub_speak_not_found!(msg, type = 'TextMessage')
66
+ stub_request(:post, "https://yepyep:X@zubzub.campfirenow.com/room/123456/speak.json").
67
+ with(:headers => {'Content-Type' => 'application/json'},
68
+ :body => {:message => {:body => msg, :type => type}}).
69
+ to_return(:status => 404, :headers => {}, :body => "Not Found")
70
+ end
71
+
49
72
  def stub_speak_error!(error)
50
73
  stub_request(:post, "https://yepyep:X@zubzub.campfirenow.com/room/123456/speak.json").
51
74
  with(:headers => {'Content-Type' => 'application/json'}).
@@ -75,6 +98,12 @@ describe Campy::Room do
75
98
  describe "#room_id" do
76
99
  let(:subject) { Campy::Room.new(opts) }
77
100
 
101
+ it "returns the room_id set in the initializer if it is provided" do
102
+ room_with_id = Campy::Room.new(opts.merge(:room_id => 654321))
103
+
104
+ room_with_id.room_id.must_equal 654321
105
+ end
106
+
78
107
  it "fetches the room id from the API" do
79
108
  stub_rooms!
80
109
 
@@ -123,6 +152,12 @@ describe Campy::Room do
123
152
  subject.speak("talking about talking").must_equal true
124
153
  end
125
154
 
155
+ it "raises a ConnectionError when API does not return HTTP 201" do
156
+ stub_speak_not_found!("nope")
157
+
158
+ proc { subject.speak "nope" }.must_raise(Campy::Room::ConnectionError)
159
+ end
160
+
126
161
  WRAPPED_ERRORS.each do |error|
127
162
  it "wraps #{error} and raises a ConnectionError" do
128
163
  stub_speak_error!(error)
@@ -153,6 +188,12 @@ describe Campy::Room do
153
188
  subject.paste("big ol long paste\nwith newlines").must_equal true
154
189
  end
155
190
 
191
+ it "raises a ConnectionError when API does not return HTTP 201" do
192
+ stub_speak_not_found!("nope", "PasteMessage")
193
+
194
+ proc { subject.paste "nope" }.must_raise(Campy::Room::ConnectionError)
195
+ end
196
+
156
197
  WRAPPED_ERRORS.each do |error|
157
198
  it "wraps #{error} and raises a ConnectionError" do
158
199
  stub_speak_error!(error)
@@ -183,6 +224,12 @@ describe Campy::Room do
183
224
  subject.play("tada").must_equal true
184
225
  end
185
226
 
227
+ it "raises a ConnectionError when API does not return HTTP 201" do
228
+ stub_speak_not_found!("nope", "SoundMessage")
229
+
230
+ proc { subject.play "nope" }.must_raise(Campy::Room::ConnectionError)
231
+ end
232
+
186
233
  WRAPPED_ERRORS.each do |error|
187
234
  it "wraps #{error} and raises a ConnectionError" do
188
235
  stub_speak_error!(error)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: campy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-05 00:00:00.000000000 Z
12
+ date: 2012-07-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &70146366979960 !ruby/object:Gem::Requirement
16
+ requirement: &2155891020 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70146366979960
24
+ version_requirements: *2155891020
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &70146366979020 !ruby/object:Gem::Requirement
27
+ requirement: &2155890340 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.12.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70146366979020
35
+ version_requirements: *2155890340
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: webmock
38
- requirement: &70146366978320 !ruby/object:Gem::Requirement
38
+ requirement: &2155889700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,18 @@ dependencies:
43
43
  version: 1.8.5
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70146366978320
46
+ version_requirements: *2155889700
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: &2155888960 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.6.1
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *2155888960
47
58
  description: Tiny Campfire Ruby client so you can get on with it.
48
59
  email:
49
60
  - fnichol@nichol.ca
@@ -81,18 +92,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
92
  - - ! '>='
82
93
  - !ruby/object:Gem::Version
83
94
  version: '0'
84
- segments:
85
- - 0
86
- hash: -3617043583867255143
87
95
  required_rubygems_version: !ruby/object:Gem::Requirement
88
96
  none: false
89
97
  requirements:
90
98
  - - ! '>='
91
99
  - !ruby/object:Gem::Version
92
100
  version: '0'
93
- segments:
94
- - 0
95
- hash: -3617043583867255143
96
101
  requirements: []
97
102
  rubyforge_project:
98
103
  rubygems_version: 1.8.17