|
1 | 1 | package io.sentry.android.timber |
2 | 2 |
|
3 | 3 | import io.sentry.Breadcrumb |
4 | | -import io.sentry.IScopes |
| 4 | +import io.sentry.Scopes |
5 | 5 | import io.sentry.SentryLevel |
| 6 | +import io.sentry.SentryLogLevel |
| 7 | +import io.sentry.logger.ILoggerApi |
6 | 8 | import kotlin.test.BeforeTest |
7 | 9 | import kotlin.test.Test |
8 | 10 | import kotlin.test.assertEquals |
9 | 11 | import kotlin.test.assertNotNull |
10 | 12 | import kotlin.test.assertNull |
11 | 13 | import org.mockito.kotlin.any |
12 | 14 | import org.mockito.kotlin.check |
| 15 | +import org.mockito.kotlin.eq |
13 | 16 | import org.mockito.kotlin.mock |
14 | 17 | import org.mockito.kotlin.never |
15 | 18 | import org.mockito.kotlin.verify |
| 19 | +import org.mockito.kotlin.verifyNoInteractions |
| 20 | +import org.mockito.kotlin.whenever |
16 | 21 | import timber.log.Timber |
17 | 22 |
|
18 | 23 | class SentryTimberTreeTest { |
19 | 24 | private class Fixture { |
20 | | - val scopes = mock<IScopes>() |
| 25 | + val scopes = mock<Scopes>() |
| 26 | + val logs = mock<ILoggerApi>() |
| 27 | + |
| 28 | + init { |
| 29 | + whenever(scopes.logger()).thenReturn(logs) |
| 30 | + } |
21 | 31 |
|
22 | 32 | fun getSut( |
23 | 33 | minEventLevel: SentryLevel = SentryLevel.ERROR, |
24 | 34 | minBreadcrumbLevel: SentryLevel = SentryLevel.INFO, |
25 | | - ): SentryTimberTree = SentryTimberTree(scopes, minEventLevel, minBreadcrumbLevel) |
| 35 | + minLogsLevel: SentryLogLevel = SentryLogLevel.INFO, |
| 36 | + ): SentryTimberTree = SentryTimberTree(scopes, minEventLevel, minBreadcrumbLevel, minLogsLevel) |
26 | 37 | } |
27 | 38 |
|
28 | 39 | private val fixture = Fixture() |
@@ -231,4 +242,72 @@ class SentryTimberTreeTest { |
231 | 242 | val sut = fixture.getSut() |
232 | 243 | sut.d("test %s, %s", 1, 1) |
233 | 244 | } |
| 245 | + |
| 246 | + @Test |
| 247 | + fun `Tree adds a log with message and arguments, when provided`() { |
| 248 | + val sut = fixture.getSut() |
| 249 | + sut.e("test count: %d %d", 32, 5) |
| 250 | + |
| 251 | + verify(fixture.logs).log(eq(SentryLogLevel.ERROR), eq("test count: %d %d"), eq(32), eq(5)) |
| 252 | + } |
| 253 | + |
| 254 | + @Test |
| 255 | + fun `Tree adds a log if min level is equal`() { |
| 256 | + val sut = fixture.getSut() |
| 257 | + sut.i(Throwable("test")) |
| 258 | + verify(fixture.logs).log(any(), any()) |
| 259 | + } |
| 260 | + |
| 261 | + @Test |
| 262 | + fun `Tree adds a log if min level is higher`() { |
| 263 | + val sut = fixture.getSut() |
| 264 | + sut.e(Throwable("test")) |
| 265 | + verify(fixture.logs).log(any(), any<String>(), any()) |
| 266 | + } |
| 267 | + |
| 268 | + @Test |
| 269 | + fun `Tree won't add a log if min level is lower`() { |
| 270 | + val sut = fixture.getSut(minLogsLevel = SentryLogLevel.ERROR) |
| 271 | + sut.i(Throwable("test")) |
| 272 | + verifyNoInteractions(fixture.logs) |
| 273 | + } |
| 274 | + |
| 275 | + @Test |
| 276 | + fun `Tree adds an info log`() { |
| 277 | + val sut = fixture.getSut() |
| 278 | + sut.i("message") |
| 279 | + |
| 280 | + verify(fixture.logs).log(eq(SentryLogLevel.INFO), eq("message")) |
| 281 | + } |
| 282 | + |
| 283 | + @Test |
| 284 | + fun `Tree adds an error log`() { |
| 285 | + val sut = fixture.getSut() |
| 286 | + sut.e(Throwable("test")) |
| 287 | + |
| 288 | + verify(fixture.logs).log(eq(SentryLogLevel.ERROR), eq("test")) |
| 289 | + } |
| 290 | + |
| 291 | + @Test |
| 292 | + fun `Tree does not add a log, if no message or throwable is provided`() { |
| 293 | + val sut = fixture.getSut() |
| 294 | + sut.e(null as String?) |
| 295 | + verifyNoInteractions(fixture.logs) |
| 296 | + } |
| 297 | + |
| 298 | + @Test |
| 299 | + fun `Tree logs throwable`() { |
| 300 | + val sut = fixture.getSut() |
| 301 | + sut.e(Throwable("throwable message")) |
| 302 | + |
| 303 | + verify(fixture.logs).log(eq(SentryLogLevel.ERROR), eq("throwable message")) |
| 304 | + } |
| 305 | + |
| 306 | + @Test |
| 307 | + fun `Tree logs throwable and message`() { |
| 308 | + val sut = fixture.getSut() |
| 309 | + sut.e(Throwable("throwable message"), "My message") |
| 310 | + |
| 311 | + verify(fixture.logs).log(eq(SentryLogLevel.ERROR), eq("My message\nthrowable message")) |
| 312 | + } |
234 | 313 | } |
0 commit comments