Commit 357df54f by Jan-Derk

Changed PermissionStatus enum, added tests

parent 36777b47
......@@ -3,10 +3,10 @@ part of permission_handler_platform_interface;
/// Defines the state of a [Permission].
enum PermissionStatus {
/// The user granted access to the requested feature.
granted,
denied,
/// The user denied access to the requested feature.
denied,
granted,
/// The OS denied access to the requested feature. The user cannot change
/// this app's status, possibly due to active restrictions such as parental
......@@ -28,9 +28,9 @@ enum PermissionStatus {
extension PermissionStatusValue on PermissionStatus {
int get value {
switch (this) {
case PermissionStatus.granted:
return 0;
case PermissionStatus.denied:
return 0;
case PermissionStatus.granted:
return 1;
case PermissionStatus.restricted:
return 2;
......@@ -45,8 +45,8 @@ extension PermissionStatusValue on PermissionStatus {
static PermissionStatus statusByValue(int value) {
return [
PermissionStatus.granted,
PermissionStatus.denied,
PermissionStatus.granted,
PermissionStatus.restricted,
PermissionStatus.limited,
PermissionStatus.permanentlyDenied,
......@@ -55,12 +55,12 @@ extension PermissionStatusValue 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.
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
/// this app's status, possibly due to active restrictions such as parental
/// controls being in place.
......
......@@ -15,9 +15,6 @@ class Permission {
const Permission._(this.value);
factory Permission.byValue(int value) => values[value];
@visibleForTesting
const Permission.private(this.value);
/// Integer representation of the [Permission].
final int value;
......
......@@ -15,13 +15,13 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus',
result: PermissionStatus.granted.index,
result: PermissionStatus.denied.value,
);
final permissionStatus = await MethodChannelPermissionHandler()
.checkPermissionStatus(Permission.calendar);
expect(permissionStatus, PermissionStatus.granted);
expect(permissionStatus, PermissionStatus.denied);
});
test('Should receive denied if user denied access to the requested feature',
......@@ -29,7 +29,7 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus',
result: PermissionStatus.denied.index,
result: PermissionStatus.denied.value,
);
final permissionStatus = await MethodChannelPermissionHandler()
......@@ -45,7 +45,7 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus',
result: PermissionStatus.restricted.index,
result: PermissionStatus.restricted.value,
);
final permissionStatus = await MethodChannelPermissionHandler()
......@@ -61,7 +61,7 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus',
result: PermissionStatus.limited.index,
result: PermissionStatus.limited.value,
);
final permissionStatus = await MethodChannelPermissionHandler()
......@@ -77,7 +77,7 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkPermissionStatus',
result: PermissionStatus.permanentlyDenied.index,
result: PermissionStatus.permanentlyDenied.value,
);
final permissionStatus = await MethodChannelPermissionHandler()
......@@ -95,7 +95,7 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkServiceStatus',
result: ServiceStatus.disabled.index,
result: ServiceStatus.disabled.value,
);
final serviceStatus = await MethodChannelPermissionHandler()
......@@ -109,7 +109,7 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkServiceStatus',
result: ServiceStatus.enabled.index,
result: ServiceStatus.enabled.value,
);
final serviceStatus = await MethodChannelPermissionHandler()
......@@ -125,7 +125,7 @@ void main() {
MethodChannelMock(
channelName: 'flutter.baseflow.com/permissions/methods',
method: 'checkServiceStatus',
result: ServiceStatus.notApplicable.index,
result: ServiceStatus.notApplicable.value,
);
final serviceStatus = await MethodChannelPermissionHandler()
......@@ -162,4 +162,22 @@ void main() {
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
void main() {
group('Codec', () {
test('decodePermissionStatus should return a PermissionStatus', () {
expect(Codec.decodePermissionStatus(0), PermissionStatus.granted);
expect(Codec.decodePermissionStatus(0), PermissionStatus.denied);
});
test('decodeServiceStatus should a corresponding ServiceStatus', () {
......
......@@ -2,33 +2,62 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart';
void main() {
test('PermissionStatus should contain 5 options', () {
final values = PermissionStatus.values;
group('PermissionSatus', () {
test('PermissionStatus should contain 5 options', () {
final values = PermissionStatus.values;
expect(values.length, 5);
});
expect(values.length, 5);
});
test('PermissionStatus enum should have items in correct index', () {
final values = PermissionStatus.values;
test('PermissionStatus enum should have items in correct index', () {
final values = PermissionStatus.values;
expect(values[0], PermissionStatus.granted);
expect(values[1], PermissionStatus.denied);
expect(values[2], PermissionStatus.restricted);
expect(values[3], PermissionStatus.limited);
expect(values[4], PermissionStatus.permanentlyDenied);
expect(values[0], PermissionStatus.denied);
expect(values[1], PermissionStatus.granted);
expect(values[2], PermissionStatus.restricted);
expect(values[3], PermissionStatus.limited);
expect(values[4], PermissionStatus.permanentlyDenied);
});
});
test(
// ignore: lines_longer_than_80_chars
'statusByValue should return right index int that corresponds with the right PermissionStatus',
() {
expect(PermissionStatusValue.statusByValue(0), PermissionStatus.granted);
expect(PermissionStatusValue.statusByValue(1), PermissionStatus.denied);
expect(PermissionStatusValue.statusByValue(2), PermissionStatus.restricted);
expect(PermissionStatusValue.statusByValue(3), PermissionStatus.limited);
expect(PermissionStatusValue.statusByValue(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(
// ignore: lines_longer_than_80_chars
'statusByValue should return right index int that corresponds with the right PermissionStatus',
() {
expect(PermissionStatusValue.statusByValue(0), PermissionStatus.denied);
expect(PermissionStatusValue.statusByValue(1), PermissionStatus.granted);
expect(
PermissionStatusValue.statusByValue(2), PermissionStatus.restricted);
expect(PermissionStatusValue.statusByValue(3), PermissionStatus.limited);
expect(PermissionStatusValue.statusByValue(4),
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() {
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,28 +2,50 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart';
void main() {
test('ServiceStatus should contain 3 options', () {
final values = ServiceStatus.values;
group('ServiceStatus', () {
test('ServiceStatus should contain 3 options', () {
final values = ServiceStatus.values;
expect(values.length, 3);
});
expect(values.length, 3);
});
test('PermissionStatus enum should have items in correct index', () {
final values = ServiceStatus.values;
test('ServiceStatus enum should have items in correct index', () {
final values = ServiceStatus.values;
expect(values[0], ServiceStatus.disabled);
expect(values[1], ServiceStatus.enabled);
expect(values[2], ServiceStatus.notApplicable);
expect(values[0], ServiceStatus.disabled);
expect(values[1], ServiceStatus.enabled);
expect(values[2], ServiceStatus.notApplicable);
});
});
test(
// ignore: lines_longer_than_80_chars
'statusByValue should return right index int that corresponds with the right PermissionStatus',
() {
expect(ServiceStatusValue.statusByValue(0), ServiceStatus.disabled);
expect(ServiceStatusValue.statusByValue(1), ServiceStatus.enabled);
expect(ServiceStatusValue.statusByValue(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(
// ignore: lines_longer_than_80_chars
'statusByValue should return right index int that corresponds with the right PermissionStatus',
() {
expect(ServiceStatusValue.statusByValue(0), ServiceStatus.disabled);
expect(ServiceStatusValue.statusByValue(1), ServiceStatus.enabled);
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