1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.dmdirc.ktirc.messages.processors
-
- import com.dmdirc.ktirc.TestConstants
- import com.dmdirc.ktirc.events.ChannelTopicChanged
- import com.dmdirc.ktirc.events.ChannelTopicDiscovered
- import com.dmdirc.ktirc.events.ChannelTopicMetadataDiscovered
- import com.dmdirc.ktirc.model.IrcMessage
- import com.dmdirc.ktirc.model.User
- import com.dmdirc.ktirc.params
- import com.dmdirc.ktirc.util.currentTimeProvider
- import com.dmdirc.ktirc.util.currentTimeZoneProvider
- import org.junit.jupiter.api.Assertions.assertEquals
- import org.junit.jupiter.api.Assertions.assertNull
- import org.junit.jupiter.api.BeforeEach
- import org.junit.jupiter.api.Test
-
- internal class TopicProcessorTest {
-
- private val processor = TopicProcessor()
-
- @BeforeEach
- fun setUp() {
- currentTimeProvider = { TestConstants.time }
- }
-
- @Test
- fun `raises ChannelTopicDiscovered event when topic is supplied`() {
- val events = processor.process(IrcMessage(emptyMap(), null, "332", params("acidBurn", "#thegibson", "Hack the planet!")))
- assertEquals(1, events.size)
-
- val event = events[0] as ChannelTopicDiscovered
- assertEquals(TestConstants.time, event.metadata.time)
- assertEquals("#thegibson", event.target)
- assertEquals("Hack the planet!", event.topic)
- }
-
- @Test
- fun `raises ChannelTopicDiscovered event when no topic is set`() {
- val events = processor.process(IrcMessage(emptyMap(), null, "331", params("acidBurn", "#thegibson", "No topic set")))
- assertEquals(1, events.size)
-
- val event = events[0] as ChannelTopicDiscovered
- assertEquals(TestConstants.time, event.metadata.time)
- assertEquals("#thegibson", event.target)
- assertNull(event.topic)
- }
-
- @Test
- fun `raises ChannelTopicMetadataDiscovered event when metadata is supplied`() {
- val events = processor.process(IrcMessage(emptyMap(), null, "333", params("acidBurn", "#thegibson", "zeroCool", unixtime())))
- assertEquals(1, events.size)
-
- val event = events[0] as ChannelTopicMetadataDiscovered
- assertEquals(TestConstants.time, event.metadata.time)
- assertEquals("#thegibson", event.target)
- assertEquals("zeroCool", event.user.nickname)
- assertEquals(TestConstants.otherTime, event.setTime)
- }
-
- @Test
- fun `raises ChannelTopicChanged event when topic is changed`() {
- val events = processor.process(IrcMessage(emptyMap(), "acidBurn!acidB@the.gibson".toByteArray(), "TOPIC", params("#thegibson", "Hack the planet!")))
- assertEquals(1, events.size)
-
- val event = events[0] as ChannelTopicChanged
- assertEquals(TestConstants.time, event.metadata.time)
- assertEquals(User("acidBurn", "acidB", "the.gibson"), event.user)
- assertEquals("#thegibson", event.target)
- assertEquals("Hack the planet!", event.topic)
- }
-
- @Test
- fun `does nothing when topic is changed with no source`() {
- val events = processor.process(IrcMessage(emptyMap(), null, "TOPIC", params("#thegibson", "Hack the planet!")))
- assertEquals(0, events.size)
- }
-
- private fun unixtime() = TestConstants.otherTime.toEpochSecond(currentTimeZoneProvider().rules.getOffset(TestConstants.time)).toString()
-
- }
|