diff --git a/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt index 73e6d8f3..53803715 100644 --- a/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt +++ b/sentry-kotlin-multiplatform/src/appleMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.apple.kt @@ -7,14 +7,14 @@ import io.sentry.kotlin.multiplatform.SentryEvent internal fun CocoaSentryEvent.applyKmpEvent(kmpEvent: SentryEvent): CocoaSentryEvent { kmpEvent.level?.let { level = it.toCocoaSentryLevel() } kmpEvent.platform?.let { platform = it } - message = kmpEvent.message?.toCocoaMessage() - logger = kmpEvent.logger + kmpEvent.release?.let { releaseName = it } + kmpEvent.message?.let { message = it.toCocoaMessage() } + kmpEvent.logger?.let { logger = it } + kmpEvent.environment?.let { environment = it } + kmpEvent.user?.let { user = it.toCocoaUser() } + kmpEvent.serverName?.let { serverName = it } + kmpEvent.dist?.let { dist = it } fingerprint = kmpEvent.fingerprint - releaseName = kmpEvent.release - environment = kmpEvent.environment - user = kmpEvent.user?.toCocoaUser() - serverName = kmpEvent.serverName - dist = kmpEvent.dist breadcrumbs = kmpEvent.breadcrumbs.map { it.toCocoaBreadcrumb() }.toMutableList() tags = kmpEvent.tags.toMutableMap() eventId = SentryId(kmpEvent.eventId.toString()) diff --git a/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt new file mode 100644 index 00000000..f632bf89 --- /dev/null +++ b/sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt @@ -0,0 +1,37 @@ +package io.sentry.kotlin.multiplatform + +import io.sentry.kotlin.multiplatform.extensions.applyKmpEvent +import kotlin.test.Test +import kotlin.test.assertEquals + +class ApplyKmpEventTest { + @Test + fun `null kmp event values should not override the cocoa event values`() { + val initialUser = CocoaUser().apply { userId = "testUser" } + val initialMessage = CocoaMessage().apply { message = "testMessage" } + val cocoaEvent = CocoaSentryEvent().apply { + level = 1.toUInt() + platform = "cocoa" + releaseName = "1.0.0" + message = initialMessage + logger = "testLogger" + environment = "production" + user = initialUser + serverName = "testServer" + dist = "dist1" + } + val kmpEvent = SentryEvent() // All properties are null by default + + val result = cocoaEvent.applyKmpEvent(kmpEvent) + + assertEquals(1.toUInt(), result.level) + assertEquals("cocoa", result.platform) + assertEquals("1.0.0", result.releaseName) + assertEquals(initialMessage.message, result.message?.message) + assertEquals("testLogger", result.logger) + assertEquals("production", result.environment) + assertEquals(initialUser.userId, result.user?.userId) + assertEquals("testServer", result.serverName) + assertEquals("dist1", result.dist) + } +} diff --git a/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.jvm.kt b/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.jvm.kt index ca228ced..d0aab8a1 100644 --- a/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.jvm.kt +++ b/sentry-kotlin-multiplatform/src/commonJvmMain/kotlin/io/sentry/kotlin/multiplatform/extensions/SentryEventExtensions.jvm.kt @@ -5,17 +5,17 @@ import io.sentry.kotlin.multiplatform.JvmSentryId import io.sentry.kotlin.multiplatform.SentryEvent internal fun JvmSentryEvent.applyKmpEvent(kmpEvent: SentryEvent): JvmSentryEvent { - level = kmpEvent.level?.toJvmSentryLevel() - message = kmpEvent.message?.toJvmMessage() - logger = kmpEvent.logger + kmpEvent.level?.let { level = it.toJvmSentryLevel() } + kmpEvent.message?.let { message = it.toJvmMessage() } + kmpEvent.logger?.let { logger = it } + kmpEvent.release?.let { release = it } + kmpEvent.environment?.let { environment = it } + kmpEvent.platform?.let { platform = it } + kmpEvent.user?.let { user = it.toJvmUser() } + kmpEvent.serverName?.let { serverName = it } + kmpEvent.dist?.let { dist = it } fingerprints = kmpEvent.fingerprint - release = kmpEvent.release - environment = kmpEvent.environment - platform = kmpEvent.platform - user = kmpEvent.user?.toJvmUser() - serverName = kmpEvent.serverName - dist = kmpEvent.dist - breadcrumbs = kmpEvent.breadcrumbs?.map { it.toJvmBreadcrumb() } + breadcrumbs = kmpEvent.breadcrumbs.map { it.toJvmBreadcrumb() } eventId = JvmSentryId(kmpEvent.eventId.toString()) tags = kmpEvent.tags return this diff --git a/sentry-kotlin-multiplatform/src/commonJvmTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt b/sentry-kotlin-multiplatform/src/commonJvmTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt new file mode 100644 index 00000000..b0056d95 --- /dev/null +++ b/sentry-kotlin-multiplatform/src/commonJvmTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt @@ -0,0 +1,37 @@ +package io.sentry.kotlin.multiplatform + +import io.sentry.kotlin.multiplatform.extensions.applyKmpEvent +import kotlin.test.Test +import kotlin.test.assertEquals + +class ApplyKmpEventTest { + @Test + fun `null kmp event values should not override the Jvm event values`() { + val initialUser = JvmUser().apply { id = "testUser" } + val initialMessage = JvmMessage().apply { message = "testMessage" } + val jvmEvent = JvmSentryEvent().apply { + level = JvmSentryLevel.FATAL + platform = "Jvm" + release = "1.0.0" + message = initialMessage + logger = "testLogger" + environment = "production" + user = initialUser + serverName = "testServer" + dist = "dist1" + } + val kmpEvent = SentryEvent() // All properties are null by default + + val result = jvmEvent.applyKmpEvent(kmpEvent) + + assertEquals(JvmSentryLevel.FATAL, result.level) + assertEquals("Jvm", result.platform) + assertEquals("1.0.0", result.release) + assertEquals(initialMessage.message, result.message?.message) + assertEquals("testLogger", result.logger) + assertEquals("production", result.environment) + assertEquals(initialUser.id, result.user?.id) + assertEquals("testServer", result.serverName) + assertEquals("dist1", result.dist) + } +}