|
@@ -161,4 +161,39 @@ internal class ChannelStateHandlerTest {
|
161
|
161
|
assertTrue("acidburn" in channelStateMap["#chat"]!!.users)
|
162
|
162
|
}
|
163
|
163
|
|
|
164
|
+
|
|
165
|
+ @Test
|
|
166
|
+ fun `ChannelStateHandler raises ChannelQuit event for each channel a user quits from`() = runBlocking {
|
|
167
|
+ with (ChannelState("#thegibson") { CaseMapping.Rfc }) {
|
|
168
|
+ users += ChannelUser("ZeroCool")
|
|
169
|
+ channelStateMap += this
|
|
170
|
+ }
|
|
171
|
+
|
|
172
|
+ with (ChannelState("#dumpsterdiving") { CaseMapping.Rfc }) {
|
|
173
|
+ users += ChannelUser("ZeroCool")
|
|
174
|
+ channelStateMap += this
|
|
175
|
+ }
|
|
176
|
+
|
|
177
|
+ with (ChannelState("#chat") { CaseMapping.Rfc }) {
|
|
178
|
+ users += ChannelUser("AcidBurn")
|
|
179
|
+ channelStateMap += this
|
|
180
|
+ }
|
|
181
|
+
|
|
182
|
+ val events = handler.processEvent(ircClient, UserQuit(TestConstants.time, User("zerocool", "dade", "root.localhost"), "Hack the planet!"))
|
|
183
|
+
|
|
184
|
+ val names = mutableListOf<String>()
|
|
185
|
+ assertEquals(2, events.size)
|
|
186
|
+ events.forEach { event ->
|
|
187
|
+ (event as ChannelQuit).let {
|
|
188
|
+ assertEquals(TestConstants.time, it.time)
|
|
189
|
+ assertEquals("zerocool", it.user.nickname)
|
|
190
|
+ assertEquals("Hack the planet!", it.reason)
|
|
191
|
+ names.add(it.channel)
|
|
192
|
+ }
|
|
193
|
+ }
|
|
194
|
+
|
|
195
|
+ assertTrue("#thegibson" in names)
|
|
196
|
+ assertTrue("#dumpsterdiving" in names)
|
|
197
|
+ }
|
|
198
|
+
|
164
|
199
|
}
|