cinch 0.3.5 → 1.0.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.
- data/LICENSE +20 -0
- data/README.md +192 -0
- data/Rakefile +53 -43
- data/examples/basic/autovoice.rb +32 -0
- data/examples/basic/google.rb +35 -0
- data/examples/basic/hello.rb +15 -0
- data/examples/basic/join_part.rb +38 -0
- data/examples/basic/memo.rb +39 -0
- data/examples/basic/msg.rb +16 -0
- data/examples/basic/seen.rb +36 -0
- data/examples/basic/urban_dict.rb +35 -0
- data/examples/basic/url_shorten.rb +35 -0
- data/examples/plugins/autovoice.rb +40 -0
- data/examples/plugins/custom_prefix.rb +23 -0
- data/examples/plugins/google.rb +37 -0
- data/examples/plugins/hello.rb +22 -0
- data/examples/plugins/join_part.rb +42 -0
- data/examples/plugins/memo.rb +50 -0
- data/examples/plugins/msg.rb +22 -0
- data/examples/plugins/multiple_matches.rb +41 -0
- data/examples/plugins/seen.rb +45 -0
- data/examples/plugins/urban_dict.rb +30 -0
- data/examples/plugins/url_shorten.rb +32 -0
- data/lib/cinch.rb +7 -20
- data/lib/cinch/ban.rb +41 -0
- data/lib/cinch/bot.rb +479 -0
- data/lib/cinch/callback.rb +11 -0
- data/lib/cinch/channel.rb +419 -0
- data/lib/cinch/constants.rb +369 -0
- data/lib/cinch/exceptions.rb +25 -0
- data/lib/cinch/helpers.rb +21 -0
- data/lib/cinch/irc.rb +344 -38
- data/lib/cinch/isupport.rb +96 -0
- data/lib/cinch/logger/formatted_logger.rb +80 -0
- data/lib/cinch/logger/logger.rb +44 -0
- data/lib/cinch/logger/null_logger.rb +18 -0
- data/lib/cinch/mask.rb +46 -0
- data/lib/cinch/message.rb +183 -0
- data/lib/cinch/message_queue.rb +62 -0
- data/lib/cinch/plugin.rb +205 -0
- data/lib/cinch/rubyext/infinity.rb +1 -0
- data/lib/cinch/rubyext/module.rb +18 -0
- data/lib/cinch/rubyext/queue.rb +19 -0
- data/lib/cinch/rubyext/string.rb +24 -0
- data/lib/cinch/syncable.rb +55 -0
- data/lib/cinch/user.rb +325 -0
- data/spec/bot_spec.rb +5 -0
- data/spec/channel_spec.rb +5 -0
- data/spec/cinch_spec.rb +5 -0
- data/spec/irc_spec.rb +5 -0
- data/spec/message_spec.rb +5 -0
- data/spec/plugin_spec.rb +5 -0
- data/spec/{helper.rb → spec_helper.rb} +0 -0
- data/spec/user_spec.rb +5 -0
- metadata +69 -51
- data/README.rdoc +0 -195
- data/examples/autovoice.rb +0 -32
- data/examples/custom_patterns.rb +0 -19
- data/examples/custom_prefix.rb +0 -25
- data/examples/google.rb +0 -31
- data/examples/hello.rb +0 -13
- data/examples/join_part.rb +0 -26
- data/examples/memo.rb +0 -40
- data/examples/msg.rb +0 -14
- data/examples/named-param-types.rb +0 -19
- data/examples/seen.rb +0 -41
- data/examples/urban_dict.rb +0 -31
- data/examples/url_shorten.rb +0 -34
- data/lib/cinch/base.rb +0 -368
- data/lib/cinch/irc/message.rb +0 -135
- data/lib/cinch/irc/parser.rb +0 -141
- data/lib/cinch/irc/socket.rb +0 -329
- data/lib/cinch/names.rb +0 -54
- data/lib/cinch/rules.rb +0 -171
- data/spec/base_spec.rb +0 -94
- data/spec/irc/helper.rb +0 -8
- data/spec/irc/message_spec.rb +0 -61
- data/spec/irc/parser_spec.rb +0 -103
- data/spec/irc/socket_spec.rb +0 -90
- data/spec/names_spec.rb +0 -393
- data/spec/options_spec.rb +0 -45
- data/spec/rules_spec.rb +0 -109
data/spec/irc/socket_spec.rb
DELETED
@@ -1,90 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/helper'
|
2
|
-
|
3
|
-
class Cinch::IRC::Socket
|
4
|
-
def write(data)
|
5
|
-
return data
|
6
|
-
end
|
7
|
-
|
8
|
-
def read(chompstr="\r\n")
|
9
|
-
str = "foo bar baz\r\n"
|
10
|
-
str.chomp!(chompstr) if chompstr
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
commands = [
|
15
|
-
[:pass, %w(foobar), "PASS foobar"],
|
16
|
-
[:nick, %(ipsum), "NICK ipsum"],
|
17
|
-
[:user, ["guest", 0, '*', "real name"], "USER guest 0 * :real name"],
|
18
|
-
[:oper, %w(foo bar), "OPER foo bar"],
|
19
|
-
[:mode, %w(#foo +v bar), "MODE #foo +v bar"],
|
20
|
-
[:quit, %w(goodbye), "QUIT :goodbye"],
|
21
|
-
[:join, %w(#mychan), "JOIN #mychan"],
|
22
|
-
[:part, %w(#mychan), "PART #mychan"],
|
23
|
-
[:part, %w(#mychan cya!), "PART #mychan :cya!", "with part message"],
|
24
|
-
[:topic, %w(#mychan newtopic), "TOPIC #mychan :newtopic"],
|
25
|
-
[:names, %w(#foo #bar), "NAMES #foo,#bar"],
|
26
|
-
[:list, %w(#foo #bar), "LIST #foo,#bar"],
|
27
|
-
[:invite, %w(foo #mychan), "INVITE foo #mychan"],
|
28
|
-
[:kick, %w(#chan villian), "KICK #chan villian"],
|
29
|
-
[:kick, %w(#chan villian gtfo!), "KICK #chan villian :gtfo!", "with kick reason"],
|
30
|
-
[:privmsg, ['#chan', 'foo bar baz'], "PRIVMSG #chan :foo bar baz"],
|
31
|
-
[:notice, ['#chan', 'foo bar baz'], "NOTICE #chan :foo bar baz"],
|
32
|
-
[:motd, %w(someserver), "MOTD someserver"],
|
33
|
-
[:version, %w(anotherserver), "VERSION anotherserver"],
|
34
|
-
[:stats, %w(m server), "STATS m server"],
|
35
|
-
[:time, %w(irc.someserver.net), "TIME irc.someserver.net"],
|
36
|
-
[:info, %w(foobar), "INFO foobar"],
|
37
|
-
[:squery, %w(irchelp HELPME), "SQUERY irchelp :HELPME"],
|
38
|
-
[:who, %w(*.com o), "WHO *.com o"],
|
39
|
-
[:whois, %w(foo.org user), "WHOIS foo.org user"],
|
40
|
-
[:whowas, %w(foo.org user), "WHOWAS foo.org user"],
|
41
|
-
[:kill, ['badperson', 'get out!'], "KILL badperson :get out!"],
|
42
|
-
[:ping, %w(010123444), "PING 010123444"],
|
43
|
-
[:pong, %w(irc.foobar.org), "PONG irc.foobar.org"],
|
44
|
-
[:away, [], "AWAY"],
|
45
|
-
[:away, ['gone for lunch'], "AWAY :gone for lunch"],
|
46
|
-
[:users, %w(irc.foobar.org), "USERS irc.foobar.org"],
|
47
|
-
[:userhost, %w(foo bar baz), "USERHOST foo bar baz"],
|
48
|
-
]
|
49
|
-
|
50
|
-
describe "Cinch::IRC::Socket" do
|
51
|
-
before do
|
52
|
-
@irc = Cinch::IRC::Socket.new('irc.myserver.net')
|
53
|
-
end
|
54
|
-
|
55
|
-
describe "::new" do
|
56
|
-
it "should return an Cinch::IRC::Socket" do
|
57
|
-
@irc.class.should == Cinch::IRC::Socket
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should default to port 6667" do
|
61
|
-
@irc.port.should == 6667
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should not automatically connect" do
|
65
|
-
@irc.connected.should == false
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should set socket instance as nil" do
|
69
|
-
@irc.socket.should == nil
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe "#read" do
|
74
|
-
it "should chomp CRLF by default" do
|
75
|
-
@irc.read.should == "foo bar baz"
|
76
|
-
@irc.read.should_not == "foo bar baz\r\n"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
commands.each do |requirements|
|
81
|
-
meth, params, pass, extra = *requirements
|
82
|
-
describe "##{meth}" do
|
83
|
-
it "should send a #{meth.to_s.upcase} command #{extra if extra}" do
|
84
|
-
@irc.send(meth, *params).should == pass
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
90
|
-
|
data/spec/names_spec.rb
DELETED
@@ -1,393 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/helper'
|
2
|
-
|
3
|
-
describe Cinch::Base do
|
4
|
-
before :each do
|
5
|
-
@bot = Cinch::Base.new
|
6
|
-
end
|
7
|
-
|
8
|
-
it 'should be able to track names' do
|
9
|
-
@bot.should respond_to(:track_names)
|
10
|
-
end
|
11
|
-
|
12
|
-
describe 'when tracking names' do
|
13
|
-
before :each do
|
14
|
-
@bot.track_names
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'should indicate it is tracking names' do
|
18
|
-
@bot.tracking_names?.should == true
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should provide access to the stored channel names' do
|
22
|
-
@bot.should respond_to(:channel_names)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'should initialize the stored channel names as a hash' do
|
26
|
-
@bot.channel_names.should == {}
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should provide a join listener' do
|
30
|
-
@bot.listeners[:join].should_not be_nil
|
31
|
-
end
|
32
|
-
|
33
|
-
describe 'join listener' do
|
34
|
-
before :each do
|
35
|
-
@listener = @bot.listeners[:join].first
|
36
|
-
@message = Struct.new(:nick, :channel).new('someguy', '#somechan')
|
37
|
-
|
38
|
-
@bot.instance_variable_set('@channel_names', { @message.channel => [] })
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'should be callable' do
|
42
|
-
@listener.should respond_to(:call)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should add the joiner's nick to the channel name list" do
|
46
|
-
@listener.call(@message)
|
47
|
-
@bot.channel_names[@message.channel].should == [@message.nick]
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should not remove any already-present nicks in the channel name list" do
|
51
|
-
nicks = %w[tom mary joe]
|
52
|
-
@bot.instance_variable_set('@channel_names', { @message.channel => nicks.dup })
|
53
|
-
@listener.call(@message)
|
54
|
-
@bot.channel_names[@message.channel].sort.should == (nicks + [@message.nick]).sort
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'should not affect any other channel name lists' do
|
58
|
-
channel_names = { '#otherchan' => %w[some people], @message.channel => [] }
|
59
|
-
@bot.instance_variable_set('@channel_names', channel_names.dup)
|
60
|
-
@listener.call(@message)
|
61
|
-
@bot.channel_names.should == { '#otherchan' => %w[some people], @message.channel => [@message.nick] }
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'should handle the channel names not already tracking the channel' do
|
65
|
-
@bot.instance_variable_set('@channel_names', {})
|
66
|
-
@listener.call(@message)
|
67
|
-
@bot.channel_names[@message.channel].should == [@message.nick]
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'should not issue a names command to the channel' do
|
71
|
-
@bot.should_receive(:names).never
|
72
|
-
@listener.call(@message)
|
73
|
-
end
|
74
|
-
|
75
|
-
describe 'and the joiner is the bot' do
|
76
|
-
before :each do
|
77
|
-
@message.nick = @bot.nick
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'should not add the nick to the name list' do
|
81
|
-
@listener.call(@message)
|
82
|
-
@bot.channel_names[@message.channel].should_not include(@message.nick)
|
83
|
-
end
|
84
|
-
|
85
|
-
it 'should issue a names command to the channel' do
|
86
|
-
@bot.should_receive(:names).with(@message.channel)
|
87
|
-
@listener.call(@message)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'should provide a names listener' do
|
93
|
-
@bot.listeners[:'353'].should_not be_nil
|
94
|
-
end
|
95
|
-
|
96
|
-
describe 'names listener' do
|
97
|
-
before :each do
|
98
|
-
@listener = @bot.listeners[:'353'].first
|
99
|
-
@nick_text = 'cardroid admc cldwalker bmizerany'
|
100
|
-
@nicks = %w[cardroid admc cldwalker bmizerany]
|
101
|
-
@channel = '#github'
|
102
|
-
@message = Struct.new(:params, :text).new(['cardroid', '@', @channel, @nick_text], @nick_text)
|
103
|
-
end
|
104
|
-
|
105
|
-
it 'should be callable' do
|
106
|
-
@listener.should respond_to(:call)
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'should set the channel name list to the given nick list' do
|
110
|
-
@listener.call(@message)
|
111
|
-
@bot.channel_names[@channel].should == @nicks
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'should add the given nicks to an already-present channel name list' do
|
115
|
-
nicks = %w[other people already present]
|
116
|
-
@bot.instance_variable_set('@channel_names', { @channel => nicks.dup })
|
117
|
-
|
118
|
-
@listener.call(@message)
|
119
|
-
@bot.channel_names[@channel].should == (nicks + @nicks)
|
120
|
-
end
|
121
|
-
|
122
|
-
it 'should not affect any other channel name lists' do
|
123
|
-
channel_names = { '#otherchan' => %w[some people], @channel => [] }
|
124
|
-
@bot.instance_variable_set('@channel_names', channel_names.dup)
|
125
|
-
@listener.call(@message)
|
126
|
-
@bot.channel_names.should == { '#otherchan' => %w[some people], @channel => @nicks }
|
127
|
-
end
|
128
|
-
|
129
|
-
it 'should strip extra marking characters from the given nick list' do
|
130
|
-
nick_text = 'cardroid admc cldwalker bmizerany programble @luckiestmonkey @tekkub binjured ceej'
|
131
|
-
nicks = %w[cardroid admc cldwalker bmizerany programble luckiestmonkey tekkub binjured ceej]
|
132
|
-
@message.params[-1] = nick_text
|
133
|
-
@message.text = nick_text
|
134
|
-
|
135
|
-
@listener.call(@message)
|
136
|
-
@bot.channel_names[@channel].should == nicks
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
it 'should provide a part listener' do
|
141
|
-
@bot.listeners[:part].should_not be_nil
|
142
|
-
end
|
143
|
-
|
144
|
-
describe 'part listener' do
|
145
|
-
before :each do
|
146
|
-
@listener = @bot.listeners[:part].first
|
147
|
-
@message = Struct.new(:nick, :channel).new('someguy', '#somechan')
|
148
|
-
|
149
|
-
@bot.instance_variable_set('@channel_names', { @message.channel => [] })
|
150
|
-
end
|
151
|
-
|
152
|
-
it 'should be callable' do
|
153
|
-
@listener.should respond_to(:call)
|
154
|
-
end
|
155
|
-
|
156
|
-
it "should remove the parter's nick from the channel name list" do
|
157
|
-
@nicks = %w[bunch of people]
|
158
|
-
@bot.instance_variable_set('@channel_names', { @message.channel => (@nicks + [@message.nick]) })
|
159
|
-
|
160
|
-
@listener.call(@message)
|
161
|
-
@bot.channel_names[@message.channel].should == @nicks
|
162
|
-
end
|
163
|
-
|
164
|
-
it "should remove the parter's nick from the channel name list no matter where or how many times it occurs" do
|
165
|
-
@nicks = %w[bunch of people]
|
166
|
-
@bot.instance_variable_set('@channel_names', { @message.channel => @nicks.join(" #{@message.nick} ").split })
|
167
|
-
|
168
|
-
@listener.call(@message)
|
169
|
-
@bot.channel_names[@message.channel].should == @nicks
|
170
|
-
end
|
171
|
-
|
172
|
-
it 'should not affect any other channel name lists' do
|
173
|
-
@nicks = %w[bunch of people]
|
174
|
-
channel_names = { '#otherchan' => %w[some people], @message.channel => (@nicks + [@message.nick]) }
|
175
|
-
@bot.instance_variable_set('@channel_names', channel_names.dup)
|
176
|
-
@listener.call(@message)
|
177
|
-
@bot.channel_names.should == { '#otherchan' => %w[some people], @message.channel => @nicks }
|
178
|
-
end
|
179
|
-
|
180
|
-
it 'should handle the channel names not already tracking the channel' do
|
181
|
-
@bot.instance_variable_set('@channel_names', {})
|
182
|
-
@listener.call(@message)
|
183
|
-
@bot.channel_names[@message.channel].should == []
|
184
|
-
end
|
185
|
-
|
186
|
-
it 'should handle the nick not appearing on the list' do
|
187
|
-
@nicks = %w[bunch of people]
|
188
|
-
@bot.instance_variable_set('@channel_names', { @message.channel => @nicks.dup })
|
189
|
-
|
190
|
-
@listener.call(@message)
|
191
|
-
@bot.channel_names[@message.channel].should == @nicks
|
192
|
-
end
|
193
|
-
|
194
|
-
describe 'and the parter is the bot' do
|
195
|
-
before :each do
|
196
|
-
@message.nick = @bot.nick
|
197
|
-
end
|
198
|
-
|
199
|
-
it 'should completely remove the channel from the names hash' do
|
200
|
-
channel_names = { '#otherchan' => %w[some people], @message.channel => %w[bunch of people] }
|
201
|
-
@bot.instance_variable_set('@channel_names', channel_names.dup)
|
202
|
-
@listener.call(@message)
|
203
|
-
@bot.channel_names.should == { '#otherchan' => %w[some people] }
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
it 'should provide a quit listener' do
|
209
|
-
@bot.listeners[:quit].should_not be_nil
|
210
|
-
end
|
211
|
-
|
212
|
-
describe 'quit listener' do
|
213
|
-
before :each do
|
214
|
-
@listener = @bot.listeners[:quit].first
|
215
|
-
@message = Struct.new(:nick).new('someguy')
|
216
|
-
@channel = '#somechan'
|
217
|
-
@nicks = %w[bunch of people]
|
218
|
-
@other_chan = '#otherchan'
|
219
|
-
@other_nicks = %w[other people here]
|
220
|
-
end
|
221
|
-
|
222
|
-
it 'should be callable' do
|
223
|
-
@listener.should respond_to(:call)
|
224
|
-
end
|
225
|
-
|
226
|
-
it "should remove the quitter's nick from every channel name list" do
|
227
|
-
@bot.instance_variable_set('@channel_names', { @channel => (@nicks + [@message.nick]), @other_chan => (@other_nicks + [@message.nick]) })
|
228
|
-
|
229
|
-
@listener.call(@message)
|
230
|
-
@bot.channel_names.should == { @channel => @nicks, @other_chan => @other_nicks }
|
231
|
-
end
|
232
|
-
|
233
|
-
it "should remove the quitter's nick from every channel name list no matter where or how many times it occurs" do
|
234
|
-
@bot.instance_variable_set('@channel_names', { @channel => @nicks.join(" #{@message.nick} ").split, @other_chan => @other_nicks.join(" #{@message.nick} ").split })
|
235
|
-
|
236
|
-
@listener.call(@message)
|
237
|
-
@bot.channel_names.should == { @channel => @nicks, @other_chan => @other_nicks }
|
238
|
-
end
|
239
|
-
|
240
|
-
it 'should not affect any other channel name lists' do
|
241
|
-
@bot.instance_variable_set('@channel_names', { @channel => (@nicks + [@message.nick]), @other_chan => @other_nicks.dup })
|
242
|
-
|
243
|
-
@listener.call(@message)
|
244
|
-
@bot.channel_names.should == { @channel => @nicks, @other_chan => @other_nicks }
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
it 'should provide a kill listener' do
|
249
|
-
@bot.listeners[:kill].should_not be_nil
|
250
|
-
end
|
251
|
-
|
252
|
-
describe 'kill listener' do
|
253
|
-
before :each do
|
254
|
-
@listener = @bot.listeners[:kill].first
|
255
|
-
@message = Struct.new(:nick).new('someguy')
|
256
|
-
@channel = '#somechan'
|
257
|
-
@nicks = %w[bunch of people]
|
258
|
-
@other_chan = '#otherchan'
|
259
|
-
@other_nicks = %w[other people here]
|
260
|
-
end
|
261
|
-
|
262
|
-
it 'should be callable' do
|
263
|
-
@listener.should respond_to(:call)
|
264
|
-
end
|
265
|
-
|
266
|
-
it 'should remove the killed nick from every channel name list' do
|
267
|
-
@bot.instance_variable_set('@channel_names', { @channel => (@nicks + [@message.nick]), @other_chan => (@other_nicks + [@message.nick]) })
|
268
|
-
|
269
|
-
@listener.call(@message)
|
270
|
-
@bot.channel_names.should == { @channel => @nicks, @other_chan => @other_nicks }
|
271
|
-
end
|
272
|
-
|
273
|
-
it 'should remove the killed nick from every channel name list no matter where or how many times it occurs' do
|
274
|
-
@bot.instance_variable_set('@channel_names', { @channel => @nicks.join(" #{@message.nick} ").split, @other_chan => @other_nicks.join(" #{@message.nick} ").split })
|
275
|
-
|
276
|
-
@listener.call(@message)
|
277
|
-
@bot.channel_names.should == { @channel => @nicks, @other_chan => @other_nicks }
|
278
|
-
end
|
279
|
-
|
280
|
-
it 'should not affect any other channel name lists' do
|
281
|
-
@bot.instance_variable_set('@channel_names', { @channel => (@nicks + [@message.nick]), @other_chan => @other_nicks.dup })
|
282
|
-
|
283
|
-
@listener.call(@message)
|
284
|
-
@bot.channel_names.should == { @channel => @nicks, @other_chan => @other_nicks }
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
it 'should provide a nick listener' do
|
289
|
-
@bot.listeners[:nick].should_not be_nil
|
290
|
-
end
|
291
|
-
|
292
|
-
describe 'nick listener' do
|
293
|
-
before :each do
|
294
|
-
@listener = @bot.listeners[:nick].first
|
295
|
-
@message = Struct.new(:nick, :recipient).new('someguy', 'someotherguy')
|
296
|
-
@channel = '#somechan'
|
297
|
-
@nicks = %w[bunch of people]
|
298
|
-
@other_chan = '#otherchan'
|
299
|
-
@other_nicks = %w[other people here]
|
300
|
-
end
|
301
|
-
|
302
|
-
it 'should be callable' do
|
303
|
-
@listener.should respond_to(:call)
|
304
|
-
end
|
305
|
-
|
306
|
-
it 'should replace the changed nick in every channel name list' do
|
307
|
-
@bot.instance_variable_set('@channel_names', { @channel => (@nicks + [@message.nick]), @other_chan => (@other_nicks + [@message.nick]) })
|
308
|
-
|
309
|
-
@listener.call(@message)
|
310
|
-
@bot.channel_names.should == { @channel => (@nicks + [@message.recipient]), @other_chan => (@other_nicks + [@message.recipient]) }
|
311
|
-
end
|
312
|
-
|
313
|
-
it 'should replace the the changed nick in every channel name list no matter where or how many times it occurs' do
|
314
|
-
@bot.instance_variable_set('@channel_names', { @channel => @nicks.join(" #{@message.nick} ").split, @other_chan => @other_nicks.join(" #{@message.nick} ").split })
|
315
|
-
|
316
|
-
@listener.call(@message)
|
317
|
-
@bot.channel_names.should == { @channel => (@nicks + [@message.recipient]), @other_chan => (@other_nicks + [@message.recipient]) }
|
318
|
-
end
|
319
|
-
|
320
|
-
it 'should not affect any other channel name lists' do
|
321
|
-
@bot.instance_variable_set('@channel_names', { @channel => (@nicks + [@message.nick]), @other_chan => @other_nicks.dup })
|
322
|
-
|
323
|
-
@listener.call(@message)
|
324
|
-
@bot.channel_names.should == { @channel => (@nicks + [@message.recipient]), @other_chan => @other_nicks }
|
325
|
-
end
|
326
|
-
end
|
327
|
-
|
328
|
-
it 'should not interfere with other bots' do
|
329
|
-
@bot_one = Cinch::Base.new
|
330
|
-
@bot_two = Cinch::Base.new
|
331
|
-
|
332
|
-
@bot_one.track_names
|
333
|
-
@bot_two.track_names
|
334
|
-
|
335
|
-
@message = Struct.new(:nick, :channel)
|
336
|
-
@message_one = @message.new('someguy', '#somechan')
|
337
|
-
@message_two = @message.new('otherguy', '#otherchan')
|
338
|
-
|
339
|
-
@bot_one.listeners[:join].first.call(@message_one)
|
340
|
-
@bot_two.listeners[:join].first.call(@message_two)
|
341
|
-
|
342
|
-
@bot_one.channel_names.should == { @message_one.channel => [@message_one.nick] }
|
343
|
-
@bot_two.channel_names.should == { @message_two.channel => [@message_two.nick] }
|
344
|
-
end
|
345
|
-
|
346
|
-
it 'should not re-add listeners when asked to track names again' do
|
347
|
-
@bot.track_names
|
348
|
-
@bot.listeners[:join].length.should == 1
|
349
|
-
end
|
350
|
-
|
351
|
-
it 'should not reset the channel name list when asked to track names again' do
|
352
|
-
@message = Struct.new(:nick, :channel).new('someguy', '#somechan')
|
353
|
-
@bot.listeners[:join].first.call(@message)
|
354
|
-
|
355
|
-
@bot.track_names
|
356
|
-
@bot.channel_names.should == { @message.channel => [@message.nick] }
|
357
|
-
end
|
358
|
-
end
|
359
|
-
|
360
|
-
describe 'before tracking names' do
|
361
|
-
it 'should indicate it is not tracking names' do
|
362
|
-
@bot.tracking_names?.should == false
|
363
|
-
end
|
364
|
-
|
365
|
-
it 'should have no channel name list' do
|
366
|
-
@bot.channel_names.should be_nil
|
367
|
-
end
|
368
|
-
|
369
|
-
it 'should have no join listener' do
|
370
|
-
@bot.listeners[:join].should be_nil
|
371
|
-
end
|
372
|
-
|
373
|
-
it 'should have no names listener' do
|
374
|
-
@bot.listeners[:'353'].should be_nil
|
375
|
-
end
|
376
|
-
|
377
|
-
it 'should have no part listener' do
|
378
|
-
@bot.listeners[:part].should be_nil
|
379
|
-
end
|
380
|
-
|
381
|
-
it 'should have no quit listener' do
|
382
|
-
@bot.listeners[:quit].should be_nil
|
383
|
-
end
|
384
|
-
|
385
|
-
it 'should have no kill listener' do
|
386
|
-
@bot.listeners[:kill].should be_nil
|
387
|
-
end
|
388
|
-
|
389
|
-
it 'should have no nick listener' do
|
390
|
-
@bot.listeners[:nick].should be_nil
|
391
|
-
end
|
392
|
-
end
|
393
|
-
end
|