diff --git a/lib/util/date_extension.dart b/lib/util/date_extension.dart index c7042b84524d9d921a1c0124b5abdda8a2652cb3..bf12ddbea21c87937a018937a100d1c5beec9200 100644 --- a/lib/util/date_extension.dart +++ b/lib/util/date_extension.dart @@ -24,6 +24,7 @@ extension DateExtension on DateTime { } DateTime atStartOfWeek() { - return subtract(Duration(days: weekday - 1)); + final date = subtract(Duration(days: weekday - 1)); + return DateTime(date.year, date.month, date.day); } } diff --git a/test/start_of_week_test.dart b/test/start_of_week_test.dart new file mode 100644 index 0000000000000000000000000000000000000000..745f47ba057393c7b6335490a32592dea3ba915a --- /dev/null +++ b/test/start_of_week_test.dart @@ -0,0 +1,33 @@ +import 'package:better_untis/util/date_extension.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + final startOfMonday = DateTime(2023, 3, 20, 0, 0); + + test('Start of week at start of monday', () { + final startOfWeek = startOfMonday.atStartOfWeek(); + + expect(startOfWeek, startOfMonday); + }); + + test('Start of week at end of tuesday', () { + final endOfTuesday = DateTime(2023, 3, 21, 23, 59); + final startOfWeek = endOfTuesday.atStartOfWeek(); + + expect(startOfWeek, startOfMonday); + }); + + test('Start of week at end of sunday', () { + final endOfSaturday = DateTime(2023, 3, 26, 23, 59); + final startOfWeek = endOfSaturday.atStartOfWeek(); + + expect(startOfWeek, startOfMonday); + }); + + test('Start of week at end of next monday', () { + final startOfNextMonday = DateTime(2023, 3, 27, 0, 0); + final startOfWeek = startOfNextMonday.atStartOfWeek(); + + expect(startOfWeek, startOfNextMonday); + }); +}