Skip to content

Commit

Permalink
fix: stop publish from causing an infinite loop (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
HomelessDinosaur authored Sep 11, 2023
1 parent 7d0071f commit 402e694
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/src/main/kotlin/io/nitric/api/events/v0/Topic.kt
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,6 @@ class Topic internal constructor(private val client: EventingClients, val name:
fun publish(payload: Map<String, Any?>): NitricEvent {
val event = NitricEvent(payload)

return this.publish(payload)
return this.publish(event)
}
}
54 changes: 54 additions & 0 deletions lib/src/test/kotlin/io/nitric/api/events/TopicTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import io.mockk.coEvery
import io.mockk.mockk
import io.nitric.api.events.v0.EventingClients
import io.nitric.api.events.v0.NitricEvent
import io.nitric.api.events.v0.PublishOptions
import io.nitric.api.events.v0.Topic
import io.nitric.proto.event.v1.*
import kotlinx.coroutines.runBlocking
Expand Down Expand Up @@ -64,4 +65,57 @@ class TopicTest {
assertEquals(event.payload, resp.payload)
assertEquals(event.payloadType, resp.payloadType)
}

@Test
fun testPublishWithOptions() {
val event = NitricEvent(payload=mapOf("test" to "payload"), id="1234", payloadType="test-payload")
val options = PublishOptions(delay = 100)

val topic = Topic(client, "test-topic")

coEvery { eventsClient.publish(allAny()) } returns EventPublishResponse.newBuilder().setId("1234").build()

val resp = runBlocking {
topic.publish(event, options)
}

assertEquals(event.id, resp.id)
assertEquals(event.payload, resp.payload)
assertEquals(event.payloadType, resp.payloadType)
}

@Test
fun testPublishPayload() {
val payload = mapOf("test" to "payload")

val topic = Topic(client, "test-topic")

coEvery { eventsClient.publish(allAny()) } returns EventPublishResponse.newBuilder().setId("1234").build()

val resp = runBlocking {
topic.publish(payload)
}

assertEquals("1234", resp.id)
assertEquals(payload, resp.payload)
assertEquals("none", resp.payloadType)
}

@Test
fun testPublishPayloadWithOptions() {
val payload = mapOf("test" to "payload")
val options = PublishOptions(delay = 100)

val topic = Topic(client, "test-topic")

coEvery { eventsClient.publish(allAny()) } returns EventPublishResponse.newBuilder().setId("1234").build()

val resp = runBlocking {
topic.publish(payload, options)
}

assertEquals("1234", resp.id)
assertEquals(payload, resp.payload)
assertEquals("none", resp.payloadType)
}
}

0 comments on commit 402e694

Please sign in to comment.