import 'package:flutter_test/flutter_test.dart'; import 'package:focus_buddy/services/encouragement_service.dart'; void main() { group('EncouragementService', () { late EncouragementService encouragementService; setUp(() { encouragementService = EncouragementService(); }); test('should initialize with default messages when load fails', () async { // Act: Try to load messages (will fail since we're in test environment) await encouragementService.loadMessages(); // Assert: Should have default messages for all types expect(encouragementService.getAllMessages(), isNotEmpty); expect(encouragementService.getAllMessages(EncouragementType.start), isNotEmpty); expect(encouragementService.getAllMessages(EncouragementType.distraction), isNotEmpty); expect(encouragementService.getAllMessages(EncouragementType.complete), isNotEmpty); expect(encouragementService.getAllMessages(EncouragementType.earlyStop), isNotEmpty); }); test('should return a random message for each type', () async { // Arrange: Load messages await encouragementService.loadMessages(); // Act: Get random messages for each type final generalMessage = encouragementService.getRandomMessage(); final startMessage = encouragementService.getRandomMessage(EncouragementType.start); final distractionMessage = encouragementService.getRandomMessage(EncouragementType.distraction); final completeMessage = encouragementService.getRandomMessage(EncouragementType.complete); final earlyStopMessage = encouragementService.getRandomMessage(EncouragementType.earlyStop); // Assert: All messages should be non-empty strings expect(generalMessage, isNotEmpty); expect(startMessage, isNotEmpty); expect(distractionMessage, isNotEmpty); expect(completeMessage, isNotEmpty); expect(earlyStopMessage, isNotEmpty); }); test('should return general messages when using default type', () async { // Arrange: Load messages await encouragementService.loadMessages(); final generalMessages = encouragementService.getAllMessages(); // Act: Get a random message with default type final message = encouragementService.getRandomMessage(); // Assert: Message should be in the general messages list expect(generalMessages, contains(message)); }); test('should return distraction-specific messages when requested', () async { // Arrange: Load messages await encouragementService.loadMessages(); final distractionMessages = encouragementService.getAllMessages(EncouragementType.distraction); // Act: Get a random distraction message final message = encouragementService.getRandomMessage(EncouragementType.distraction); // Assert: Message should be in the distraction messages list expect(distractionMessages, contains(message)); }); test('should return complete-specific messages when requested', () async { // Arrange: Load messages await encouragementService.loadMessages(); final completeMessages = encouragementService.getAllMessages(EncouragementType.complete); // Act: Get a random complete message final message = encouragementService.getRandomMessage(EncouragementType.complete); // Assert: Message should be in the complete messages list expect(completeMessages, contains(message)); }); }); }