87 lines
2.5 KiB
Dart
87 lines
2.5 KiB
Dart
|
|
import 'package:test/test.dart';
|
||
|
|
import 'package:mnemo_cards_telegram_bot/share_request_model.dart';
|
||
|
|
|
||
|
|
void main() {
|
||
|
|
group('ShareRequestModel', () {
|
||
|
|
test('isFromToday returns true for today\'s request', () {
|
||
|
|
final now = DateTime.now();
|
||
|
|
final model = ShareRequestModel(
|
||
|
|
telegramUserId: '123',
|
||
|
|
requestedAt: now,
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(model.isFromToday, isTrue);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('isFromToday returns false for yesterday\'s request', () {
|
||
|
|
final yesterday = DateTime.now().subtract(const Duration(days: 1));
|
||
|
|
final model = ShareRequestModel(
|
||
|
|
telegramUserId: '123',
|
||
|
|
requestedAt: yesterday,
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(model.isFromToday, isFalse);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('isFromToday returns false for tomorrow\'s request', () {
|
||
|
|
final tomorrow = DateTime.now().add(const Duration(days: 1));
|
||
|
|
final model = ShareRequestModel(
|
||
|
|
telegramUserId: '123',
|
||
|
|
requestedAt: tomorrow,
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(model.isFromToday, isFalse);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('Can create ShareRequestModel with all fields', () {
|
||
|
|
final model = ShareRequestModel(
|
||
|
|
telegramUserId: '123456',
|
||
|
|
telegramUsername: 'testuser',
|
||
|
|
requestedAt: DateTime.now(),
|
||
|
|
sharedCardId: 42,
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(model.telegramUserId, equals('123456'));
|
||
|
|
expect(model.telegramUsername, equals('testuser'));
|
||
|
|
expect(model.sharedCardId, equals(42));
|
||
|
|
expect(model.isFromToday, isTrue);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('Can create ShareRequestModel with minimal fields', () {
|
||
|
|
final now = DateTime.now();
|
||
|
|
final model = ShareRequestModel(
|
||
|
|
telegramUserId: '789',
|
||
|
|
requestedAt: now,
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(model.telegramUserId, equals('789'));
|
||
|
|
expect(model.requestedAt, equals(now));
|
||
|
|
expect(model.telegramUsername, isNull);
|
||
|
|
expect(model.sharedCardId, isNull);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('isFromToday works correctly at midnight boundaries', () {
|
||
|
|
// Test at 23:59:59 of today
|
||
|
|
final now = DateTime.now();
|
||
|
|
final almostTomorrow = DateTime(now.year, now.month, now.day, 23, 59, 59);
|
||
|
|
final modelToday = ShareRequestModel(
|
||
|
|
telegramUserId: '123',
|
||
|
|
requestedAt: almostTomorrow,
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(modelToday.isFromToday, isTrue);
|
||
|
|
|
||
|
|
// Test at 00:00:00 of tomorrow
|
||
|
|
final actualTomorrow = DateTime(now.year, now.month, now.day)
|
||
|
|
.add(const Duration(days: 1));
|
||
|
|
final modelTomorrow = ShareRequestModel(
|
||
|
|
telegramUserId: '123',
|
||
|
|
requestedAt: actualTomorrow,
|
||
|
|
);
|
||
|
|
|
||
|
|
expect(modelTomorrow.isFromToday, isFalse);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|