forked from eatvio/eatvio_app
57 lines
1.3 KiB
Dart
57 lines
1.3 KiB
Dart
import 'package:eatvio_app/features/feed/models/view_model.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
group('ViewModel', () {
|
|
test('fromJson parses all fields correctly', () {
|
|
final json = {
|
|
'type': 'diet',
|
|
'ids': [1, 2, 3],
|
|
'slugs': ['diet-1', 'diet-2'],
|
|
};
|
|
|
|
final model = ViewModel.fromJson(json);
|
|
|
|
expect(model.type, 'diet');
|
|
expect(model.ids, [1, 2, 3]);
|
|
expect(model.slugs, ['diet-1', 'diet-2']);
|
|
});
|
|
|
|
test('fromJson handles null optional fields', () {
|
|
final json = {
|
|
'type': 'plan',
|
|
};
|
|
|
|
final model = ViewModel.fromJson(json);
|
|
|
|
expect(model.type, 'plan');
|
|
expect(model.ids, isNull);
|
|
expect(model.slugs, isNull);
|
|
});
|
|
|
|
test('toJson serializes all fields correctly', () {
|
|
final model = ViewModel(
|
|
type: 'recipe',
|
|
ids: [1, 2],
|
|
slugs: ['recipe-1'],
|
|
);
|
|
|
|
final json = model.toJson();
|
|
|
|
expect(json['type'], 'recipe');
|
|
expect(json['ids'], [1, 2]);
|
|
expect(json['slugs'], ['recipe-1']);
|
|
});
|
|
|
|
test('toJson omits null fields', () {
|
|
final model = ViewModel(type: 'diet');
|
|
|
|
final json = model.toJson();
|
|
|
|
expect(json['type'], 'diet');
|
|
expect(json.containsKey('ids'), isTrue);
|
|
expect(json.containsKey('slugs'), isTrue);
|
|
});
|
|
});
|
|
}
|