Files
eatvio_app/test/features/menu/models/notification_settings_model_test.dart
2026-01-14 18:47:11 +03:00

113 lines
4.3 KiB
Dart

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