import 'package:eatvio_app/features/menu/models/notification_settings_model.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { group('ReminderSettings', () { test('fromJson parses all fields correctly', () { final json = { 'enabled': true, 'local_time_hours': 9, 'local_time_mins': 30, }; final model = ReminderSettings.fromJson(json); expect(model.enabled, isTrue); expect(model.localTimeHours, 9); expect(model.localTimeMins, 30); }); test('toJson serializes all fields correctly', () { const model = ReminderSettings(enabled: true, localTimeHours: 9, localTimeMins: 30); final json = model.toJson(); expect(json['enabled'], isTrue); expect(json['local_time_hours'], 9); expect(json['local_time_mins'], 30); }); }); group('DiaryReminderNotifications', () { test('fromJson parses all reminders correctly', () { final json = { 'first_reminder': {'enabled': true, 'local_time_hours': 9, 'local_time_mins': 0}, 'second_reminder': {'enabled': false, 'local_time_hours': 13, 'local_time_mins': 0}, 'third_reminder': {'enabled': true, 'local_time_hours': 18, 'local_time_mins': 0}, }; final model = DiaryReminderNotifications.fromJson(json); expect(model.firstReminder.enabled, isTrue); expect(model.firstReminder.localTimeHours, 9); expect(model.secondReminder.enabled, isFalse); expect(model.thirdReminder.enabled, isTrue); }); test('toJson serializes all reminders correctly', () { const firstReminder = ReminderSettings(enabled: true, localTimeHours: 9, localTimeMins: 0); const secondReminder = ReminderSettings(enabled: false, localTimeHours: 13, localTimeMins: 0); const thirdReminder = ReminderSettings(enabled: true, localTimeHours: 18, localTimeMins: 0); const model = DiaryReminderNotifications( firstReminder: firstReminder, secondReminder: secondReminder, thirdReminder: thirdReminder, ); final json = model.toJson(); expect(json.containsKey('first_reminder'), isTrue); expect(json.containsKey('second_reminder'), isTrue); expect(json.containsKey('third_reminder'), isTrue); }); }); group('NotificationSettingsModel', () { test('fromJson parses all fields correctly', () { final json = { 'new_updates_notification': true, 'weight_measurements_notification': false, 'is_email_notifications_enabled': true, 'is_push_notifications_enabled': false, 'diary_reminder_notifications': { 'first_reminder': {'enabled': true, 'local_time_hours': 9, 'local_time_mins': 0}, 'second_reminder': {'enabled': false, 'local_time_hours': 13, 'local_time_mins': 0}, 'third_reminder': {'enabled': true, 'local_time_hours': 18, 'local_time_mins': 0}, }, }; final model = NotificationSettingsModel.fromJson(json); expect(model.newUpdatesNotification, isTrue); expect(model.weightMeasurementsNotification, isFalse); expect(model.isEmailNotificationsEnabled, isTrue); expect(model.isPushNotificationsEnabled, isFalse); expect(model.diaryReminderNotifications, isNotNull); }); test('toJson serializes all fields correctly', () { const diaryReminders = DiaryReminderNotifications( firstReminder: ReminderSettings(enabled: true, localTimeHours: 9, localTimeMins: 0), secondReminder: ReminderSettings(enabled: false, localTimeHours: 13, localTimeMins: 0), thirdReminder: ReminderSettings(enabled: true, localTimeHours: 18, localTimeMins: 0), ); const model = NotificationSettingsModel( newUpdatesNotification: true, weightMeasurementsNotification: false, isEmailNotificationsEnabled: true, isPushNotificationsEnabled: false, diaryReminderNotifications: diaryReminders, ); final json = model.toJson(); expect(json['new_updates_notification'], isTrue); expect(json['weight_measurements_notification'], isFalse); expect(json['is_email_notifications_enabled'], isTrue); expect(json['is_push_notifications_enabled'], isFalse); expect(json.containsKey('diary_reminder_notifications'), isTrue); }); }); }