You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TopicProcessorTest.kt 3.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.dmdirc.ktirc.messages
  2. import com.dmdirc.ktirc.TestConstants
  3. import com.dmdirc.ktirc.events.ChannelTopicChanged
  4. import com.dmdirc.ktirc.events.ChannelTopicDiscovered
  5. import com.dmdirc.ktirc.events.ChannelTopicMetadataDiscovered
  6. import com.dmdirc.ktirc.model.IrcMessage
  7. import com.dmdirc.ktirc.model.User
  8. import com.dmdirc.ktirc.params
  9. import com.dmdirc.ktirc.util.currentTimeProvider
  10. import com.dmdirc.ktirc.util.currentTimeZoneProvider
  11. import org.junit.jupiter.api.Assertions.assertEquals
  12. import org.junit.jupiter.api.Assertions.assertNull
  13. import org.junit.jupiter.api.BeforeEach
  14. import org.junit.jupiter.api.Test
  15. internal class TopicProcessorTest {
  16. private val processor = TopicProcessor()
  17. @BeforeEach
  18. fun setUp() {
  19. currentTimeProvider = { TestConstants.time }
  20. }
  21. @Test
  22. fun `raises ChannelTopicDiscovered event when topic is supplied`() {
  23. val events = processor.process(IrcMessage(emptyMap(), null, "332", params("acidBurn", "#thegibson", "Hack the planet!")))
  24. assertEquals(1, events.size)
  25. val event = events[0] as ChannelTopicDiscovered
  26. assertEquals(TestConstants.time, event.time)
  27. assertEquals("#thegibson", event.channel)
  28. assertEquals("Hack the planet!", event.topic)
  29. }
  30. @Test
  31. fun `raises ChannelTopicDiscovered event when no topic is set`() {
  32. val events = processor.process(IrcMessage(emptyMap(), null, "331", params("acidBurn", "#thegibson", "No topic set")))
  33. assertEquals(1, events.size)
  34. val event = events[0] as ChannelTopicDiscovered
  35. assertEquals(TestConstants.time, event.time)
  36. assertEquals("#thegibson", event.channel)
  37. assertNull(event.topic)
  38. }
  39. @Test
  40. fun `raises ChannelTopicMetadataDiscovered event when metadata is supplied`() {
  41. val events = processor.process(IrcMessage(emptyMap(), null, "333", params("acidBurn", "#thegibson", "zeroCool", unixtime())))
  42. assertEquals(1, events.size)
  43. val event = events[0] as ChannelTopicMetadataDiscovered
  44. assertEquals(TestConstants.time, event.time)
  45. assertEquals("#thegibson", event.channel)
  46. assertEquals("zeroCool", event.user.nickname)
  47. assertEquals(TestConstants.otherTime, event.setTime)
  48. }
  49. @Test
  50. fun `raises ChannelTopicChanged event when topic is changed`() {
  51. val events = processor.process(IrcMessage(emptyMap(), "acidBurn!acidB@the.gibson".toByteArray(), "TOPIC", params("#thegibson", "Hack the planet!")))
  52. assertEquals(1, events.size)
  53. val event = events[0] as ChannelTopicChanged
  54. assertEquals(TestConstants.time, event.time)
  55. assertEquals(User("acidBurn", "acidB", "the.gibson"), event.user)
  56. assertEquals("#thegibson", event.channel)
  57. assertEquals("Hack the planet!", event.topic)
  58. }
  59. @Test
  60. fun `does nothing when topic is changed with no source`() {
  61. val events = processor.process(IrcMessage(emptyMap(), null, "TOPIC", params("#thegibson", "Hack the planet!")))
  62. assertEquals(0, events.size)
  63. }
  64. private fun unixtime() = TestConstants.otherTime.toEpochSecond(currentTimeZoneProvider().rules.getOffset(TestConstants.time)).toString()
  65. }