ruboty-karma 0.2.2 → 0.3.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: 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