|
@@ -260,5 +260,79 @@ internal class ChannelStateHandlerTest {
|
260
|
260
|
assertNull(channel.modes['h'])
|
261
|
261
|
}
|
262
|
262
|
|
|
263
|
+ @Test
|
|
264
|
+ fun `handles unprivileged user gaining new mode`() {
|
|
265
|
+ with (ChannelState("#thegibson") { CaseMapping.Rfc }) {
|
|
266
|
+ users += ChannelUser("ZeroCool")
|
|
267
|
+ channelStateMap += this
|
|
268
|
+ }
|
|
269
|
+
|
|
270
|
+ handler.processEvent(ircClient, ModeChanged(TestConstants.time, "#thegibson", "+o", arrayOf("zeroCool")))
|
|
271
|
+
|
|
272
|
+ assertEquals("o", channelStateMap["#thegibson"]?.users?.get("zeroCool")?.modes)
|
|
273
|
+ }
|
|
274
|
+
|
|
275
|
+ @Test
|
|
276
|
+ fun `handles privileged user gaining lesser mode`() {
|
|
277
|
+ with (ChannelState("#thegibson") { CaseMapping.Rfc }) {
|
|
278
|
+ users += ChannelUser("ZeroCool", "o")
|
|
279
|
+ channelStateMap += this
|
|
280
|
+ }
|
|
281
|
+
|
|
282
|
+ handler.processEvent(ircClient, ModeChanged(TestConstants.time, "#thegibson", "+v", arrayOf("zeroCool")))
|
|
283
|
+
|
|
284
|
+ assertEquals("ov", channelStateMap["#thegibson"]?.users?.get("zeroCool")?.modes)
|
|
285
|
+ }
|
|
286
|
+
|
|
287
|
+ @Test
|
|
288
|
+ fun `handles privileged user gaining greater mode`() {
|
|
289
|
+ with (ChannelState("#thegibson") { CaseMapping.Rfc }) {
|
|
290
|
+ users += ChannelUser("ZeroCool", "v")
|
|
291
|
+ channelStateMap += this
|
|
292
|
+ }
|
|
293
|
+
|
|
294
|
+ handler.processEvent(ircClient, ModeChanged(TestConstants.time, "#thegibson", "+o", arrayOf("zeroCool")))
|
|
295
|
+
|
|
296
|
+ assertEquals("ov", channelStateMap["#thegibson"]?.users?.get("zeroCool")?.modes)
|
|
297
|
+ }
|
|
298
|
+
|
|
299
|
+ @Test
|
|
300
|
+ fun `handles user gaining multiple modes`() {
|
|
301
|
+ with (ChannelState("#thegibson") { CaseMapping.Rfc }) {
|
|
302
|
+ users += ChannelUser("ZeroCool")
|
|
303
|
+ channelStateMap += this
|
|
304
|
+ }
|
|
305
|
+
|
|
306
|
+ handler.processEvent(ircClient, ModeChanged(TestConstants.time, "#thegibson", "+vo", arrayOf("zeroCool", "zeroCool")))
|
|
307
|
+
|
|
308
|
+ assertEquals("ov", channelStateMap["#thegibson"]?.users?.get("zeroCool")?.modes)
|
|
309
|
+ }
|
|
310
|
+
|
|
311
|
+ @Test
|
|
312
|
+ fun `handles user losing multiple modes`() {
|
|
313
|
+ with (ChannelState("#thegibson") { CaseMapping.Rfc }) {
|
|
314
|
+ users += ChannelUser("ZeroCool", "ov")
|
|
315
|
+ channelStateMap += this
|
|
316
|
+ }
|
|
317
|
+
|
|
318
|
+ handler.processEvent(ircClient, ModeChanged(TestConstants.time, "#thegibson", "-vo", arrayOf("zeroCool", "zeroCool")))
|
|
319
|
+
|
|
320
|
+ assertEquals("", channelStateMap["#thegibson"]?.users?.get("zeroCool")?.modes)
|
|
321
|
+ }
|
|
322
|
+
|
|
323
|
+ @Test
|
|
324
|
+ fun `handles mixture of user modes and normal modes`() {
|
|
325
|
+ with (ChannelState("#thegibson") { CaseMapping.Rfc }) {
|
|
326
|
+ users += ChannelUser("ZeroCool", "v")
|
|
327
|
+ channelStateMap += this
|
|
328
|
+ }
|
|
329
|
+ serverState.features[ServerFeature.ChannelModes] = arrayOf("ab", "cd", "ef", "gh")
|
|
330
|
+
|
|
331
|
+ handler.processEvent(ircClient, ModeChanged(TestConstants.time, "#thegibson", "oa-v+b", arrayOf("zeroCool", "aaa", "zeroCool", "bbb")))
|
|
332
|
+
|
|
333
|
+ assertEquals("o", channelStateMap["#thegibson"]?.users?.get("zeroCool")?.modes)
|
|
334
|
+ assertEquals("aaa", channelStateMap["#thegibson"]?.modes?.get('a'))
|
|
335
|
+ assertEquals("bbb", channelStateMap["#thegibson"]?.modes?.get('b'))
|
|
336
|
+ }
|
263
|
337
|
|
264
|
|
-}
|
|
338
|
+}
|