ruboty-karma 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 200dcffa84389f88093b8f03ac0fe29f577dc5c8
4
- data.tar.gz: 85e47f922dfb7076d64b27d20589ca161690f953
3
+ metadata.gz: a56590d972dfc201689c903d1e25a8c8c75dabd3
4
+ data.tar.gz: 3bd7d652a90ade4a24b4363ec17a1c6657c48b91
5
5
  SHA512:
6
- metadata.gz: b14904236c6980982ea29047eba58f47a47c801b60c3ab445fd9d92e2814f8f053375ccd16f9165f6bb472c6ff5835ffc53f204ebd8b94001fe579f0c7beb716
7
- data.tar.gz: 09567bbbec2023a6e28130e1f568fe45ef4faf341902d701be48382f362c53a8aef48d94b8aaf20ee366572188d6bf6b43429b857a0c0c24f5a49bd224ac3faf
6
+ metadata.gz: c005bf59d8b73e4f6187315022d6e436cbd3c1a0a7903f463e94f9e77a4ba9e2aa448cf7d36a47ff2694c12449cb00385ef0ff1578ee61d34212457408903aac
7
+ data.tar.gz: e99d67cb4778888921314c0abc08d4e112bdc1d29f369c0097f21bb8799339d223f02377b4ce32ba3aaea313ab0cecf80bdb86d367a6980f774bfe826b8bc46f
data/Rakefile CHANGED
@@ -1,7 +1,16 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
2
3
 
3
4
  task :upgrade do
4
5
  `git add .`
5
6
  `git commit -m "auto upgrade"`
6
7
  `git push origin master`
7
8
  end
9
+
10
+ Rake::TestTask.new(:test) do |t|
11
+ t.libs << 'test'
12
+ t.libs << 'lib'
13
+ t.test_files = FileList['test/**/*_test.rb']
14
+ end
15
+
16
+ task :default => :test
@@ -2,19 +2,28 @@ require 'ruboty'
2
2
  require 'ruboty/karma/version'
3
3
  require 'ruboty/karma/actions/increase'
4
4
  require 'ruboty/karma/actions/list'
5
+ require 'ruboty/karma/actions/delete'
5
6
 
6
7
  module Ruboty
7
8
  module Handlers
8
9
  class Karma < Base
10
+ INCREMENT_PATTERN = /@?(?<name>[^@:\s]+):?\s+\+\+/m
11
+ DELETE_PATTERN = /delete karma @?(?<name>[^@:\s]+):?/m
12
+
9
13
  on(
10
- /@?(?<name>\S+?):?\s*\+\+/m,
14
+ INCREMENT_PATTERN,
11
15
  name: 'increment',
12
16
  description: "increment a user's karma"
13
17
  )
14
18
  on(
15
19
  /list karma/,
16
20
  name: 'list',
17
- description: "list all menber's karma"
21
+ description: "list all users' karma"
22
+ )
23
+ on(
24
+ DELETE_PATTERN,
25
+ name: 'delete',
26
+ description: "delete a user's karma"
18
27
  )
19
28
 
20
29
  def increment(message)
@@ -24,6 +33,10 @@ module Ruboty
24
33
  def list(message)
25
34
  Ruboty::Karma::Actions::List.new(message).call
26
35
  end
36
+
37
+ def delete(message)
38
+ Ruboty::Karma::Actions::Delete.new(message).call
39
+ end
27
40
  end
28
41
  end
29
42
  end
@@ -0,0 +1,35 @@
1
+ module Ruboty
2
+ module Karma
3
+ module Actions
4
+ class Delete < Ruboty::Actions::Base
5
+ def call
6
+ name = message[:name]
7
+ reset(name)
8
+ delete_user(name)
9
+ reply(name)
10
+ end
11
+
12
+ private
13
+
14
+ def reply(name)
15
+ message.reply("Deleted #{name}")
16
+ end
17
+
18
+ def delete_user(name)
19
+ brain = message.robot.brain
20
+ key = 'karma-list'
21
+ brain.data[key] ||= []
22
+ users = brain.data[key]
23
+ users.delete(name)
24
+ brain.data[key] = users
25
+ end
26
+
27
+ def reset(name)
28
+ brain = message.robot.brain
29
+ key = "karma-@#{name}"
30
+ brain.data[key] = nil
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,5 @@
1
1
  module Ruboty
2
2
  module Karma
3
- VERSION = '0.2.2'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
@@ -10,13 +10,15 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ['hkdnet@users.noreply.github.com']
11
11
 
12
12
  spec.files = `git ls-files -z`.split("\x0")
13
+ spec.test_files = Dir['{test/**/*}']
13
14
  spec.summary = "manage members' karma"
14
15
  spec.homepage = 'https://github.com/hkdnet/ruboty-karma'
15
16
  spec.license = 'MIT'
16
17
 
17
18
  spec.require_paths = ['lib']
18
-
19
19
  spec.add_dependency 'ruboty'
20
20
  spec.add_development_dependency 'bundler', '~> 1.10'
21
21
  spec.add_development_dependency 'rake', '~> 10.0'
22
+ spec.add_development_dependency 'minitest'
23
+ spec.add_development_dependency 'minitest-power_assert'
22
24
  end
@@ -0,0 +1,63 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest-power_assert'
3
+ require 'ruboty/karma'
4
+
5
+ describe Ruboty::Handlers::Karma do
6
+ class Ruboty::Handlers::Karma
7
+ def self.increment_pattern
8
+ INCREMENT_PATTERN
9
+ end
10
+
11
+ def self.delete_pattern
12
+ DELETE_PATTERN
13
+ end
14
+ end
15
+
16
+ describe 'INCREMENT_PATTERN' do
17
+ pattern = Ruboty::Handlers::Karma.increment_pattern
18
+ it "should match '@hoge ++' -> hoge" do
19
+ match = pattern.match('@hoge ++')
20
+ assert { !match.nil? }
21
+ assert { match['name'] == 'hoge' }
22
+ end
23
+ it "should match '@hoge: ++' -> hoge" do
24
+ match = pattern.match('@hoge: ++')
25
+ assert { !match.nil? }
26
+ assert { match['name'] == 'hoge' }
27
+ end
28
+ it "should match 'hoge ++' -> hoge" do
29
+ match = pattern.match('hoge ++')
30
+ assert { !match.nil? }
31
+ assert { match['name'] == 'hoge' }
32
+ end
33
+ it "should match 'hoge: ++' -> hoge" do
34
+ match = pattern.match('hoge: ++')
35
+ assert { !match.nil? }
36
+ assert { match['name'] == 'hoge' }
37
+ end
38
+ end
39
+
40
+ describe 'DELETE_PATTERN' do
41
+ pattern = Ruboty::Handlers::Karma.delete_pattern
42
+ it "should match 'delete karma @hoge' -> hoge" do
43
+ match = pattern.match('delete karma @hoge')
44
+ assert { !match.nil? }
45
+ assert { match['name'] == 'hoge' }
46
+ end
47
+ it "should match 'delete karma @hoge:' -> hoge" do
48
+ match = pattern.match('delete karma @hoge:')
49
+ assert { !match.nil? }
50
+ assert { match['name'] == 'hoge' }
51
+ end
52
+ it "should match 'delete karma hoge' -> hoge" do
53
+ match = pattern.match('delete karma hoge')
54
+ assert { !match.nil? }
55
+ assert { match['name'] == 'hoge' }
56
+ end
57
+ it "should match 'delete karma hoge:' -> hoge" do
58
+ match = pattern.match('delete karma hoge:')
59
+ assert { !match.nil? }
60
+ assert { match['name'] == 'hoge' }
61
+ end
62
+ end
63
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruboty-karma
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - hkdnet
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-power_assert
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description:
56
84
  email:
57
85
  - hkdnet@users.noreply.github.com
@@ -65,10 +93,12 @@ files:
65
93
  - README.md
66
94
  - Rakefile
67
95
  - lib/ruboty/karma.rb
96
+ - lib/ruboty/karma/actions/delete.rb
68
97
  - lib/ruboty/karma/actions/increase.rb
69
98
  - lib/ruboty/karma/actions/list.rb
70
99
  - lib/ruboty/karma/version.rb
71
100
  - ruboty-karma.gemspec
101
+ - test/ruboty/karma_test.rb
72
102
  homepage: https://github.com/hkdnet/ruboty-karma
73
103
  licenses:
74
104
  - MIT
@@ -93,4 +123,5 @@ rubygems_version: 2.4.5.1
93
123
  signing_key:
94
124
  specification_version: 4
95
125
  summary: manage members' karma
96
- test_files: []
126
+ test_files:
127
+ - test/ruboty/karma_test.rb