46 lines
1.2 KiB
Dart
46 lines
1.2 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:tasq/providers/tasks_provider.dart';
|
|
|
|
void main() {
|
|
test(
|
|
'chooseAutoAssignCandidate picks latest check-in (late-comer priority)',
|
|
() {
|
|
final now = DateTime(2026, 2, 18, 12, 0, 0);
|
|
final earlier = AutoAssignCandidate(
|
|
userId: 'user-1',
|
|
checkInAt: now.subtract(const Duration(hours: 2)),
|
|
completedToday: 0,
|
|
);
|
|
final later = AutoAssignCandidate(
|
|
userId: 'user-2',
|
|
checkInAt: now.subtract(const Duration(hours: 1)),
|
|
completedToday: 0,
|
|
);
|
|
|
|
final chosen = chooseAutoAssignCandidate([earlier, later]);
|
|
expect(chosen, equals('user-2'));
|
|
},
|
|
);
|
|
|
|
test('chooseAutoAssignCandidate uses completed count as tie-breaker', () {
|
|
final now = DateTime(2026, 2, 18, 9, 0, 0);
|
|
final a = AutoAssignCandidate(
|
|
userId: 'a',
|
|
checkInAt: now,
|
|
completedToday: 5,
|
|
);
|
|
final b = AutoAssignCandidate(
|
|
userId: 'b',
|
|
checkInAt: now,
|
|
completedToday: 2,
|
|
);
|
|
|
|
final chosen = chooseAutoAssignCandidate([a, b]);
|
|
expect(chosen, equals('b'));
|
|
});
|
|
|
|
test('chooseAutoAssignCandidate returns null for empty list', () {
|
|
expect(chooseAutoAssignCandidate([]), isNull);
|
|
});
|
|
}
|