Use Shadows for permission mocking instead of mocks #36
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'm trying to simplify all the mocks in the tests. I use Shadows to replace our created mocks in
CoperTestActivity
. The only issue is that I can't find how to replacePermissionChecker.PERMISSION_DENIED_APP_OP
with shadows. This result can be returned on devices whose SDK level is below 23. On those devices, there are no runtime permissions. They always getPERMISSION_GRANTED
orPERMISSION_DENIED_APP_OP
if the user disables permission through app settings. But still this constant means that permission is denied. Sadly, as I debug, Shadows doesn't handle this thing under the hood. It still returnsPERMISSION_DENIED
on SDK 21. So, https://github.com/vinted/coper/blob/master/library/src/main/java/com/vinted/coper/CoperFragment.kt#L240-L241 this place is not tested that well in this case. But I'm not sure if it's worth writing our own mocks just to test this scenario. What do you think?