test(do-not-disturb): add enabled field and toggle tests (4 new cases)

This commit is contained in:
2026-04-26 08:29:17 +02:00
parent 0d677afd32
commit cf6a9dd6df

View File

@@ -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);
});
});
}