broadcast 0.1.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/.gitignore +9 -0
- data/Gemfile +16 -0
- data/LICENSE +22 -0
- data/README.markdown +212 -0
- data/Rakefile +35 -0
- data/broadcast.gemspec +28 -0
- data/lib/broadcast/config.rb +20 -0
- data/lib/broadcast/media/campfire.rb +10 -0
- data/lib/broadcast/media/email.rb +22 -0
- data/lib/broadcast/media/irc.rb +12 -0
- data/lib/broadcast/media/jabber.rb +33 -0
- data/lib/broadcast/media/log.rb +7 -0
- data/lib/broadcast/media/oauth.rb +43 -0
- data/lib/broadcast/media/twitter.rb +9 -0
- data/lib/broadcast/media/yammer.rb +9 -0
- data/lib/broadcast/medium.rb +27 -0
- data/lib/broadcast/message.rb +33 -0
- data/lib/broadcast/railtie.rb +11 -0
- data/lib/broadcast/tasks/broadcast.rake +19 -0
- data/lib/broadcast/version.rb +5 -0
- data/lib/broadcast.rb +34 -0
- data/spec/lib/broadcast/media/campfire_spec.rb +19 -0
- data/spec/lib/broadcast/media/email_spec.rb +41 -0
- data/spec/lib/broadcast/media/irc_spec.rb +39 -0
- data/spec/lib/broadcast/media/jabber_spec.rb +91 -0
- data/spec/lib/broadcast/media/log_spec.rb +43 -0
- data/spec/lib/broadcast/media/oauth_spec.rb +108 -0
- data/spec/lib/broadcast/media/twitter_spec.rb +26 -0
- data/spec/lib/broadcast/media/yammer_spec.rb +26 -0
- data/spec/lib/broadcast/medium_spec.rb +24 -0
- data/spec/lib/broadcast/message_spec.rb +74 -0
- data/spec/lib/broadcast_spec.rb +66 -0
- data/spec/spec_helper.rb +6 -0
- data/spec/support/config.rb +43 -0
- data/spec/support/examples.rb +11 -0
- metadata +196 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium::Email do
|
4
|
+
|
5
|
+
describe '#publish' do
|
6
|
+
|
7
|
+
before {
|
8
|
+
@medium = Broadcast::Medium::Email.new
|
9
|
+
@message = Broadcast::Message::SpecWithContent.new
|
10
|
+
Mail::TestMailer.deliveries = []
|
11
|
+
}
|
12
|
+
|
13
|
+
it "should deliver the message to one recipient if options.recipients is a string" do
|
14
|
+
@medium.publish(@message)
|
15
|
+
Mail::TestMailer.deliveries.size.should == 1
|
16
|
+
Mail::TestMailer.deliveries.first.to.should == ['foo@moo.com']
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should deliver the message to many recipients if options.recipients is a array" do
|
20
|
+
@medium.options.recipients = ['mike@foo.com', 'tom@foo.com']
|
21
|
+
@medium.publish(@message)
|
22
|
+
Mail::TestMailer.deliveries.size.should == 2
|
23
|
+
Mail::TestMailer.deliveries.first.to.should == ['mike@foo.com']
|
24
|
+
Mail::TestMailer.deliveries.last.to.should == ['tom@foo.com']
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should properly get delivery_options and set delivery method" do
|
28
|
+
@medium.options.delivery_method = :smtp
|
29
|
+
mail = Mail.new
|
30
|
+
# 'nueter' the mail instance
|
31
|
+
def mail.deliver; end
|
32
|
+
Mail.should_receive(:new).and_return(mail)
|
33
|
+
@medium.publish(@message)
|
34
|
+
mail.delivery_method.settings['user_name'].should == '<username>'
|
35
|
+
mail.delivery_method.settings['password'].should == '<password>'
|
36
|
+
mail.delivery_method.settings['address'].should == 'smtp.gmail.com'
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium::Irc do
|
4
|
+
|
5
|
+
describe '.new' do
|
6
|
+
|
7
|
+
it "should create a new instance with options provided in config" do
|
8
|
+
medium = Broadcast::Medium::Irc.new
|
9
|
+
medium.options.username.should == 'foo'
|
10
|
+
medium.options.server.should == 'irc.freenode.net'
|
11
|
+
medium.options.port.should == '6667'
|
12
|
+
medium.options.channel.should == 'broadcast'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should prioritize options argument over options provided in config" do
|
16
|
+
medium = Broadcast::Medium::Jabber.new(:username => 'someoneelse', :server => 'irc.otherfreenode.net', :port => '6666', :channel => 'newchannel')
|
17
|
+
medium.options.username.should == 'someoneelse'
|
18
|
+
medium.options.server.should == 'irc.otherfreenode.net'
|
19
|
+
medium.options.port.should == '6666'
|
20
|
+
medium.options.channel.should == 'newchannel'
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#publish' do
|
26
|
+
|
27
|
+
before do
|
28
|
+
@medium = Broadcast::Medium::Irc.new
|
29
|
+
@message = Broadcast::Message::SpecWithContent.new
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should send the message to IRC channels with the message body" do
|
33
|
+
ShoutBot.should_receive(:shout).with("irc://foo@irc.freenode.net:6667/#broadcast")
|
34
|
+
@medium.publish(@message)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium::Jabber do
|
4
|
+
|
5
|
+
# 'nueter' the Jabber::Client
|
6
|
+
class Jabber::Client
|
7
|
+
def connect(*args); end
|
8
|
+
def auth(*args); end
|
9
|
+
def send(*args); end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '::Client' do
|
13
|
+
|
14
|
+
before {
|
15
|
+
@client = Broadcast::Medium::Jabber::Client.new('foo@foo.com', '123')
|
16
|
+
}
|
17
|
+
|
18
|
+
describe '.new' do
|
19
|
+
|
20
|
+
it "should create a new Jabber::Client and connect to jabber" do
|
21
|
+
@client.client.should be_an_instance_of Jabber::Client
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'deliver' do
|
27
|
+
|
28
|
+
it "should use the client to send a message" do
|
29
|
+
@client.client.should_receive(:send)
|
30
|
+
@client.deliver('mike@foo.com', 'Hi')
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '.new' do
|
38
|
+
|
39
|
+
it "should create a new instance with options provided in config" do
|
40
|
+
medium = Broadcast::Medium::Jabber.new
|
41
|
+
medium.options.username.should == 'foo@foo.com'
|
42
|
+
medium.options.password.should == 'mypass'
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should prioritize options argument options provided in config" do
|
46
|
+
medium = Broadcast::Medium::Jabber.new(:username => 'someoneelse@foo.com', :password => 'elsepass')
|
47
|
+
medium.options.username.should == 'someoneelse@foo.com'
|
48
|
+
medium.options.password.should == 'elsepass'
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#jabber' do
|
54
|
+
|
55
|
+
it "should instantiate a new Broadcast::Medium::Jabber::Client instance" do
|
56
|
+
jabber = Broadcast::Medium::Jabber.new.jabber
|
57
|
+
jabber.should be_an_instance_of(Broadcast::Medium::Jabber::Client)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should memoize the Broadcast::Medium::Jabber::Client instance" do
|
61
|
+
medium = Broadcast::Medium::Jabber.new
|
62
|
+
jabber = medium.jabber
|
63
|
+
medium.jabber.object_id.should == jabber.object_id
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#publish' do
|
69
|
+
|
70
|
+
before {
|
71
|
+
@medium = Broadcast::Medium::Jabber.new(:username => 'foo@foo.com', :password => 'passkey')
|
72
|
+
@message = Broadcast::Message::SpecWithContent.new
|
73
|
+
@jabber = mock
|
74
|
+
@medium.stub!(:jabber).and_return(@jabber)
|
75
|
+
}
|
76
|
+
|
77
|
+
it "should deliver the message to one recipient if options.recipients is a string" do
|
78
|
+
@jabber.should_receive(:deliver).with('mike@foo.com', "message")
|
79
|
+
@medium.publish(@message)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should deliver the message to many recipients if options.recipients is a array" do
|
83
|
+
@medium.options.recipients = ['mike@foo.com', 'tom@foo.com']
|
84
|
+
@jabber.should_receive(:deliver).with('mike@foo.com', "message")
|
85
|
+
@jabber.should_receive(:deliver).with('tom@foo.com', "message")
|
86
|
+
@medium.publish(@message)
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium::Log do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Broadcast.configuration.log.file = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '#publish' do
|
10
|
+
|
11
|
+
it "should send message to logfile if it was defined on class level" do
|
12
|
+
log = StringIO.new
|
13
|
+
Broadcast.configuration.log.file = log
|
14
|
+
message = Broadcast::Message::SpecWithContent.new
|
15
|
+
Broadcast::Medium::Log.new.publish(message)
|
16
|
+
log.rewind
|
17
|
+
log.read.should match(message.body)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should send message to logfile if it was defined in options" do
|
21
|
+
log = StringIO.new
|
22
|
+
message = Broadcast::Message::SpecWithContent.new
|
23
|
+
Broadcast::Medium::Log.new(:file => log).publish(message)
|
24
|
+
log.rewind
|
25
|
+
log.read.should match(message.body)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should look at options first before class when looking for file" do
|
29
|
+
log_default = StringIO.new
|
30
|
+
log_options = StringIO.new
|
31
|
+
Broadcast.configuration.log.file = log_default
|
32
|
+
|
33
|
+
message = Broadcast::Message::SpecWithContent.new
|
34
|
+
Broadcast::Medium::Log.new(:file => log_options).publish(message)
|
35
|
+
log_options.rewind
|
36
|
+
log_options.read.should match(message.body)
|
37
|
+
log_default.rewind
|
38
|
+
log_default.read.should == ''
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium::Oauth do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Broadcast::Medium::Oauth.site = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
describe '.consumer' do
|
10
|
+
|
11
|
+
before do
|
12
|
+
Broadcast::Medium::Oauth.site = 'http://site.com'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return consumer object with proper keys and site" do
|
16
|
+
consumer = Broadcast::Medium::Oauth.new.consumer
|
17
|
+
consumer.should be_an_instance_of(OAuth::Consumer)
|
18
|
+
consumer.key.should == 'consumerkey'
|
19
|
+
consumer.secret.should == 'consumersecret'
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should memoize the consumer object" do
|
23
|
+
medium = Broadcast::Medium::Oauth.new
|
24
|
+
consumer = medium.consumer
|
25
|
+
medium.consumer.object_id.should == consumer.object_id
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#token' do
|
31
|
+
|
32
|
+
before do
|
33
|
+
Broadcast::Medium::Oauth.site = 'http://site.com'
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should return access token object with proper access token keys" do
|
37
|
+
token = Broadcast::Medium::Oauth.new.token
|
38
|
+
token.should be_an_instance_of(OAuth::AccessToken)
|
39
|
+
token.token.should == 'accesstoken'
|
40
|
+
token.secret.should == 'accesssecret'
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should memoize the access token" do
|
44
|
+
medium = Broadcast::Medium::Oauth.new
|
45
|
+
token = medium.token
|
46
|
+
medium.token.object_id.should == token.object_id
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should prioritize options argument over class level options" do
|
50
|
+
token = Broadcast::Medium::Oauth.new(:access_token => 'overridetoken', :access_secret => 'overridesecret').token
|
51
|
+
token.should be_an_instance_of(OAuth::AccessToken)
|
52
|
+
token.token.should == 'overridetoken'
|
53
|
+
token.secret.should == 'overridesecret'
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '.authorize' do
|
59
|
+
|
60
|
+
before do
|
61
|
+
Broadcast.configuration.oauth.consumer_key = nil
|
62
|
+
Broadcast.configuration.oauth.consumer_secret = nil
|
63
|
+
Broadcast::Medium::Oauth.site = 'http://site.com'
|
64
|
+
|
65
|
+
medium = Broadcast::Medium::Oauth.new
|
66
|
+
|
67
|
+
@request_token = mock
|
68
|
+
@stdout = StringIO.new
|
69
|
+
@old_stdout, $stdout = $stdout, @stdout
|
70
|
+
|
71
|
+
$stdin.should_receive(:gets).and_return('consumerkey123')
|
72
|
+
$stdin.should_receive(:gets).and_return('consumersecret123')
|
73
|
+
$stdin.should_receive(:gets).and_return('12342')
|
74
|
+
|
75
|
+
@request_token.should_receive(:authorize_url).and_return('http://foo.com/1234')
|
76
|
+
medium.consumer.stub!(:get_request_token).and_return(@request_token)
|
77
|
+
|
78
|
+
@access_token = mock(:token => '6789', :secret => '3456')
|
79
|
+
@request_token.should_receive(:get_access_token).and_return(@access_token)
|
80
|
+
|
81
|
+
medium.authorize
|
82
|
+
|
83
|
+
medium.options.consumer_key.should == 'consumerkey123'
|
84
|
+
medium.options.consumer_secret.should == 'consumersecret123'
|
85
|
+
$stdout = @old_stdout
|
86
|
+
@stdout.rewind
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should use the request token to get the url the user goes to" do
|
90
|
+
@stdout.read.should match('http://foo.com/1234')
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should get the oauth_verifier from the user" do
|
94
|
+
@stdout.read.should match('Enter token')
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should print out the lines the user should put in the config file" do
|
98
|
+
out = @stdout.read
|
99
|
+
out.should match('Put the following in your Broadcast configuration file:')
|
100
|
+
out.should match('config.oauth.consumer_key')
|
101
|
+
out.should match('config.oauth.consumer_secret')
|
102
|
+
out.should match('config.oauth.access_token')
|
103
|
+
out.should match('config.oauth.access_secret')
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium::Twitter do
|
4
|
+
|
5
|
+
describe '.site' do
|
6
|
+
|
7
|
+
it "should be set to TwitterO OAuth endpoint" do
|
8
|
+
Broadcast::Medium::Twitter.site.should == 'http://api.twitter.com'
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#publish' do
|
14
|
+
|
15
|
+
it "should send a post to twitter with the message body" do
|
16
|
+
message = Broadcast::Message::SpecWithContent.new
|
17
|
+
medium = Broadcast::Medium::Twitter.new
|
18
|
+
token = mock
|
19
|
+
token.should_receive(:post).with("/1/statuses/update.json", {:status=>"message"})
|
20
|
+
medium.should_receive(:token).and_return(token)
|
21
|
+
medium.publish(message)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium::Yammer do
|
4
|
+
|
5
|
+
describe '.site' do
|
6
|
+
|
7
|
+
it "should be set to Yammer OAuth endpoint" do
|
8
|
+
Broadcast::Medium::Yammer.site.should == 'https://www.yammer.com'
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#publish' do
|
14
|
+
|
15
|
+
it "should send a post to yammer with the message body" do
|
16
|
+
message = Broadcast::Message::SpecWithContent.new
|
17
|
+
medium = Broadcast::Medium::Yammer.new
|
18
|
+
token = mock
|
19
|
+
token.should_receive(:post).with("/api/v1/messages.json", { :body=>"message" })
|
20
|
+
medium.should_receive(:token).and_return(token)
|
21
|
+
medium.publish(message)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Medium do
|
4
|
+
|
5
|
+
describe '#publish' do
|
6
|
+
|
7
|
+
before do
|
8
|
+
@medium = Broadcast::Medium::Spec.new
|
9
|
+
@message = Broadcast::Message::Spec.new
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should properly load options" do
|
13
|
+
@medium.options.option.should == 1
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should accept 1 argument" do
|
17
|
+
lambda {
|
18
|
+
@medium.publish(@message)
|
19
|
+
}.should_not raise_error(ArgumentError)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Broadcast::Message do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Broadcast::Message::Spec.media = []
|
7
|
+
@log = StringIO.new
|
8
|
+
Broadcast.logger = Logger.new(@log)
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".initialize" do
|
12
|
+
|
13
|
+
it "should accept options" do
|
14
|
+
msg = Broadcast::Message::Spec.new(:foo => 1)
|
15
|
+
msg.options.foo.should == 1
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".medium" do
|
21
|
+
|
22
|
+
it "should add a medium to media" do
|
23
|
+
Broadcast::Message::Spec.medium :spec
|
24
|
+
Broadcast::Message::Spec.media.size.should == 1
|
25
|
+
Broadcast::Message::Spec.media.first[:name].should == :spec
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should allow adding of options" do
|
29
|
+
Broadcast::Message::Spec.medium :spec, :option => 1
|
30
|
+
Broadcast::Message::Spec.media.size.should == 1
|
31
|
+
Broadcast::Message::Spec.media.first[:name].should == :spec
|
32
|
+
Broadcast::Message::Spec.media.first[:options].should == { :option => 1 }
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#body" do
|
38
|
+
|
39
|
+
it "should be empty by default" do
|
40
|
+
Broadcast::Message::Spec.new.body.should == ''
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#publish' do
|
46
|
+
|
47
|
+
it "should properly load all media of the message" do
|
48
|
+
Broadcast::Message::Spec.medium :spec
|
49
|
+
Broadcast::Message::Spec.new.publish
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should properly instantiate all media of the message" do
|
53
|
+
medium = mock
|
54
|
+
medium.should_receive(:publish)
|
55
|
+
Broadcast::Medium::Spec.should_receive(:new).once.and_return(medium)
|
56
|
+
Broadcast::Message::Spec.medium :spec
|
57
|
+
Broadcast::Message::Spec.new.publish
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should send to logger if medium instantiation fails" do
|
61
|
+
medium = mock
|
62
|
+
medium.should_receive(:publish).and_raise 'Some Exception'
|
63
|
+
Broadcast::Medium::Spec.should_receive(:new).once.and_return(medium)
|
64
|
+
Broadcast::Message::Spec.medium :spec
|
65
|
+
lambda {
|
66
|
+
Broadcast::Message::Spec.new.publish
|
67
|
+
}.should_not raise_error
|
68
|
+
@log.rewind
|
69
|
+
@log.read.should match('Publishing of Broadcast::Message::Spec to spec failed:\nSome Exception')
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
ORIGINAL_CONFIG = Broadcast.configuration
|
4
|
+
|
5
|
+
describe Broadcast do
|
6
|
+
|
7
|
+
describe '.publish' do
|
8
|
+
|
9
|
+
it "should properly load the message class and instantiate the message" do
|
10
|
+
msg = mock(:publish => true)
|
11
|
+
Broadcast::Message::Spec.should_receive(:new).once.and_return(msg)
|
12
|
+
Broadcast.publish(:spec)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should properly load the message class if in camelcase and instantiate the message" do
|
16
|
+
msg = mock(:publish => true)
|
17
|
+
Broadcast::Message::SpecWithContent.should_receive(:new).once.and_return(msg)
|
18
|
+
Broadcast.publish(:spec_with_content)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should call publish on the message" do
|
22
|
+
msg = mock
|
23
|
+
msg.should_receive(:publish)
|
24
|
+
Broadcast::Message::Spec.should_receive(:new).once.and_return(msg)
|
25
|
+
Broadcast.publish(:spec)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '.setup' do
|
31
|
+
|
32
|
+
before {
|
33
|
+
Broadcast.configuration = ORIGINAL_CONFIG
|
34
|
+
}
|
35
|
+
|
36
|
+
it "should allow setting of single settings" do
|
37
|
+
Broadcast.setup { |config|
|
38
|
+
config.some_setting = 1
|
39
|
+
}
|
40
|
+
Broadcast.configuration.should be_an_instance_of(Broadcast::Config)
|
41
|
+
Broadcast.configuration.some_setting.should == 1
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should allow setting of namespaced settings" do
|
45
|
+
Broadcast.setup { |config|
|
46
|
+
config.log.some_setting = 1
|
47
|
+
}
|
48
|
+
Broadcast.configuration.log.should be_an_instance_of(Hashie::Mash)
|
49
|
+
Broadcast.configuration.log.some_setting.should == 1
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should allow setting of namespaced settings using a block" do
|
53
|
+
Broadcast.setup { |config|
|
54
|
+
config.log { |log|
|
55
|
+
log.file = "foo.log"
|
56
|
+
log.color = 'red'
|
57
|
+
}
|
58
|
+
}
|
59
|
+
Broadcast.configuration.log.should be_an_instance_of(Hashie::Mash)
|
60
|
+
Broadcast.configuration.log.file.should == 'foo.log'
|
61
|
+
Broadcast.configuration.log.color.should == 'red'
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
Broadcast.setup { |config|
|
2
|
+
config.spec.option = 1
|
3
|
+
|
4
|
+
config.oauth { |oauth|
|
5
|
+
oauth.consumer_key = 'consumerkey'
|
6
|
+
oauth.consumer_secret = 'consumersecret'
|
7
|
+
oauth.access_token = 'accesstoken'
|
8
|
+
oauth.access_secret = 'accesssecret'
|
9
|
+
}
|
10
|
+
|
11
|
+
config.jabber { |jabber|
|
12
|
+
jabber.username = 'foo@foo.com'
|
13
|
+
jabber.password = 'mypass'
|
14
|
+
jabber.recipients = 'mike@foo.com'
|
15
|
+
}
|
16
|
+
|
17
|
+
config.email { |email|
|
18
|
+
email.recipients = ['foo@moo.com']
|
19
|
+
email.delivery_method = :test
|
20
|
+
email.delivery_options = {
|
21
|
+
:address => "smtp.gmail.com",
|
22
|
+
:port => 587,
|
23
|
+
:domain => 'your.host.name',
|
24
|
+
:user_name => '<username>',
|
25
|
+
:password => '<password>',
|
26
|
+
:authentication => 'plain',
|
27
|
+
:enable_starttls_auto => true
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
config.campfire { |campfire|
|
32
|
+
campfire.subdomain = 'myaccount'
|
33
|
+
campfire.token = 'token'
|
34
|
+
campfire.room = 'My Room'
|
35
|
+
}
|
36
|
+
|
37
|
+
config.irc { |irc|
|
38
|
+
irc.username = 'foo'
|
39
|
+
irc.server = 'irc.freenode.net'
|
40
|
+
irc.port = '6667'
|
41
|
+
irc.channel = 'broadcast'
|
42
|
+
}
|
43
|
+
}
|