mnemo_cards/mnemo_cards_telegram_bot/test/share_feature_test.dart

87 lines
2.5 KiB
Dart
Raw Normal View History

2025-11-10 23:55:41 +00:00
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);
});
});
}