import 'dart:convert'; import 'dart:collection'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:habo/habits/habit.dart'; import 'package:habo/model/habit_data.dart'; import 'package:intl/intl.dart'; void main() { group('Backup Enhancement Tests', () { group('Timestamp format', () { test('should use correct timestamp format', () { final now = DateTime(2023, 12, 25, 15, 30, 45); final formatted = DateFormat('yyyy-MM-dd_HH-mm-ss').format(now); expect(formatted, '2023-12-25_15-30-45'); }); test('should handle different times correctly', () { final morning = DateTime(2023, 1, 1, 9, 0, 0); final formatted = DateFormat('yyyy-MM-dd_HH-mm-ss').format(morning); expect(formatted, '2023-01-01_09-00-00'); }); }); group('Backup structure', () { test('should create backup with correct structure', () async { final testHabits = [ Habit( habitData: HabitData( position: 0, title: 'Test Habit', twoDayRule: true, cue: 'Morning coffee', routine: '10 pushups', reward: 'Feel energized', showReward: true, advanced: true, notification: true, notTime: const TimeOfDay(hour: 8, minute: 0), events: SplayTreeMap>(), sanction: 'No dessert', showSanction: true, accountant: 'self', ), ) ]; // Test JSON serialization directly final jsonData = jsonEncode(testHabits); expect(jsonData, isNotEmpty); expect(jsonData, contains('Test Habit')); expect(jsonData, contains('pushups')); final restoredHabits = jsonDecode(jsonData); expect(restoredHabits, isList); expect(restoredHabits.length, 1); }); test('should handle empty habits list', () async { final emptyHabits = []; // Test JSON serialization directly final jsonData = jsonEncode(emptyHabits); expect(jsonData, isNotEmpty); expect(jsonDecode(jsonData), isEmpty); }); }); }); }