Skip to content

Commit 3ff1ba1

Browse files
committed
Integrate workaround so that AndroidEntryPoint classes will be included in code coverage stats.
1 parent 75abbf2 commit 3ff1ba1

File tree

9 files changed

+225
-185
lines changed

9 files changed

+225
-185
lines changed

app/src/main/kotlin/ca/rmen/android/poetassistant/about/LicenseActivity.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,18 @@ import androidx.activity.enableEdgeToEdge
2727
import androidx.activity.viewModels
2828
import androidx.appcompat.app.AppCompatActivity
2929
import androidx.compose.runtime.collectAsState
30-
import ca.rmen.android.poetassistant.Constants
3130
import ca.rmen.android.poetassistant.theme.AppTheme
3231
import dagger.hilt.android.AndroidEntryPoint
3332

33+
private const val EXTRA_TITLE = "title"
34+
private const val EXTRA_LICENSE_TEXT_ASSET_FILE = "license_text_asset_file"
35+
36+
// Split into separate impl and base class to get full code coverage stats:
37+
// https://medium.com/livefront/dagger-hilt-testing-injected-android-components-with-code-coverage-30089a1f6872
38+
3439
@AndroidEntryPoint
35-
class LicenseActivity : AppCompatActivity() {
40+
class LicenseActivity: LicenseActivityImpl() {
3641
companion object {
37-
private val TAG = Constants.TAG + LicenseActivity::class.java.simpleName
38-
private const val EXTRA_TITLE = "title"
39-
private const val EXTRA_LICENSE_TEXT_ASSET_FILE = "license_text_asset_file"
4042

4143
fun start(context: Context, title: String, licenseText: String) {
4244
context.startActivity(
@@ -46,6 +48,9 @@ class LicenseActivity : AppCompatActivity() {
4648
)
4749
}
4850
}
51+
}
52+
53+
open class LicenseActivityImpl : AppCompatActivity() {
4954

5055
override fun onCreate(savedInstanceState: Bundle?) {
5156
super.onCreate(savedInstanceState)

app/src/main/kotlin/ca/rmen/android/poetassistant/main/MainActivity.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,13 @@ import ca.rmen.android.poetassistant.widget.CABEditText
6363
import dagger.hilt.android.AndroidEntryPoint
6464
import javax.inject.Inject
6565

66+
// Split into separate impl and base class to get full code coverage stats:
67+
// https://medium.com/livefront/dagger-hilt-testing-injected-android-components-with-code-coverage-30089a1f6872
68+
6669
@AndroidEntryPoint
67-
class MainActivity : AppCompatActivity(), OnWordClickListener, WarningNoSpaceDialogFragment.WarningNoSpaceDialogListener, CABEditText.ImeListener {
70+
class MainActivity : MainActivityImpl()
71+
72+
open class MainActivityImpl : AppCompatActivity(), OnWordClickListener, WarningNoSpaceDialogFragment.WarningNoSpaceDialogListener, CABEditText.ImeListener {
6873
companion object {
6974
private val TAG = Constants.TAG + MainActivity::class.java.simpleName
7075
private const val DIALOG_TAG = "dialog"
@@ -278,7 +283,7 @@ class MainActivity : AppCompatActivity(), OnWordClickListener, WarningNoSpaceDia
278283
val tab = mPagerAdapter.getTabForPosition(position)
279284

280285
if (tab == Tab.READER) {
281-
AppBarLayoutHelper.enableAutoHide(this@MainActivity)
286+
AppBarLayoutHelper.enableAutoHide(this@MainActivityImpl)
282287
} else {
283288
// Hide the keyboard when we navigate to any tab other than the reader tab.
284289
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?

app/src/main/kotlin/ca/rmen/android/poetassistant/main/reader/ReaderFragment.kt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ import com.google.android.material.snackbar.Snackbar
5555
import dagger.hilt.android.AndroidEntryPoint
5656
import javax.inject.Inject
5757

58+
// Split into separate impl and base class to get full code coverage stats:
59+
// https://medium.com/livefront/dagger-hilt-testing-injected-android-components-with-code-coverage-30089a1f6872
60+
61+
private const val EXTRA_INITIAL_TEXT = "initial_text"
62+
private val TAG = Constants.TAG + ReaderFragment::class.java.simpleName
63+
5864
@AndroidEntryPoint
59-
class ReaderFragment : Fragment(), ConfirmDialogFragment.ConfirmDialogListener {
65+
class ReaderFragment : ReaderFragmentImpl() {
6066
companion object {
61-
private val TAG = Constants.TAG + ReaderFragment::class.java.simpleName
62-
private const val EXTRA_INITIAL_TEXT = "initial_text"
63-
private const val DIALOG_TAG = "dialog"
64-
private const val ACTION_FILE_OPEN = 0
65-
private const val ACTION_FILE_SAVE_AS = 1
66-
private const val ACTION_FILE_NEW = 2
6767
fun newInstance(initialText: String?): ReaderFragment {
6868
Log.d(TAG, "newInstance: initialText = $initialText")
6969
val fragment = ReaderFragment()
@@ -72,6 +72,16 @@ class ReaderFragment : Fragment(), ConfirmDialogFragment.ConfirmDialogListener {
7272
fragment.arguments = bundle
7373
return fragment
7474
}
75+
76+
}
77+
}
78+
79+
open class ReaderFragmentImpl : Fragment(), ConfirmDialogFragment.ConfirmDialogListener {
80+
companion object {
81+
private const val DIALOG_TAG = "dialog"
82+
private const val ACTION_FILE_OPEN = 0
83+
private const val ACTION_FILE_SAVE_AS = 1
84+
private const val ACTION_FILE_NEW = 2
7585
}
7686

7787
private lateinit var mViewModel: ReaderViewModel

0 commit comments

Comments
 (0)