From c503f90257814dc1f4e7fbbb353719eea3de5031 Mon Sep 17 00:00:00 2001 From: fractalwrench Date: Thu, 1 Mar 2018 11:34:55 +0000 Subject: [PATCH] add manual/auto context scenarios --- features/auto_context.feature | 10 +++++++ features/manual_context.feature | 9 +++++++ mazerunner/src/main/AndroidManifest.xml | 1 + .../android/mazerunner/SecondActivity.kt | 13 ++++++++++ .../scenarios/AutoContextScenario.kt | 26 +++++++++++++++++++ .../scenarios/ManualContextScenario.kt | 20 ++++++++++++++ 6 files changed, 79 insertions(+) create mode 100644 features/auto_context.feature create mode 100644 features/manual_context.feature create mode 100644 mazerunner/src/main/java/com/bugsnag/android/mazerunner/SecondActivity.kt create mode 100644 mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoContextScenario.kt create mode 100644 mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/ManualContextScenario.kt diff --git a/features/auto_context.feature b/features/auto_context.feature new file mode 100644 index 0000000000..f7eb17b206 --- /dev/null +++ b/features/auto_context.feature @@ -0,0 +1,10 @@ +Feature: Android support + +Scenario: Automatic Context Tracking + When I run "AutoContextScenario" with the defaults + And I wait for 3 seconds + Then I should receive a request + And the request is a valid for the error reporting API + And the "Bugsnag-API-Key" header equals "a35a2a72bd230ac0aa0f52715bbdc6aa" + And the exception "message" equals "AutoContextScenario" + And the event "context" equals "SecondActivity" diff --git a/features/manual_context.feature b/features/manual_context.feature new file mode 100644 index 0000000000..4b40e87c25 --- /dev/null +++ b/features/manual_context.feature @@ -0,0 +1,9 @@ +Feature: Android support + +Scenario: Manual Context Tracking + When I run "ManualContextScenario" with the defaults + Then I should receive a request + And the request is a valid for the error reporting API + And the "Bugsnag-API-Key" header equals "a35a2a72bd230ac0aa0f52715bbdc6aa" + And the exception "message" equals "ManualContextScenario" + And the event "context" equals "FooContext" diff --git a/mazerunner/src/main/AndroidManifest.xml b/mazerunner/src/main/AndroidManifest.xml index add767fe84..ef3c038299 100644 --- a/mazerunner/src/main/AndroidManifest.xml +++ b/mazerunner/src/main/AndroidManifest.xml @@ -11,6 +11,7 @@ + diff --git a/mazerunner/src/main/java/com/bugsnag/android/mazerunner/SecondActivity.kt b/mazerunner/src/main/java/com/bugsnag/android/mazerunner/SecondActivity.kt new file mode 100644 index 0000000000..fc45451d7d --- /dev/null +++ b/mazerunner/src/main/java/com/bugsnag/android/mazerunner/SecondActivity.kt @@ -0,0 +1,13 @@ +package com.bugsnag.android.mazerunner + +import android.app.Activity +import android.os.Bundle + +class SecondActivity : Activity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + } + +} diff --git a/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoContextScenario.kt b/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoContextScenario.kt new file mode 100644 index 0000000000..5537887c34 --- /dev/null +++ b/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/AutoContextScenario.kt @@ -0,0 +1,26 @@ +package com.bugsnag.android.mazerunner.scenarios + +import android.app.Activity +import android.content.Context +import android.content.Intent +import com.bugsnag.android.Bugsnag +import com.bugsnag.android.Configuration +import com.bugsnag.android.mazerunner.SecondActivity + +/** + * Sends a handled exception to Bugsnag, which includes automatic context. + */ +internal class AutoContextScenario(config: Configuration, + context: Context) : Scenario(config, context) { + + override fun run() { + super.run() + context.startActivity(Intent(context, SecondActivity::class.java)) + + val a = context as Activity + a.window.decorView.postDelayed({ + Bugsnag.notify(generateException()) + }, 2000) + } + +} diff --git a/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/ManualContextScenario.kt b/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/ManualContextScenario.kt new file mode 100644 index 0000000000..8fe495fb18 --- /dev/null +++ b/mazerunner/src/main/java/com/bugsnag/android/mazerunner/scenarios/ManualContextScenario.kt @@ -0,0 +1,20 @@ +package com.bugsnag.android.mazerunner.scenarios + +import android.content.Context +import com.bugsnag.android.Bugsnag +import com.bugsnag.android.Configuration +import com.bugsnag.android.mazerunner.scenarios.Scenario + +/** + * Sends a handled exception to Bugsnag, which includes manual context. + */ +internal class ManualContextScenario(config: Configuration, + context: Context) : Scenario(config, context) { + + override fun run() { + super.run() + Bugsnag.setContext("FooContext") + Bugsnag.notify(generateException()) + } + +}