mr_bump 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmYxMTM0MjIwMDQ3ZGFjMTI0ZGEwZGVkNmRmNjA4MWRhNTMyNGQ3OA==
4
+ NThjNjNjNzI3OWZjNmNkMjIxOGI3NzAzY2NmZjNkYzU0NWRkYWY2Nw==
5
5
  data.tar.gz: !binary |-
6
- Y2U3ZjMwNGRiZGM3NGQ1YWI2NzNkZWM3ZDZiNDEwYWE4Zjg4ZmMwMA==
6
+ YzA2OTc1NjMxZWE1MmFmYjQ4MzIzMDg1NjBkMzc3ZDA3NThmOWYzZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MDU1ZGQ1ZTNhMjE5OTdjODZhZTBkZmQxYjcyYjg2NDY2YmVhZWM0MzQ3YzFj
10
- NzEwNjg5ZmI3NzM4OTQ2NzdlNGNlYmFmMGIxODkzMjlhODIxYmU1Yjg5NWY0
11
- MTVkYjgzYWI4NjNhYmFiZmY3MDk2NTg4YjZlN2JiZDE2ZjBjMzk=
9
+ MWRhNjU0YmVjY2JjNDA1YzVjMzZkMmQwYzhlMDhlMmU4YmI2ZGY0M2NkYmIz
10
+ MzRhZDMyNTU3OTkwODk3M2Y2OTgzZDZhMTVkNDYwODExZjQyNTQ5N2NmZDYz
11
+ ZDA5Y2M5MTY4MWMyNjI4M2RkZmY0MWI0NGQ3YTg1Mzc3MTZhZTM=
12
12
  data.tar.gz: !binary |-
13
- NjI1OTJlY2U4MjU2YjNiM2JmYTUyNmRkNWRhYTA5YzVlYzNkZWU2YjE4N2Ji
14
- YTlhMmY2NzkzZGE3MGEzNGIxZGNhMWQxMDlmOWNlYjE4YmU3MzExMGJhODUy
15
- YzYxZjNkYTI4YmIzMDIzODQ5OGIyMjNlMTliY2NhMzc3NzYzMWY=
13
+ NTQ3MGU3MmI2N2Q0YmYxYTUyZWUwNjY3MDM4NjMxMGMxNDIxODY1NjcxOWQ4
14
+ ZjhiMGEyZDNhZjJiZWE1MjE0OTMyYTkwODYwMWFmZDIyZDk0YzQwYWNiMDdl
15
+ M2ZjN2E3YjdhMGMxZjU5MmQ0YjVkZTA0OGJiNjE0NTEzYzAwODg=
data/lib/mr_bump/slack.rb CHANGED
@@ -6,12 +6,14 @@ require 'slack-notifier'
6
6
  module MrBump
7
7
  # This class uses a slack webhook to push notifications to slack
8
8
  class Slack
9
+ attr_accessor :webhook, :username, :jira_url, :icon, :git
10
+
9
11
  def initialize(git_config, opts)
10
12
  raise ArgumentError, 'No Slack webhook found.' unless opts['webhook_url']
11
13
  @webhook = opts['webhook_url']
12
14
  @username = opts['username'] || 'Mr Bump'
13
15
  @jira_url = opts['jira_url']
14
- @icon = opts['icon'].is_a? Array ? opts['icon'].sample : opts['icon']
16
+ @icon = Array(opts['icon']).sample
15
17
  @git = git_config
16
18
  end
17
19
 
@@ -0,0 +1,96 @@
1
+ # This Source Code Form is subject to the terms of the Mozilla Public
2
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
+
5
+ require 'mr_bump/slack'
6
+
7
+ describe MrBump::Slack do
8
+ let(:config) do
9
+ {
10
+ 'webhook_url' => webhook_url,
11
+ 'username' => username,
12
+ 'icon' => icons
13
+ }
14
+ end
15
+ let(:git_config) { {} }
16
+ let(:username) { nil }
17
+ let(:icons) { nil }
18
+ let(:webhook_url) { 'asdads' }
19
+
20
+ let(:slack) { described_class.new(git_config, config) }
21
+
22
+ context 'when not given a webhook url' do
23
+ let(:webhook_url) { nil }
24
+ it 'throws an error on construction' do
25
+ expect { slack }.to raise_error(ArgumentError)
26
+ end
27
+ end
28
+
29
+ context 'when given a valid config with no username' do
30
+ context 'when not given an icon' do
31
+ it 'defaults the name to "Mr Bump"' do
32
+ expect(slack.username).to eq('Mr Bump')
33
+ end
34
+ it 'has no icon' do
35
+ expect(slack.icon).to eq(nil)
36
+ end
37
+ end
38
+
39
+ context 'with an array of icons to use' do
40
+ let(:icons) { %w(a bc) }
41
+
42
+ it 'defaults the name to "Mr Bump"' do
43
+ expect(slack.username).to eq('Mr Bump')
44
+ end
45
+ it 'selects a single icon to use' do
46
+ expect(icons.include?(slack.icon))
47
+ end
48
+ end
49
+
50
+ context 'with an single icon to use' do
51
+ let(:icons) { 'icon' }
52
+
53
+ it 'defaults the name to "Mr Bump"' do
54
+ expect(slack.username).to eq('Mr Bump')
55
+ end
56
+ it 'uses the single given icon' do
57
+ expect(slack.icon).to eq(icons)
58
+ end
59
+ end
60
+ end
61
+
62
+ context 'when given a valid config with a username' do
63
+ let(:username) { 'Sad Corporate Name' }
64
+
65
+ context 'when not given an icon' do
66
+ it 'uses the given username' do
67
+ expect(slack.username).to eq(username)
68
+ end
69
+ it 'has no icon' do
70
+ expect(slack.icon).to eq(nil)
71
+ end
72
+ end
73
+
74
+ context 'with an array of icons to use' do
75
+ let(:icons) { %w(a bc) }
76
+
77
+ it 'uses the given username' do
78
+ expect(slack.username).to eq(username)
79
+ end
80
+ it 'selects a single icon to use' do
81
+ expect(icons.include?(slack.icon))
82
+ end
83
+ end
84
+
85
+ context 'with an single icon to use' do
86
+ let(:icons) { 'icon' }
87
+
88
+ it 'uses the given username' do
89
+ expect(slack.username).to eq(username)
90
+ end
91
+ it 'uses the single given icon' do
92
+ expect(slack.icon).to eq(icons)
93
+ end
94
+ end
95
+ end
96
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_bump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Fitzgerald
@@ -115,6 +115,7 @@ files:
115
115
  - spec/config_spec.rb
116
116
  - spec/git_config_spec.rb
117
117
  - spec/mr_bump_spec.rb
118
+ - spec/slack_spec.rb
118
119
  - spec/spec_helper.rb
119
120
  homepage: https://github.com/xulaus/mr_bump
120
121
  licenses:
@@ -145,4 +146,5 @@ test_files:
145
146
  - spec/config_spec.rb
146
147
  - spec/git_config_spec.rb
147
148
  - spec/mr_bump_spec.rb
149
+ - spec/slack_spec.rb
148
150
  - spec/spec_helper.rb