cinch-test 0.0.2 → 0.0.3

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.
@@ -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: