Skip to content

Commit c2dcad5

Browse files
committed
Add tests
1 parent 69b23cc commit c2dcad5

File tree

1 file changed

+120
-49
lines changed

1 file changed

+120
-49
lines changed

sentry-android-replay/src/test/java/io/sentry/android/replay/DefaultReplayBreadcrumbConverterTest.kt

Lines changed: 120 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import io.sentry.SpanDataConvention
66
import io.sentry.rrweb.RRWebBreadcrumbEvent
77
import io.sentry.rrweb.RRWebSpanEvent
88
import junit.framework.TestCase.assertEquals
9-
import junit.framework.TestCase.assertTrue
109
import java.util.Date
1110
import kotlin.test.Test
1211
import kotlin.test.assertNull
@@ -115,9 +114,6 @@ class DefaultReplayBreadcrumbConverterTest {
115114
check(rrwebEvent is RRWebBreadcrumbEvent)
116115
assertEquals("device.orientation", rrwebEvent.category)
117116
assertEquals("landscape", rrwebEvent.data!!["position"])
118-
assertEquals(123L, rrwebEvent.timestamp)
119-
assertEquals(0.123, rrwebEvent.breadcrumbTimestamp)
120-
assertEquals("default", rrwebEvent.breadcrumbType)
121117
}
122118

123119
@Test
@@ -150,9 +146,6 @@ class DefaultReplayBreadcrumbConverterTest {
150146
check(rrwebEvent is RRWebBreadcrumbEvent)
151147
assertEquals("navigation", rrwebEvent.category)
152148
assertEquals("MainActivity", rrwebEvent.data!!["to"])
153-
assertEquals(123L, rrwebEvent.timestamp)
154-
assertEquals(0.123, rrwebEvent.breadcrumbTimestamp)
155-
assertEquals("default", rrwebEvent.breadcrumbType)
156149
}
157150

158151
@Test
@@ -170,48 +163,126 @@ class DefaultReplayBreadcrumbConverterTest {
170163
check(rrwebEvent is RRWebBreadcrumbEvent)
171164
assertEquals("navigation", rrwebEvent.category)
172165
assertEquals("/github", rrwebEvent.data!!["to"])
173-
assertEquals(123L, rrwebEvent.timestamp)
174-
assertEquals(0.123, rrwebEvent.breadcrumbTimestamp)
175-
assertEquals("default", rrwebEvent.breadcrumbType)
176166
}
177167

178-
// @Test
179-
// fun `test convert with navigation and app lifecycle`() {
180-
// val breadcrumb = Breadcrumb().apply {
181-
// message = "message"
182-
// category = "navigation"
183-
// type = "navigation"
184-
// level = SentryLevel.ERROR
185-
// data["state"] = "resumed"
186-
// data["screen"] = "screen"
187-
// }
188-
//
189-
// val result = DefaultReplayBreadcrumbConverter().convert(breadcrumb)
190-
//
191-
// assertTrue(result is RRWebBreadcrumbEvent)
192-
// assertEquals("navigation", result.category)
193-
// assertEquals("navigation", result.type)
194-
// assertEquals(SentryLevel.ERROR, result.level)
195-
// assertEquals("resumed", result.data["state"])
196-
// assertEquals("screen", result.data["screen"])
197-
// }
198-
//
199-
// @Test
200-
// fun `test convert with navigation and device orientation`() {
201-
// val breadcrumb = Breadcrumb().apply {
202-
// message = "message"
203-
// category = "navigation"
204-
// type = "navigation"
205-
// level = SentryLevel.ERROR
206-
// data["position"] = "landscape"
207-
// }
208-
//
209-
// val result = DefaultReplayBreadcrumbConverter().convert(breadcrumb)
210-
//
211-
// assertTrue(result is RRWebBreadcrumbEvent)
212-
// assertEquals("navigation", result.category)
213-
// assertEquals("navigation", result.type)
214-
// assertEquals(SentryLevel.ERROR, result.level)
215-
// assertEquals("landscape", result.data["position"])
216-
// }
168+
@Test
169+
fun `returns null when lifecycle state is not 'resumed'`() {
170+
val converter = fixture.getSut()
171+
172+
val breadcrumb = Breadcrumb(Date(123L)).apply {
173+
category = "navigation"
174+
type = "navigation"
175+
data["state"] = "started"
176+
data["screen"] = "io.sentry.MainActivity"
177+
}
178+
179+
val rrwebEvent = converter.convert(breadcrumb)
180+
181+
assertNull(rrwebEvent)
182+
}
183+
184+
@Test
185+
fun `converts ui click breadcrumbs`() {
186+
val converter = fixture.getSut()
187+
188+
val breadcrumb = Breadcrumb(Date(123L)).apply {
189+
category = "ui.click"
190+
type = "user"
191+
data["view.id"] = "button_login"
192+
}
193+
194+
val rrwebEvent = converter.convert(breadcrumb)
195+
196+
check(rrwebEvent is RRWebBreadcrumbEvent)
197+
assertEquals("ui.tap", rrwebEvent.category)
198+
assertEquals("button_login", rrwebEvent.message)
199+
}
200+
201+
@Test
202+
fun `returns null if no view identifier in data`() {
203+
val converter = fixture.getSut()
204+
205+
val breadcrumb = Breadcrumb(Date(123L)).apply {
206+
category = "ui.click"
207+
type = "user"
208+
}
209+
210+
val rrwebEvent = converter.convert(breadcrumb)
211+
212+
assertNull(rrwebEvent)
213+
}
214+
215+
@Test
216+
fun `converts network connectivity breadcrumbs`() {
217+
val converter = fixture.getSut()
218+
219+
val breadcrumb = Breadcrumb(Date(123L)).apply {
220+
category = "network.event"
221+
type = "system"
222+
data["network_type"] = "cellular"
223+
}
224+
225+
val rrwebEvent = converter.convert(breadcrumb)
226+
227+
check(rrwebEvent is RRWebBreadcrumbEvent)
228+
assertEquals("device.connectivity", rrwebEvent.category)
229+
assertEquals("cellular", rrwebEvent.data!!["state"])
230+
}
231+
232+
@Test
233+
fun `returns null if no network connectivity state`() {
234+
val converter = fixture.getSut()
235+
236+
val breadcrumb = Breadcrumb(Date(123L)).apply {
237+
category = "network.event"
238+
type = "system"
239+
}
240+
241+
val rrwebEvent = converter.convert(breadcrumb)
242+
243+
assertNull(rrwebEvent)
244+
}
245+
246+
@Test
247+
fun `converts battery status breadcrumbs`() {
248+
val converter = fixture.getSut()
249+
250+
val breadcrumb = Breadcrumb(Date(123L)).apply {
251+
category = "device.event"
252+
type = "system"
253+
data["action"] = "BATTERY_CHANGED"
254+
data["level"] = 85.0f
255+
data["charging"] = true
256+
data["stuff"] = "shiet"
257+
}
258+
259+
val rrwebEvent = converter.convert(breadcrumb)
260+
261+
check(rrwebEvent is RRWebBreadcrumbEvent)
262+
assertEquals("device.battery", rrwebEvent.category)
263+
assertEquals(85.0f, rrwebEvent.data!!["level"])
264+
assertEquals(true, rrwebEvent.data!!["charging"])
265+
assertNull(rrwebEvent.data!!["stuff"])
266+
}
267+
268+
@Test
269+
fun `converts generic breadcrumbs`() {
270+
val converter = fixture.getSut()
271+
272+
val breadcrumb = Breadcrumb(Date(123L)).apply {
273+
category = "device.event"
274+
type = "system"
275+
message = "message"
276+
level = SentryLevel.ERROR
277+
data["stuff"] = "shiet"
278+
}
279+
280+
val rrwebEvent = converter.convert(breadcrumb)
281+
282+
check(rrwebEvent is RRWebBreadcrumbEvent)
283+
assertEquals("device.event", rrwebEvent.category)
284+
assertEquals("message", rrwebEvent.message)
285+
assertEquals(SentryLevel.ERROR, rrwebEvent.level)
286+
assertEquals("shiet", rrwebEvent.data!!["stuff"])
287+
}
217288
}

0 commit comments

Comments
 (0)