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); }); }); }