diff --git a/pubspec.lock b/pubspec.lock index 969288ffb..8bd0642bd 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1794,5 +1794,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.5.0 <=3.22.3" + dart: ">=3.4.0 <=3.4.4" flutter: ">=3.22.0" \ No newline at end of file diff --git a/test/views/after_auth_screens/events/create_custom_recurring_event_test.dart b/test/views/after_auth_screens/events/create_custom_recurring_event_test.dart index fbf53eb88..ec2c39bf9 100644 --- a/test/views/after_auth_screens/events/create_custom_recurring_event_test.dart +++ b/test/views/after_auth_screens/events/create_custom_recurring_event_test.dart @@ -413,25 +413,53 @@ void main() { }); }); - testWidgets('CustomWeekDaySelector', (tester) async { - final widget = createCustomRecurrenceScreen( - theme: TalawaTheme.darkTheme, + testWidgets( + 'CustomWeekDaySelector handles selecting and deselecting weekdays', + (tester) async { + final mockModel = CreateEventViewModel(); + mockModel.weekDays = {}; // Start with an empty set of selected weekdays. + + // Create the widget with the mock model + final widget = MaterialApp( + home: Scaffold( + body: CustomWeekDaySelector(model: mockModel), + ), ); + await tester.pumpWidget(widget); await tester.pump(); + // Verify the CustomWeekDaySelector widget is present expect(find.byType(CustomWeekDaySelector), findsOne); + // Tap "M" (Monday) to select it await tester.tap(find.text("M")); await tester.pumpAndSettle(); + + // Verify that "M" is selected and added to the model + expect(mockModel.weekDays, contains(WeekDays.monday)); + + // Tap "W" (Wednesday) to select it await tester.tap(find.text("W")); await tester.pumpAndSettle(); - expect(find.text("S"), findsNWidgets(2)); - expect(find.text("M"), findsNWidgets(1)); - expect(find.text("T"), findsNWidgets(2)); - expect(find.text("W"), findsNWidgets(1)); - expect(find.text("F"), findsNWidgets(1)); + // Verify that "W" is selected and added to the model + expect(mockModel.weekDays, contains(WeekDays.wednesday)); + + // Verify that unrelated weekdays remain unselected + expect(mockModel.weekDays, isNot(contains(WeekDays.sunday))); + expect(mockModel.weekDays, isNot(contains(WeekDays.friday))); + + // Tap "M" again to deselect it + await tester.tap(find.text("M")); + await tester.pumpAndSettle(); + + // Verify that "M" is removed from the model + expect(mockModel.weekDays, isNot(contains(WeekDays.monday))); + + // Final state checks + expect(mockModel.weekDays, contains(WeekDays.wednesday)); + expect(mockModel.weekDays.length, 1); }); testWidgets('EventEndOptions', (tester) async {