feat(reports): controlled ReportDateFilter
Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:tasq/providers/reports_provider.dart';
|
||||
import 'package:tasq/screens/reports/report_date_filter.dart';
|
||||
import 'package:tasq/utils/app_time.dart';
|
||||
|
||||
void main() {
|
||||
setUpAll(() {
|
||||
AppTime.initialize();
|
||||
});
|
||||
|
||||
group('ReportDateFilter.controlled', () {
|
||||
testWidgets(
|
||||
'emits via onChanged and never writes provider',
|
||||
(tester) async {
|
||||
final now = DateTime(2025, 1, 15);
|
||||
final captured = <ReportDateRange>[];
|
||||
final container = ProviderContainer();
|
||||
addTearDown(container.dispose);
|
||||
|
||||
await tester.pumpWidget(
|
||||
UncontrolledProviderScope(
|
||||
container: container,
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: ReportDateFilter.controlled(
|
||||
value: thisMonthRange(now),
|
||||
onChanged: captured.add,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Tap the "Change" button to open the dialog
|
||||
await tester.tap(find.text('Change'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// Tap the "Yesterday" preset chip
|
||||
await tester.tap(find.text('Yesterday'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
// The onChanged callback received Yesterday
|
||||
expect(captured.single.label, 'Yesterday');
|
||||
|
||||
// The provider was NOT touched — still at its default label
|
||||
expect(container.read(reportDateRangeProvider).label, 'Last 30 Days');
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user