Commit 357df54f by Jan-Derk

Changed PermissionStatus enum, added tests

parent 36777b47
...@@ -3,10 +3,10 @@ part of permission_handler_platform_interface; ...@@ -3,10 +3,10 @@ part of permission_handler_platform_interface;
/// Defines the state of a [Permission]. /// Defines the state of a [Permission].
enum PermissionStatus { enum PermissionStatus {
/// The user granted access to the requested feature. /// The user granted access to the requested feature.
granted, denied,
/// The user denied access to the requested feature. /// The user denied access to the requested feature.
denied, granted,
/// The OS denied access to the requested feature. The user cannot change /// The OS denied access to the requested feature. The user cannot change
/// this app's status, possibly due to active restrictions such as parental /// this app's status, possibly due to active restrictions such as parental
...@@ -28,9 +28,9 @@ enum PermissionStatus { ...@@ -28,9 +28,9 @@ enum PermissionStatus {
extension PermissionStatusValue on PermissionStatus { extension PermissionStatusValue on PermissionStatus {
int get value { int get value {
switch (this) { switch (this) {
case PermissionStatus.granted:
return 0;
case PermissionStatus.denied: case PermissionStatus.denied:
return 0;
case PermissionStatus.granted:
return 1; return 1;
case PermissionStatus.restricted: case PermissionStatus.restricted:
return 2; return 2;
...@@ -45,8 +45,8 @@ extension PermissionStatusValue on PermissionStatus { ...@@ -45,8 +45,8 @@ extension PermissionStatusValue on PermissionStatus {
static PermissionStatus statusByValue(int value) { static PermissionStatus statusByValue(int value) {
return [ return [
PermissionStatus.granted,
PermissionStatus.denied, PermissionStatus.denied,
PermissionStatus.granted,
PermissionStatus.restricted, PermissionStatus.restricted,
PermissionStatus.limited, PermissionStatus.limited,
PermissionStatus.permanentlyDenied, PermissionStatus.permanentlyDenied,
...@@ -55,12 +55,12 @@ extension PermissionStatusValue on PermissionStatus { ...@@ -55,12 +55,12 @@ extension PermissionStatusValue on PermissionStatus {
} }
extension PermissionStatusGetters on PermissionStatus { extension PermissionStatusGetters on PermissionStatus {
/// If the user granted access to the requested feature.
bool get isGranted => this == PermissionStatus.granted;
/// If the user denied access to the requested feature. /// If the user denied access to the requested feature.
bool get isDenied => this == PermissionStatus.denied; bool get isDenied => this == PermissionStatus.denied;
/// If the user granted access to the requested feature.
bool get isGranted => this == PermissionStatus.granted;
/// If the OS denied access to the requested feature. The user cannot change /// If the OS denied access to the requested feature. The user cannot change
/// this app's status, possibly due to active restrictions such as parental /// this app's status, possibly due to active restrictions such as parental
/// controls being in place. /// controls being in place.
......
...@@ -15,9 +15,6 @@ class Permission { ...@@ -15,9 +15,6 @@ class Permission {
const Permission._(this.value); const Permission._(this.value);
factory Permission.byValue(int value) => values[value]; factory Permission.byValue(int value) => values[value];
@visibleForTesting
const Permission.private(this.value);
/// Integer representation of the [Permission]. /// Integer representation of the [Permission].
final int value; final int value;
......
...@@ -15,13 +15,13 @@ void main() { ...@@ -15,13 +15,13 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus', method: 'checkPermissionStatus',
result: PermissionStatus.granted.index, result: PermissionStatus.denied.value,
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
.checkPermissionStatus(Permission.calendar); .checkPermissionStatus(Permission.calendar);
expect(permissionStatus, PermissionStatus.granted); expect(permissionStatus, PermissionStatus.denied);
}); });
test('Should receive denied if user denied access to the requested feature', test('Should receive denied if user denied access to the requested feature',
...@@ -29,7 +29,7 @@ void main() { ...@@ -29,7 +29,7 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus', method: 'checkPermissionStatus',
result: PermissionStatus.denied.index, result: PermissionStatus.denied.value,
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
...@@ -45,7 +45,7 @@ void main() { ...@@ -45,7 +45,7 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus', method: 'checkPermissionStatus',
result: PermissionStatus.restricted.index, result: PermissionStatus.restricted.value,
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
...@@ -61,7 +61,7 @@ void main() { ...@@ -61,7 +61,7 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus', method: 'checkPermissionStatus',
result: PermissionStatus.limited.index, result: PermissionStatus.limited.value,
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
...@@ -77,7 +77,7 @@ void main() { ...@@ -77,7 +77,7 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus', method: 'checkPermissionStatus',
result: PermissionStatus.permanentlyDenied.index, result: PermissionStatus.permanentlyDenied.value,
); );
final permissionStatus = await MethodChannelPermissionHandler() final permissionStatus = await MethodChannelPermissionHandler()
...@@ -95,7 +95,7 @@ void main() { ...@@ -95,7 +95,7 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkServiceStatus', method: 'checkServiceStatus',
result: ServiceStatus.disabled.index, result: ServiceStatus.disabled.value,
); );
final serviceStatus = await MethodChannelPermissionHandler() final serviceStatus = await MethodChannelPermissionHandler()
...@@ -109,7 +109,7 @@ void main() { ...@@ -109,7 +109,7 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkServiceStatus', method: 'checkServiceStatus',
result: ServiceStatus.enabled.index, result: ServiceStatus.enabled.value,
); );
final serviceStatus = await MethodChannelPermissionHandler() final serviceStatus = await MethodChannelPermissionHandler()
...@@ -125,7 +125,7 @@ void main() { ...@@ -125,7 +125,7 @@ void main() {
MethodChannelMock( MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods', channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkServiceStatus', method: 'checkServiceStatus',
result: ServiceStatus.notApplicable.index, result: ServiceStatus.notApplicable.value,
); );
final serviceStatus = await MethodChannelPermissionHandler() final serviceStatus = await MethodChannelPermissionHandler()
...@@ -162,4 +162,22 @@ void main() { ...@@ -162,4 +162,22 @@ void main() {
expect(hasOpenedAppSettings, false); expect(hasOpenedAppSettings, false);
}); });
}); });
group('shouldShowRequestPermissionRationale:', () {
test(
// ignore: lines_longer_than_80_chars
'should return true when you should show a rationale for requesting permission.',
() async {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'shouldShowRequestPermissionRationale',
result: true,
);
final shouldShowRationale = await MethodChannelPermissionHandler()
.shouldShowRequestPermissionRationale(mockPermissions.first);
expect(shouldShowRationale, true);
});
});
} }
...@@ -5,7 +5,7 @@ import 'package:permission_handler_platform_interface/src/method_channel/utils/c ...@@ -5,7 +5,7 @@ import 'package:permission_handler_platform_interface/src/method_channel/utils/c
void main() { void main() {
group('Codec', () { group('Codec', () {
test('decodePermissionStatus should return a PermissionStatus', () { test('decodePermissionStatus should return a PermissionStatus', () {
expect(Codec.decodePermissionStatus(0), PermissionStatus.granted); expect(Codec.decodePermissionStatus(0), PermissionStatus.denied);
}); });
test('decodeServiceStatus should a corresponding ServiceStatus', () { test('decodeServiceStatus should a corresponding ServiceStatus', () {
......
...@@ -2,6 +2,7 @@ import 'package:flutter_test/flutter_test.dart'; ...@@ -2,6 +2,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart'; import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart';
void main() { void main() {
group('PermissionSatus', () {
test('PermissionStatus should contain 5 options', () { test('PermissionStatus should contain 5 options', () {
final values = PermissionStatus.values; final values = PermissionStatus.values;
...@@ -11,24 +12,52 @@ void main() { ...@@ -11,24 +12,52 @@ void main() {
test('PermissionStatus enum should have items in correct index', () { test('PermissionStatus enum should have items in correct index', () {
final values = PermissionStatus.values; final values = PermissionStatus.values;
expect(values[0], PermissionStatus.granted); expect(values[0], PermissionStatus.denied);
expect(values[1], PermissionStatus.denied); expect(values[1], PermissionStatus.granted);
expect(values[2], PermissionStatus.restricted); expect(values[2], PermissionStatus.restricted);
expect(values[3], PermissionStatus.limited); expect(values[3], PermissionStatus.limited);
expect(values[4], PermissionStatus.permanentlyDenied); expect(values[4], PermissionStatus.permanentlyDenied);
}); });
});
group('PermissionStatusValue', () {
test('PermissonStatusValue returns right integer', () {
expect(PermissionStatus.denied.value, 0);
expect(PermissionStatus.granted.value, 1);
expect(PermissionStatus.restricted.value, 2);
expect(PermissionStatus.limited.value, 3);
expect(PermissionStatus.permanentlyDenied.value, 4);
});
test( test(
// ignore: lines_longer_than_80_chars // ignore: lines_longer_than_80_chars
'statusByValue should return right index int that corresponds with the right PermissionStatus', 'statusByValue should return right index int that corresponds with the right PermissionStatus',
() { () {
expect(PermissionStatusValue.statusByValue(0), PermissionStatus.granted); expect(PermissionStatusValue.statusByValue(0), PermissionStatus.denied);
expect(PermissionStatusValue.statusByValue(1), PermissionStatus.denied); expect(PermissionStatusValue.statusByValue(1), PermissionStatus.granted);
expect(PermissionStatusValue.statusByValue(2), PermissionStatus.restricted); expect(
PermissionStatusValue.statusByValue(2), PermissionStatus.restricted);
expect(PermissionStatusValue.statusByValue(3), PermissionStatus.limited); expect(PermissionStatusValue.statusByValue(3), PermissionStatus.limited);
expect(PermissionStatusValue.statusByValue(4), expect(PermissionStatusValue.statusByValue(4),
PermissionStatus.permanentlyDenied); PermissionStatus.permanentlyDenied);
}); });
});
//TODO: Kan je de Getters testen? group('PermissionStatusGetters', () {
test('Getters should return true if statement is met', () {
expect(PermissionStatus.denied.isDenied, true);
expect(PermissionStatus.granted.isGranted, true);
expect(PermissionStatus.restricted.isRestricted, true);
expect(PermissionStatus.limited.isLimited, true);
expect(PermissionStatus.permanentlyDenied.isPermanentlyDenied, true);
});
test('Getters should return false if statement is not met', () {
expect(PermissionStatus.denied.isGranted, false);
expect(PermissionStatus.granted.isDenied, false);
expect(PermissionStatus.restricted.isDenied, false);
expect(PermissionStatus.limited.isDenied, false);
expect(PermissionStatus.permanentlyDenied.isDenied, false);
});
});
} }
...@@ -16,10 +16,4 @@ void main() { ...@@ -16,10 +16,4 @@ void main() {
expect(values[i], Permission.byValue(i)); expect(values[i], Permission.byValue(i));
} }
}); });
test('check if byValue returns corresponding PermissionGroup value', () {
var permissionWithService = PermissionWithService.private(0);
var test = permissionWithService.toString();
expect(test, 'Permission.calendar');
});
} }
...@@ -2,19 +2,28 @@ import 'package:flutter_test/flutter_test.dart'; ...@@ -2,19 +2,28 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart'; import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart';
void main() { void main() {
group('ServiceStatus', () {
test('ServiceStatus should contain 3 options', () { test('ServiceStatus should contain 3 options', () {
final values = ServiceStatus.values; final values = ServiceStatus.values;
expect(values.length, 3); expect(values.length, 3);
}); });
test('PermissionStatus enum should have items in correct index', () { test('ServiceStatus enum should have items in correct index', () {
final values = ServiceStatus.values; final values = ServiceStatus.values;
expect(values[0], ServiceStatus.disabled); expect(values[0], ServiceStatus.disabled);
expect(values[1], ServiceStatus.enabled); expect(values[1], ServiceStatus.enabled);
expect(values[2], ServiceStatus.notApplicable); expect(values[2], ServiceStatus.notApplicable);
}); });
});
group('ServiceStatusValue', () {
test('ServiceStatusValue returns right integer', () {
expect(ServiceStatus.disabled.value, 0);
expect(ServiceStatus.enabled.value, 1);
expect(ServiceStatus.notApplicable.value, 2);
});
test( test(
// ignore: lines_longer_than_80_chars // ignore: lines_longer_than_80_chars
...@@ -24,6 +33,19 @@ void main() { ...@@ -24,6 +33,19 @@ void main() {
expect(ServiceStatusValue.statusByValue(1), ServiceStatus.enabled); expect(ServiceStatusValue.statusByValue(1), ServiceStatus.enabled);
expect(ServiceStatusValue.statusByValue(2), ServiceStatus.notApplicable); expect(ServiceStatusValue.statusByValue(2), ServiceStatus.notApplicable);
}); });
});
//TODO: Kan je de Getters testen? group('ServiceStatusGetters', () {
test('Getters should return true if statement is met', () {
expect(ServiceStatus.disabled.isDisabled, true);
expect(ServiceStatus.enabled.isEnabled, true);
expect(ServiceStatus.notApplicable.isNotApplicable, true);
});
test('Getters should return false if statement is not met', () {
expect(ServiceStatus.disabled.isEnabled, false);
expect(ServiceStatus.enabled.isDisabled, false);
expect(ServiceStatus.notApplicable.isDisabled, false);
});
});
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment