cinch-test 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
data/Gemfile CHANGED
@@ -1,8 +1,3 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
- gem 'minitest'
5
- gem 'wrong'
6
- gem 'rake'
7
- gem 'rr'
8
- gem 'debugger'
@@ -0,0 +1,15 @@
1
+ # Cinch::Test
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/cinch-test.png)](http://badge.fury.io/rb/cinch-test)
4
+ [![Dependency Status](https://gemnasium.com/bhaberer/cinch-test.png)](https://gemnasium.com/bhaberer/cinch-test)
5
+ [![Build Status](https://travis-ci.org/bhaberer/cinch-test.png?branch=master)](https://travis-ci.org/bhaberer/cinch-test)
6
+ [![Coverage Status](https://coveralls.io/repos/bhaberer/cinch-test/badge.png?branch=master)](https://coveralls.io/r/bhaberer/cinch-test?branch=master)
7
+ [![Code Climate](https://codeclimate.com/github/bhaberer/cinch-test.png)](https://codeclimate.com/github/bhaberer/cinch-test)
8
+
9
+ ## Usage
10
+
11
+ 1. `require 'cinch/test'` and include the module `Cinch::Test` in your test scope
12
+ 2. Make a bot with `make_bot(plugin, plugin_opts)` (you can pass a block to further configure the bot)
13
+ 3. Make a message with `make_message(bot, 'message text')`
14
+ 4. Stub things out on the message as you like, then collect all the replies
15
+ with `get_replies(message)`
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.test_files = Dir.glob('spec/**/*_spec.rb')
6
+ t.libs.push 'spec'
7
+ end
8
+
9
+ task :default => :test
@@ -1,17 +1,29 @@
1
- require './lib/cinch/test/version'
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'cinch/test/version'
2
5
 
3
- Gem::Specification.new do |s|
4
- s.name = "cinch-test"
5
- s.version = Cinch::Test.version
6
- s.authors = ["Jay Adkisson"]
7
- s.email = ["jay@jayferd.us"]
8
- s.summary = "utility methods for testing Cinch bots"
9
- s.description = <<-desc.strip.gsub(/\s+/, ' ')
10
- A collection of utility methods for testing Cinch bots
11
- desc
12
- s.homepage = "http://github.com/jayferd/cinch-test"
13
- s.rubyforge_project = "cinch-test"
14
- s.files = Dir['Gemfile', 'cinch-test.gemspec', 'lib/**/*.rb']
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "cinch-test"
8
+ gem.version = Cinch::Test::VERSION
9
+ gem.authors = ["Jay Adkisson", "Brian Haberer"]
10
+ gem.email = ["jay@jayferd.us"]
11
+ gem.summary = %q{Helpers for testing Cinch Plugins}
12
+ gem.description = %q{A collection of utility methods, mocks and methods for testing Cinch plugins}
13
+ gem.homepage = "http://github.com/jayferd/cinch-test"
15
14
 
16
- s.add_dependency 'cinch'
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency 'rake'
21
+ gem.add_development_dependency 'coveralls'
22
+ gem.add_development_dependency 'minitest'
23
+ gem.add_development_dependency 'wrong'
24
+ gem.add_development_dependency 'rake'
25
+ gem.add_development_dependency 'rr'
26
+ gem.add_development_dependency 'debugger'
27
+
28
+ gem.add_dependency 'cinch', '~> 2.0.0'
17
29
  end
@@ -1,10 +1,7 @@
1
1
  require 'cinch'
2
-
3
2
  require 'pathname'
4
3
  require 'thread'
5
4
 
6
- load Pathname.new(__FILE__).dirname.join('test/version.rb')
7
-
8
5
  module Cinch
9
6
  module Test
10
7
  class MockIRC < Cinch::IRC
@@ -41,19 +38,19 @@ module Cinch
41
38
  # override the message-parsing stuff
42
39
  super(nil, bot)
43
40
  @message = msg
44
- nick = opts.delete(:nick) { 'test' }
45
- @bot.user_list.find_ensured(nil, nick, nil)
41
+ @user = Cinch::User.new(opts.delete(:nick) { 'test' }, bot)
42
+ @channel = Cinch::Channel.new(opts.delete(:channel), bot) if opts.key?(:channel)
46
43
 
47
- @channel = opts.delete(:channel) { nil }
44
+ @bot.user_list.find_ensured(nil, @user.nick, nil)
48
45
  end
49
46
  end
50
47
 
51
- def make_bot(plugin, opts, &b)
48
+ def make_bot(plugin, opts = {}, &b)
52
49
  MockBot.new do
53
50
  configure do |c|
54
51
  c.nick = 'testbot'
55
52
  c.server = nil
56
- c.channels = []
53
+ c.channels = ['foo']
57
54
  c.plugins.plugins = [plugin]
58
55
  c.plugins.options[plugin] = opts
59
56
  c.reconnect = false
@@ -67,9 +64,21 @@ module Cinch
67
64
  MockMessage.new(text, bot, opts)
68
65
  end
69
66
 
70
- def send_message(message, event=:message)
67
+ def send_message(message, event = :message)
71
68
  handlers = message.bot.handlers
72
- handlers.dispatch(event, message)
69
+
70
+ # Deal with secondary event types
71
+ # See http://rubydoc.info/github/cinchrb/cinch/file/docs/events.md
72
+ events = [:catchall, event]
73
+
74
+ # If the message has a channel add the :channel event
75
+ events << :channel unless message.channel.nil?
76
+
77
+ # If the message is :private also trigger :message
78
+ events << :message if events.include?(:private)
79
+
80
+ # Dispatch each of the events to the handlers
81
+ events.each { |e| handlers.dispatch(e, message) }
73
82
 
74
83
  # join all of the freaking threads, like seriously
75
84
  # why is there no option to dispatch synchronously
@@ -84,7 +93,8 @@ module Cinch
84
93
  replies = []
85
94
 
86
95
  (class << message; self; end).class_eval do
87
- define_method :reply do |r|
96
+ define_method :reply do |r, prefix = false|
97
+ r = [self.user.nick, r].join(': ') if prefix
88
98
  mutex.synchronize { replies << r }
89
99
  end
90
100
  end
@@ -1,7 +1,5 @@
1
1
  module Cinch
2
2
  module Test
3
- def self.version
4
- '0.0.2'
5
- end
3
+ VERSION = '0.0.3'
6
4
  end
7
5
  end
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cinch::Test do
4
+ class MyPlugin
5
+ include Cinch::Plugin
6
+
7
+ attr_reader :foo
8
+ def initialize(*)
9
+ super
10
+ @foo = config[:foo]
11
+ end
12
+
13
+ match /foo/, :method => :foo
14
+ def foo(m)
15
+ m.reply "foo: #{@foo}"
16
+ end
17
+
18
+ match /bar/, :method => :bar
19
+ def bar(m)
20
+ m.reply 'bar reply'
21
+ end
22
+
23
+ match /baz/, :method => :baz
24
+ def baz(m)
25
+ m.reply 'baz reply', true
26
+ end
27
+
28
+ listen_to :channel
29
+ def listen(m)
30
+ m.reply 'I listen'
31
+ end
32
+
33
+ match /trout/, :method => :action, :react_on => :action
34
+ def action(m)
35
+ m.reply 'I hate fish'
36
+ end
37
+ end
38
+
39
+ include Cinch::Test
40
+
41
+ it 'makes a test bot without a config' do
42
+ bot = make_bot(MyPlugin)
43
+ assert bot.is_a?(Cinch::Bot)
44
+ end
45
+
46
+ let(:bot) { make_bot(MyPlugin, :foo => 'foo_value') }
47
+
48
+ it 'makes a test bot with a config' do
49
+ assert bot.is_a?(Cinch::Bot)
50
+ end
51
+
52
+ it 'makes a bot with config values available to the plugin' do
53
+ message = make_message(bot, '!foo')
54
+ replies = get_replies(message)
55
+ assert replies == ['foo: foo_value']
56
+ end
57
+
58
+ describe '#make_message' do
59
+ let(:message) { make_message(bot, '!bar') }
60
+
61
+ it 'messages a test bot and gets a reply' do
62
+ replies = get_replies(message)
63
+ assert replies == ['bar reply']
64
+ end
65
+ end
66
+
67
+ describe '#make_message with reply' do
68
+ let(:message) { make_message(bot, '!baz') }
69
+
70
+ it 'messages a test bot and gets a prefixed reply' do
71
+ replies = get_replies(message)
72
+ assert replies == ['test: baz reply']
73
+ end
74
+ end
75
+
76
+ describe 'listeners' do
77
+ let(:message) { make_message(bot, 'blah blah blah', :channel => 'test') }
78
+
79
+ it 'messages a test bot and gets a prefixed reply' do
80
+ replies = get_replies(message)
81
+ assert replies == ['I listen']
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,11 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'cinch/test'
5
+ require 'minitest'
6
+ require 'minitest/autorun'
7
+ require 'wrong/adapters/minitest'
8
+ require 'rr'
9
+
10
+ Wrong.config[:color] = true
11
+
metadata CHANGED
@@ -1,25 +1,122 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cinch-test
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jay Adkisson
9
+ - Brian Haberer
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-04-25 00:00:00.000000000 Z
13
+ date: 2013-06-29 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
- name: cinch
16
+ name: rake
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
20
  - - ! '>='
20
21
  - !ruby/object:Gem::Version
21
22
  version: '0'
22
- type: :runtime
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: coveralls
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: minitest
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: wrong
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: rake
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :development
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rr
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: debugger
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
23
120
  prerelease: false
24
121
  version_requirements: !ruby/object:Gem::Requirement
25
122
  none: false
@@ -27,17 +124,40 @@ dependencies:
27
124
  - - ! '>='
28
125
  - !ruby/object:Gem::Version
29
126
  version: '0'
30
- description: A collection of utility methods for testing Cinch bots
127
+ - !ruby/object:Gem::Dependency
128
+ name: cinch
129
+ requirement: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ~>
133
+ - !ruby/object:Gem::Version
134
+ version: 2.0.0
135
+ type: :runtime
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ version: 2.0.0
143
+ description: A collection of utility methods, mocks and methods for testing Cinch
144
+ plugins
31
145
  email:
32
146
  - jay@jayferd.us
33
147
  executables: []
34
148
  extensions: []
35
149
  extra_rdoc_files: []
36
150
  files:
151
+ - .gitignore
152
+ - .travis.yml
37
153
  - Gemfile
154
+ - README.md
155
+ - Rakefile
38
156
  - cinch-test.gemspec
39
- - lib/cinch/test/version.rb
40
157
  - lib/cinch/test.rb
158
+ - lib/cinch/test/version.rb
159
+ - spec/cinch_test_spec.rb
160
+ - spec/spec_helper.rb
41
161
  homepage: http://github.com/jayferd/cinch-test
42
162
  licenses: []
43
163
  post_install_message:
@@ -57,10 +177,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
177
  - !ruby/object:Gem::Version
58
178
  version: '0'
59
179
  requirements: []
60
- rubyforge_project: cinch-test
61
- rubygems_version: 1.8.23
180
+ rubyforge_project:
181
+ rubygems_version: 1.8.24
62
182
  signing_key:
63
183
  specification_version: 3
64
- summary: utility methods for testing Cinch bots
65
- test_files: []
184
+ summary: Helpers for testing Cinch Plugins
185
+ test_files:
186
+ - spec/cinch_test_spec.rb
187
+ - spec/spec_helper.rb
66
188
  has_rdoc: