slack-notifier 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ed944b7001667e3e533abc25325fec4d7bfa99b
4
- data.tar.gz: 4d0ae7eb667f225b42b5621afdc2ffbac463f471
3
+ metadata.gz: f3a07aa79b784ac446857af4e6256d467d0d09ab
4
+ data.tar.gz: 9d41a7a8c98ac9b9a780c1398c07b7a1988db111
5
5
  SHA512:
6
- metadata.gz: 53703f1a9413e12505c0d2338776738eb25c5383c1448fd4e2efeb65f71eaccd4b6bf101263639e25bc957c588af4d4b094c77ae45f61ffb3adf0e8707db20d0
7
- data.tar.gz: f35eb71b3e57950f2e648e241682a054fbe98d6a7c96719f766d478c704d8afdefd96b853d8237f9dcbef2ebbf3a69195196b717a4242128f58db5ef2e84436a
6
+ metadata.gz: 9ce9ea031ea4f5e996a784ebd43b22896ddc49b7d258ef353cfb59b7d30e6250178255390933322c146cebf46686f4cd333548df0a4cd3ebfd339c3180f9148e
7
+ data.tar.gz: d03f6d11af25cc31083478893f95be4c6172aa8533b2acf9b18cfa4e11c33dd096b6489dabeacf6a131b3553b1ff95c4683653af27b93133687be4abdd32dc40
@@ -2,31 +2,28 @@ require 'net/http'
2
2
  require 'uri'
3
3
  require 'json'
4
4
 
5
- require_relative 'slack-notifier/http_post'
5
+ require_relative 'slack-notifier/default_http_client'
6
6
  require_relative 'slack-notifier/link_formatter'
7
7
 
8
8
  module Slack
9
9
  class Notifier
10
- attr_reader :team, :token, :hook_name, :default_payload
11
-
12
- def initialize team, token, hook_name=default_hook_name, default_payload={}
13
- @team = team
14
- @token = token
15
-
16
- if hook_name.is_a? Hash
17
- @hook_name = default_hook_name
18
- @default_payload = hook_name
19
- else
20
- @hook_name = hook_name
21
- @default_payload = default_payload
22
- end
10
+ attr_reader :team, :token, :http_client,
11
+ :hook_name, :default_payload
12
+
13
+ def initialize team, token, options={} # hook_name=default_hook_name, default_payload={}
14
+ @team = team
15
+ @token = token
16
+ @http_client = options.delete(:http_client) || DefaultHTTPClient
17
+ @hook_name = options.delete(:hook_name) || default_hook_name
18
+ @default_payload = options
23
19
  end
24
20
 
25
21
  def ping message, options={}
26
22
  message = LinkFormatter.format(message)
27
23
  payload = { text: message }.merge(default_payload).merge(options)
28
24
 
29
- HTTPPost.to endpoint, payload: payload.to_json
25
+
26
+ http_client.post endpoint, payload: payload.to_json
30
27
  end
31
28
 
32
29
  def channel
@@ -1,11 +1,11 @@
1
1
  module Slack
2
2
  class Notifier
3
3
 
4
- class HTTPPost
4
+ class DefaultHTTPClient
5
5
 
6
6
  class << self
7
- def to uri, params
8
- HTTPPost.new( uri, params ).call
7
+ def post uri, params
8
+ DefaultHTTPClient.new( uri, params ).call
9
9
  end
10
10
  end
11
11
 
@@ -1,5 +1,5 @@
1
1
  module Slack
2
2
  class Notifier
3
- VERSION = "0.5.0"
3
+ VERSION = "0.6.0"
4
4
  end
5
5
  end
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Slack::Notifier::HTTPPost do
3
+ describe Slack::Notifier::DefaultHTTPClient do
4
4
 
5
- describe "::to" do
6
- it "initializes HTTPPost with the given uri and params then calls" do
7
- http_post_double = instance_double("Slack::Notifier::HTTPPost")
5
+ describe "::post" do
6
+ it "initializes DefaultHTTPClient with the given uri and params then calls" do
7
+ http_post_double = instance_double("Slack::Notifier::DefaultHTTPClient")
8
8
 
9
9
  expect( described_class ).to receive(:new)
10
10
  .with( 'uri', 'params' )
11
11
  .and_return( http_post_double )
12
12
  expect( http_post_double ).to receive(:call)
13
13
 
14
- described_class.to 'uri', 'params'
14
+ described_class.post 'uri', 'params'
15
15
  end
16
16
 
17
17
  # http_post is really tested in the integration spec,
@@ -13,7 +13,7 @@ describe Slack::Notifier do
13
13
  end
14
14
 
15
15
  it "sets the optional service hook name" do
16
- subject = described_class.new 'team', 'token', 'custom_hook_name'
16
+ subject = described_class.new 'team', 'token', hook_name: 'custom_hook_name'
17
17
  expect( subject.hook_name ).to eq 'custom_hook_name'
18
18
  end
19
19
 
@@ -22,8 +22,14 @@ describe Slack::Notifier do
22
22
  expect( subject.channel ).to eq 'foo'
23
23
  end
24
24
 
25
+ it "sets a custom http client" do
26
+ client = double("CustomClient")
27
+ subject = described_class.new 'team', 'token', http_client: client
28
+ expect( subject.http_client ).to eq client
29
+ end
30
+
25
31
  it "can set service hook & default_payload options" do
26
- subject = described_class.new 'team', 'token', 'hook_name', channel: 'foo'
32
+ subject = described_class.new 'team', 'token', hook_name: 'hook_name', channel: 'foo'
27
33
  expect( subject.channel ).to eq 'foo'
28
34
  expect( subject.hook_name ).to eq 'hook_name'
29
35
  end
@@ -31,7 +37,7 @@ describe Slack::Notifier do
31
37
 
32
38
  describe "#ping" do
33
39
  before :each do
34
- allow( Slack::Notifier::HTTPPost ).to receive(:to)
40
+ allow( Slack::Notifier::DefaultHTTPClient ).to receive(:post)
35
41
  end
36
42
 
37
43
  it "passes the message through LinkFormatter" do
@@ -57,7 +63,7 @@ describe Slack::Notifier do
57
63
  end
58
64
 
59
65
  it "uses default channel" do
60
- expect( Slack::Notifier::HTTPPost ).to receive(:to)
66
+ expect( Slack::Notifier::DefaultHTTPClient ).to receive(:post)
61
67
  .with @endpoint_double,
62
68
  payload: '{"text":"the message","channel":"#default"}'
63
69
 
@@ -65,7 +71,7 @@ describe Slack::Notifier do
65
71
  end
66
72
 
67
73
  it "allows override channel to be set" do
68
- expect( Slack::Notifier::HTTPPost ).to receive(:to)
74
+ expect( Slack::Notifier::DefaultHTTPClient ).to receive(:post)
69
75
  .with @endpoint_double,
70
76
  payload: '{"text":"the message","channel":"new"}'
71
77
 
@@ -81,7 +87,7 @@ describe Slack::Notifier do
81
87
  .with("https://team.slack.com/services/hooks/incoming-webhook?token=token")
82
88
  .and_return(@endpoint_double)
83
89
 
84
- expect( Slack::Notifier::HTTPPost ).to receive(:to)
90
+ expect( Slack::Notifier::DefaultHTTPClient ).to receive(:post)
85
91
  .with @endpoint_double,
86
92
  payload: '{"text":"the message","channel":"channel"}'
87
93
 
@@ -96,11 +102,26 @@ describe Slack::Notifier do
96
102
  .with("https://team.slack.com/services/hooks/custom_hook_name?token=token")
97
103
  .and_return(@endpoint_double)
98
104
 
99
- expect( Slack::Notifier::HTTPPost ).to receive(:to)
105
+ expect( Slack::Notifier::DefaultHTTPClient ).to receive(:post)
100
106
  .with @endpoint_double,
101
107
  payload: '{"text":"the message","channel":"channel"}'
102
108
 
103
- described_class.new("team","token","custom_hook_name").ping "the message", channel: "channel"
109
+ described_class.new("team","token", hook_name: "custom_hook_name").ping "the message", channel: "channel"
110
+ end
111
+ end
112
+
113
+ context "with a custom http_client set" do
114
+ it "uses it" do
115
+ endpoint_double = instance_double "URI::HTTP"
116
+ allow( URI ).to receive(:parse)
117
+ .with("https://team.slack.com/services/hooks/incoming-webhook?token=token")
118
+ .and_return(endpoint_double)
119
+ client = double("CustomClient")
120
+ expect( client ).to receive(:post)
121
+ .with endpoint_double,
122
+ payload: '{"text":"the message"}'
123
+
124
+ described_class.new('team','token',http_client: client).ping "the message"
104
125
  end
105
126
  end
106
127
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Sloan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-14 00:00:00.000000000 Z
11
+ date: 2014-08-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " A slim ruby wrapper for posting to slack webhooks "
14
14
  email:
@@ -18,11 +18,11 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - lib/slack-notifier.rb
21
- - lib/slack-notifier/http_post.rb
21
+ - lib/slack-notifier/default_http_client.rb
22
22
  - lib/slack-notifier/link_formatter.rb
23
23
  - lib/slack-notifier/version.rb
24
24
  - spec/integration/ping_integration_test.rb
25
- - spec/lib/slack-notifier/http_post_spec.rb
25
+ - spec/lib/slack-notifier/default_http_client_spec.rb
26
26
  - spec/lib/slack-notifier/link_formatter_spec.rb
27
27
  - spec/lib/slack-notifier_spec.rb
28
28
  - spec/spec_helper.rb
@@ -52,8 +52,7 @@ specification_version: 4
52
52
  summary: A slim ruby wrapper for posting to slack webhooks
53
53
  test_files:
54
54
  - spec/integration/ping_integration_test.rb
55
- - spec/lib/slack-notifier/http_post_spec.rb
55
+ - spec/lib/slack-notifier/default_http_client_spec.rb
56
56
  - spec/lib/slack-notifier/link_formatter_spec.rb
57
57
  - spec/lib/slack-notifier_spec.rb
58
58
  - spec/spec_helper.rb
59
- has_rdoc: