test(do-not-disturb): add enabled field and toggle tests (4 new cases)
This commit is contained in:
@@ -2,6 +2,7 @@ import 'package:device_management/src/core/data/datasources/do_not_disturb_remot
|
||||
import 'package:device_management/src/core/providers/do_not_disturb_providers.dart';
|
||||
import 'package:device_management/src/features/do_not_disturb/domain/do_not_disturb_period.dart';
|
||||
import 'package:device_management/src/features/do_not_disturb/presentation/providers/do_not_disturb_controller.dart';
|
||||
import 'package:device_management/src/features/do_not_disturb/presentation/providers/do_not_disturb_editor_provider.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:mocktail/mocktail.dart';
|
||||
@@ -90,5 +91,78 @@ void main() {
|
||||
isA<AsyncError<void>>(),
|
||||
);
|
||||
});
|
||||
|
||||
test('sends periods with enabled field to repository', () async {
|
||||
final ds = MockDoNotDisturbRemoteDatasource();
|
||||
final disabledPeriod = _period.copyWith(enabled: false);
|
||||
when(
|
||||
() => ds.updatePeriods(
|
||||
identificator: any(named: 'identificator'),
|
||||
periods: any(named: 'periods'),
|
||||
),
|
||||
).thenAnswer((_) async => DoNotDisturbSchedule(
|
||||
id: 's1',
|
||||
deviceIdentificator: 'imei-1',
|
||||
periods: [disabledPeriod],
|
||||
));
|
||||
|
||||
final container = buildContainer(ds);
|
||||
addTearDown(container.dispose);
|
||||
|
||||
await container.read(doNotDisturbControllerProvider.notifier).save(
|
||||
deviceIdentificator: 'imei-1',
|
||||
periods: [disabledPeriod],
|
||||
);
|
||||
|
||||
expect(
|
||||
container.read(doNotDisturbControllerProvider),
|
||||
isA<AsyncData<void>>(),
|
||||
);
|
||||
verify(
|
||||
() => ds.updatePeriods(
|
||||
identificator: 'imei-1',
|
||||
periods: [disabledPeriod],
|
||||
),
|
||||
).called(1);
|
||||
});
|
||||
});
|
||||
|
||||
group('DoNotDisturbPeriod', () {
|
||||
test('enabled defaults to true', () {
|
||||
expect(_period.enabled, isTrue);
|
||||
});
|
||||
});
|
||||
|
||||
group('DoNotDisturbEditor.toggle', () {
|
||||
test('changes enabled state at given index', () {
|
||||
final container = makeContainer();
|
||||
addTearDown(container.dispose);
|
||||
|
||||
final editor = container.read(doNotDisturbEditorProvider.notifier);
|
||||
editor.add(current: const [], period: _period);
|
||||
|
||||
editor.toggle(current: const [], index: 0, enabled: false);
|
||||
|
||||
final periods = container.read(doNotDisturbEditorProvider);
|
||||
expect(periods, isNotNull);
|
||||
expect(periods!.first.enabled, isFalse);
|
||||
});
|
||||
|
||||
test('with enabled false sets period disabled', () {
|
||||
final container = makeContainer();
|
||||
addTearDown(container.dispose);
|
||||
|
||||
final editor = container.read(doNotDisturbEditorProvider.notifier);
|
||||
final periods = [_period, _period.copyWith(start: '10:00', end: '12:00')];
|
||||
editor.add(current: const [], period: periods[0]);
|
||||
editor.add(current: const [], period: periods[1]);
|
||||
|
||||
editor.toggle(current: const [], index: 1, enabled: false);
|
||||
|
||||
final result = container.read(doNotDisturbEditorProvider);
|
||||
expect(result, isNotNull);
|
||||
expect(result![0].enabled, isTrue);
|
||||
expect(result[1].enabled, isFalse);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user