From 2f5fd08c12c92e4c0e4c5234bbf1c6e6004780fd Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 16 Apr 2025 16:02:48 +0200 Subject: [PATCH 1/2] Fix null values being overridden --- .../extensions/SentryEventExtensions.apple.kt | 14 +++---- .../kotlin/multiplatform/ApplyKmpEventTest.kt | 37 +++++++++++++++++++ .../extensions/SentryEventExtensions.jvm.kt | 20 +++++----- .../kotlin/multiplatform/ApplyKmpEventTest.kt | 37 +++++++++++++++++++ 4 files changed, 91 insertions(+), 17 deletions(-) create mode 100644 sentry-kotlin-multiplatform/src/appleTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt create mode 100644 sentry-kotlin-multiplatform/src/commonJvmTest/kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt 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..cc9a52f8 --- /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) + } +} \ No newline at end of file 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..bd040bf8 --- /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) + } +} \ No newline at end of file From b7376c9a1b41db36151b525346b78ece544f1812 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 16 Apr 2025 16:03:59 +0200 Subject: [PATCH 2/2] Formatting --- .../kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt | 2 +- .../kotlin/io/sentry/kotlin/multiplatform/ApplyKmpEventTest.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 index cc9a52f8..f632bf89 100644 --- 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 @@ -34,4 +34,4 @@ class ApplyKmpEventTest { assertEquals("testServer", result.serverName) assertEquals("dist1", result.dist) } -} \ No newline at end of file +} 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 index bd040bf8..b0056d95 100644 --- 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 @@ -34,4 +34,4 @@ class ApplyKmpEventTest { assertEquals("testServer", result.serverName) assertEquals("dist1", result.dist) } -} \ No newline at end of file +}