From 78a74877e3e1c7759fe4f875a9a1976878cb2941 Mon Sep 17 00:00:00 2001 From: Koen Van Looveren Date: Mon, 5 Jun 2023 12:15:49 +0200 Subject: [PATCH 1/3] #134 Removed the ignore --- CHANGELOG.md | 9 +- example/lib/model/user/testing.dart | 6 +- example/pubspec.yaml | 5 +- lib/config/yml_generator_config.dart | 8 + lib/model/field.dart | 4 + lib/writer/object_model_writer.dart | 9 +- pubspec.yaml | 20 +- test/model/field_test.dart | 8 + .../object_model_writer/ignore/output.txt | 2 +- .../includeFromJson/config.txt | 8 + .../includeFromJson/output.txt | 20 ++ .../includeFromJson/pubspec.txt | 4 + .../includeToJson-includeFromJson/config.txt | 9 + .../includeToJson-includeFromJson/output.txt | 20 ++ .../includeToJson-includeFromJson/pubspec.txt | 4 + .../includeToJson/config.txt | 8 + .../includeToJson/output.txt | 20 ++ .../includeToJson/pubspec.txt | 4 + test/writer/object_model_writer_test.dart | 224 ++++++++++++++---- 19 files changed, 326 insertions(+), 66 deletions(-) create mode 100644 test/writer/object_model_writer/includeFromJson/config.txt create mode 100644 test/writer/object_model_writer/includeFromJson/output.txt create mode 100644 test/writer/object_model_writer/includeFromJson/pubspec.txt create mode 100644 test/writer/object_model_writer/includeToJson-includeFromJson/config.txt create mode 100644 test/writer/object_model_writer/includeToJson-includeFromJson/output.txt create mode 100644 test/writer/object_model_writer/includeToJson-includeFromJson/pubspec.txt create mode 100644 test/writer/object_model_writer/includeToJson/config.txt create mode 100644 test/writer/object_model_writer/includeToJson/output.txt create mode 100644 test/writer/object_model_writer/includeToJson/pubspec.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index a35fb7f..87bafea 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,13 @@ # Changelog +## [6.3.0] - 2023-06-05 +- Fixed the deprecated `ignore` field. Added +``` + includeFromJson: true + includeToJson: true, +``` + ## [6.2.1] - 2023-03-07 -- Updated the enum model generator to correctly generate the (reverse)Mapping based on the item_type +- Updated the enum model generator to correctly generate the (reverse)Mapping based on the item_type ## [6.2.0] - 2023-02-23 - Better enum support. Right now, String, int, double can be used to map a value to an enum. diff --git a/example/lib/model/user/testing.dart b/example/lib/model/user/testing.dart index cc44e3f..d99ceed 100644 --- a/example/lib/model/user/testing.dart +++ b/example/lib/model/user/testing.dart @@ -10,7 +10,11 @@ part 'testing.g.dart'; class Testing { @JsonKey(name: 'beneficiary', required: true, includeIfNull: false) final String beneficiary; - @JsonKey(name: 'isFavourite', includeIfNull: false, ignore: true) + @JsonKey( + name: 'isFavourite', + includeIfNull: false, + includeFromJson: false, + includeToJson: false) String? isFavourite; @JsonKey(name: 'structuredMessage', includeIfNull: false) final String? structuredMessage; diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 0c0b976..8450269 100755 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -8,13 +8,14 @@ environment: dependencies: flutter: sdk: flutter - json_serializable: ^6.6.1 + json_annotation: ^4.8.1 provider: ^6.0.5 dev_dependencies: - build_runner: ^2.3.3 + build_runner: ^2.4.4 flutter_test: sdk: flutter + json_serializable: ^6.7.0 model_generator: path: ../ diff --git a/lib/config/yml_generator_config.dart b/lib/config/yml_generator_config.dart index cb462a6..ed98d71 100644 --- a/lib/config/yml_generator_config.dart +++ b/lib/config/yml_generator_config.dart @@ -184,6 +184,10 @@ class YmlGeneratorConfig { property.containsKey('required') && property['required'] == true; final ignored = property.containsKey('ignore') && property['ignore'] == true; + final includeFromJson = !property.containsKey('includeFromJson') || + property['includeFromJson'] == true; + final includeToJson = !property.containsKey('includeToJson') || + property['includeToJson'] == true; final nonFinal = ignored || property.containsKey('non_final') && property['non_final'] == true; final includeIfNull = property.containsKey('include_if_null') && @@ -241,6 +245,8 @@ class YmlGeneratorConfig { type: itemType, isRequired: required, ignore: ignored, + includeFromJson: includeFromJson, + includeToJson: includeToJson, jsonKey: jsonKey, nonFinal: nonFinal, description: description, @@ -269,6 +275,8 @@ class YmlGeneratorConfig { type: type, isRequired: !optional, ignore: false, + includeToJson: true, + includeFromJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, diff --git a/lib/model/field.dart b/lib/model/field.dart index 27d9240..26950c4 100644 --- a/lib/model/field.dart +++ b/lib/model/field.dart @@ -8,6 +8,8 @@ class Field { final ItemType type; final bool isRequired; final bool ignore; + final bool includeFromJson; + final bool includeToJson; final bool includeIfNull; final bool nonFinal; final String? unknownEnumValue; @@ -25,6 +27,8 @@ class Field { required this.type, required this.isRequired, required this.ignore, + required this.includeFromJson, + required this.includeToJson, required this.includeIfNull, required this.nonFinal, required this.ignoreEquality, diff --git a/lib/writer/object_model_writer.dart b/lib/writer/object_model_writer.dart index 0d563a1..aef0514 100644 --- a/lib/writer/object_model_writer.dart +++ b/lib/writer/object_model_writer.dart @@ -115,7 +115,14 @@ class ObjectModelWriter { } if (key.ignore) { - sb.write(', ignore: true'); + sb.write(', includeFromJson: false, includeToJson: false'); + } else { + if (!key.includeFromJson) { + sb.write(', includeFromJson: false'); + } + if (!key.includeToJson) { + sb.write(', includeToJson: false'); + } } if (key.unknownEnumValue != null) { diff --git a/pubspec.yaml b/pubspec.yaml index 3af275b..6b26317 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,18 +1,18 @@ name: model_generator -description: Dart tool to automaticly generate models from a yml file to speed up your development flow. -version: 6.2.1 +description: Dart tool to automatically generate models from a yml file to speed up your development flow. +version: 6.3.0 homepage: https://github.com/icapps/flutter-model-generator environment: - sdk: ">=2.17.0 <3.0.0" + sdk: ">=3.0.0 <4.0.0" dependencies: - args: ^2.3.0 - meta: ^1.3.0 - path: ^1.8.0 - pub_semver: ^2.1.0 - yaml: ^3.1.0 + args: ^2.4.1 + meta: ^1.9.1 + path: ^1.8.3 + pub_semver: ^2.1.4 + yaml: ^3.1.2 dev_dependencies: - test: 1.21.6 - lints: ^2.0.0 + test: ^1.24.3 + lints: ^2.1.1 diff --git a/test/model/field_test.dart b/test/model/field_test.dart index 129b1bf..6f1da99 100644 --- a/test/model/field_test.dart +++ b/test/model/field_test.dart @@ -10,6 +10,8 @@ void main() { type: StringType(), isRequired: true, ignore: true, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: true, ignoreEquality: false, @@ -32,6 +34,8 @@ void main() { type: StringType(), isRequired: true, ignore: true, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: true, nonFinal: true, @@ -56,6 +60,8 @@ void main() { type: StringType(), isRequired: true, ignore: true, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: true, nonFinal: true, @@ -78,6 +84,8 @@ void main() { type: StringType(), isRequired: true, ignore: true, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: true, nonFinal: true, diff --git a/test/writer/object_model_writer/ignore/output.txt b/test/writer/object_model_writer/ignore/output.txt index 395c22d..5f894a3 100644 --- a/test/writer/object_model_writer/ignore/output.txt +++ b/test/writer/object_model_writer/ignore/output.txt @@ -6,7 +6,7 @@ part 'person.g.dart'; @JsonSerializable(explicitToJson: true) class Person { - @JsonKey(name: 'firstName', ignore: true) + @JsonKey(name: 'firstName', includeFromJson: false, includeToJson: false) final String? firstName; const Person({ diff --git a/test/writer/object_model_writer/includeFromJson/config.txt b/test/writer/object_model_writer/includeFromJson/config.txt new file mode 100644 index 0000000..debbf92 --- /dev/null +++ b/test/writer/object_model_writer/includeFromJson/config.txt @@ -0,0 +1,8 @@ +Person: + path: user/person/ + type: object + properties: + firstName: + required: false + includeFromJson: false + type: string \ No newline at end of file diff --git a/test/writer/object_model_writer/includeFromJson/output.txt b/test/writer/object_model_writer/includeFromJson/output.txt new file mode 100644 index 0000000..56eef5c --- /dev/null +++ b/test/writer/object_model_writer/includeFromJson/output.txt @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +import 'package:json_annotation/json_annotation.dart'; + +part 'person.g.dart'; + +@JsonSerializable(explicitToJson: true) +class Person { + @JsonKey(name: 'firstName', includeFromJson: false) + final String? firstName; + + const Person({ + this.firstName, + }); + + factory Person.fromJson(Map json) => _$PersonFromJson(json); + + Map toJson() => _$PersonToJson(this); + +} diff --git a/test/writer/object_model_writer/includeFromJson/pubspec.txt b/test/writer/object_model_writer/includeFromJson/pubspec.txt new file mode 100644 index 0000000..95f3114 --- /dev/null +++ b/test/writer/object_model_writer/includeFromJson/pubspec.txt @@ -0,0 +1,4 @@ +name: model_generator_example + +model_generator: + config_path: model_generator/config.yaml diff --git a/test/writer/object_model_writer/includeToJson-includeFromJson/config.txt b/test/writer/object_model_writer/includeToJson-includeFromJson/config.txt new file mode 100644 index 0000000..5ca6aa8 --- /dev/null +++ b/test/writer/object_model_writer/includeToJson-includeFromJson/config.txt @@ -0,0 +1,9 @@ +Person: + path: user/person/ + type: object + properties: + firstName: + required: false + includeFromJson: false + includeToJson: false + type: string \ No newline at end of file diff --git a/test/writer/object_model_writer/includeToJson-includeFromJson/output.txt b/test/writer/object_model_writer/includeToJson-includeFromJson/output.txt new file mode 100644 index 0000000..5f894a3 --- /dev/null +++ b/test/writer/object_model_writer/includeToJson-includeFromJson/output.txt @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +import 'package:json_annotation/json_annotation.dart'; + +part 'person.g.dart'; + +@JsonSerializable(explicitToJson: true) +class Person { + @JsonKey(name: 'firstName', includeFromJson: false, includeToJson: false) + final String? firstName; + + const Person({ + this.firstName, + }); + + factory Person.fromJson(Map json) => _$PersonFromJson(json); + + Map toJson() => _$PersonToJson(this); + +} diff --git a/test/writer/object_model_writer/includeToJson-includeFromJson/pubspec.txt b/test/writer/object_model_writer/includeToJson-includeFromJson/pubspec.txt new file mode 100644 index 0000000..95f3114 --- /dev/null +++ b/test/writer/object_model_writer/includeToJson-includeFromJson/pubspec.txt @@ -0,0 +1,4 @@ +name: model_generator_example + +model_generator: + config_path: model_generator/config.yaml diff --git a/test/writer/object_model_writer/includeToJson/config.txt b/test/writer/object_model_writer/includeToJson/config.txt new file mode 100644 index 0000000..ea5b3bf --- /dev/null +++ b/test/writer/object_model_writer/includeToJson/config.txt @@ -0,0 +1,8 @@ +Person: + path: user/person/ + type: object + properties: + firstName: + required: false + includeToJson: false + type: string \ No newline at end of file diff --git a/test/writer/object_model_writer/includeToJson/output.txt b/test/writer/object_model_writer/includeToJson/output.txt new file mode 100644 index 0000000..58167c6 --- /dev/null +++ b/test/writer/object_model_writer/includeToJson/output.txt @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +import 'package:json_annotation/json_annotation.dart'; + +part 'person.g.dart'; + +@JsonSerializable(explicitToJson: true) +class Person { + @JsonKey(name: 'firstName', includeToJson: false) + final String? firstName; + + const Person({ + this.firstName, + }); + + factory Person.fromJson(Map json) => _$PersonFromJson(json); + + Map toJson() => _$PersonToJson(this); + +} diff --git a/test/writer/object_model_writer/includeToJson/pubspec.txt b/test/writer/object_model_writer/includeToJson/pubspec.txt new file mode 100644 index 0000000..95f3114 --- /dev/null +++ b/test/writer/object_model_writer/includeToJson/pubspec.txt @@ -0,0 +1,4 @@ +name: model_generator_example + +model_generator: + config_path: model_generator/config.yaml diff --git a/test/writer/object_model_writer_test.dart b/test/writer/object_model_writer_test.dart index fe8a69a..949cd23 100644 --- a/test/writer/object_model_writer_test.dart +++ b/test/writer/object_model_writer_test.dart @@ -24,6 +24,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -34,9 +36,7 @@ void main() { WriterTestHelper.testObjectModelWriter(model, [], 'normal'); }); - test( - 'Normal ObjectModelWriter with not required field - equals and hashcode', - () { + test('Normal ObjectModelWriter with not required field - equals and hashcode', () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -49,6 +49,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, ignoreEquality: false, includeIfNull: true, nonFinal: false, @@ -56,8 +58,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'normal-equals-hashcode'); + WriterTestHelper.testObjectModelWriter(model, [], 'normal-equals-hashcode'); }); test('Normal ObjectModelWriter with explicit to json false', () { @@ -75,14 +76,15 @@ void main() { ignoreEquality: false, isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'explicit-to-json-false'); + WriterTestHelper.testObjectModelWriter(model, [], 'explicit-to-json-false'); }); test('Normal ObjectModelWriter with explicit to json false in pubspec', () { final model = ObjectModel( @@ -97,6 +99,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -104,8 +108,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'explicit-to-json-false-pubspec'); + WriterTestHelper.testObjectModelWriter(model, [], 'explicit-to-json-false-pubspec'); }); test('Normal ObjectModelWriter with extra annotations', () { final model = ObjectModel( @@ -121,6 +124,8 @@ void main() { isRequired: false, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), @@ -143,6 +148,8 @@ void main() { ignoreEquality: false, isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), @@ -166,6 +173,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -173,8 +182,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'extra-imports-on-model'); + WriterTestHelper.testObjectModelWriter(model, [], 'extra-imports-on-model'); }); test('Normal ObjectModelWriter with required field', () { final model = ObjectModel( @@ -190,6 +198,8 @@ void main() { isRequired: true, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), @@ -212,6 +222,8 @@ void main() { ignoreEquality: false, isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), @@ -221,6 +233,8 @@ void main() { isRequired: false, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), @@ -243,6 +257,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, ignoreEquality: false, includeIfNull: true, nonFinal: false, @@ -250,8 +266,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'generate-for-generics'); + WriterTestHelper.testObjectModelWriter(model, [], 'generate-for-generics'); }); test('ObjectModelWriter with generate for generics override option', () { @@ -268,14 +283,15 @@ void main() { isRequired: true, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'generate-for-generics-override'); + WriterTestHelper.testObjectModelWriter(model, [], 'generate-for-generics-override'); }); test('ObjectModelWriter with generate for generics override option 2', () { @@ -291,6 +307,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -298,11 +316,10 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'generate-for-generics-override-2'); + WriterTestHelper.testObjectModelWriter(model, [], 'generate-for-generics-override-2'); }); - test('Normal ObjectModelWriter with ignroe field', () { + test('Normal ObjectModelWriter with includeFromJson field', () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -314,7 +331,58 @@ void main() { name: 'firstName', type: StringType(), isRequired: false, - ignore: true, + ignore: false, + includeFromJson: false, + includeToJson: true, + includeIfNull: true, + ignoreEquality: false, + nonFinal: false, + ), + ], + converters: [], + ); + WriterTestHelper.testObjectModelWriter(model, [], 'includeFromJson'); + }); + test('Normal ObjectModelWriter with includeToJson field', () { + final model = ObjectModel( + name: 'Person', + path: 'path_to_my_model', + baseDirectory: 'base_dir', + generateForGenerics: false, + staticCreate: false, + fields: [ + Field( + name: 'firstName', + type: StringType(), + isRequired: false, + ignore: false, + includeFromJson: true, + includeToJson: false, + includeIfNull: true, + ignoreEquality: false, + nonFinal: false, + ), + ], + converters: [], + ); + WriterTestHelper.testObjectModelWriter(model, [], 'includeToJson'); + }); + + test('Normal ObjectModelWriter with includeFromJson and includeToJson field', () { + final model = ObjectModel( + name: 'Person', + path: 'path_to_my_model', + baseDirectory: 'base_dir', + generateForGenerics: false, + staticCreate: false, + fields: [ + Field( + name: 'firstName', + type: StringType(), + isRequired: false, + ignore: false, + includeFromJson: false, + includeToJson: false, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -322,7 +390,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'ignore'); + WriterTestHelper.testObjectModelWriter(model, [], 'includeToJson-includeFromJson'); }); test('Normal ObjectModelWriter with import sorting', () { @@ -338,6 +406,8 @@ void main() { type: ObjectType('AModel'), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -361,6 +431,8 @@ void main() { type: ArrayType('String'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -384,6 +456,8 @@ void main() { type: MapType(key: 'String', valueName: 'int'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -407,6 +481,8 @@ void main() { type: MapType(key: 'String', valueName: 'Person'), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -431,6 +507,8 @@ void main() { isRequired: false, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: true, ), @@ -454,6 +532,8 @@ void main() { isRequired: false, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: false, nonFinal: false, ), @@ -476,6 +556,8 @@ void main() { type: ObjectType('Gender'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, unknownEnumValue: 'X', @@ -501,6 +583,8 @@ void main() { isRequired: false, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: true, ), @@ -523,6 +607,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, ignoreEquality: false, includeIfNull: true, nonFinal: false, @@ -533,6 +619,8 @@ void main() { isRequired: true, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), @@ -541,6 +629,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -565,6 +655,8 @@ void main() { isRequired: false, ignoreEquality: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ), @@ -589,6 +681,8 @@ void main() { type: ObjectType('Address'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, ignoreEquality: false, includeIfNull: true, nonFinal: false, @@ -612,6 +706,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -625,13 +721,14 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, ), ]; - WriterTestHelper.testObjectModelWriter( - model, extendsFields, 'extend-fields'); + WriterTestHelper.testObjectModelWriter(model, extendsFields, 'extend-fields'); }); test('Normal ObjectModelWriter with extended fields', () { @@ -647,6 +744,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -660,6 +759,8 @@ void main() { type: ObjectType('Address'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -669,13 +770,14 @@ void main() { type: MapType(key: 'String', valueName: 'Address'), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, ), ]; - WriterTestHelper.testObjectModelWriter( - model, extendsFields, 'extend-fields-with-non-dart-type'); + WriterTestHelper.testObjectModelWriter(model, extendsFields, 'extend-fields-with-non-dart-type'); }); test('Normal ObjectModelWriter with extended fields twice', () { @@ -691,6 +793,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -704,6 +808,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -713,13 +819,14 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, ), ]; - WriterTestHelper.testObjectModelWriter( - model, extendsFields, 'extend-fields-twice'); + WriterTestHelper.testObjectModelWriter(model, extendsFields, 'extend-fields-twice'); }); test('Normal ObjectModelWriter with package import', () { @@ -735,6 +842,8 @@ void main() { type: ObjectType('Address'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -758,6 +867,8 @@ void main() { type: ObjectType('Address'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -781,6 +892,8 @@ void main() { type: ObjectType('Address'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, ignoreEquality: false, @@ -804,6 +917,8 @@ void main() { type: ObjectType('Address'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, nonFinal: false, toJson: 'handleToJson', @@ -830,6 +945,8 @@ void main() { type: ObjectType('Address'), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -839,8 +956,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'to-json-from-json-handler'); + WriterTestHelper.testObjectModelWriter(model, [], 'to-json-from-json-handler'); }); test('Normal ObjectModelWriter with static create', () { @@ -856,6 +972,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -866,9 +984,7 @@ void main() { WriterTestHelper.testObjectModelWriter(model, [], 'normal-static-create'); }); - test( - 'Normal ObjectModelWriter with all fields ignored from equals hashcode', - () { + test('Normal ObjectModelWriter with all fields ignored from equals hashcode', () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -882,6 +998,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: true, nonFinal: false, @@ -889,12 +1007,9 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'normal-equals-hashcode-empty'); + WriterTestHelper.testObjectModelWriter(model, [], 'normal-equals-hashcode-empty'); }); - test( - 'Normal ObjectModelWriter with some fields ignored from equals hashcode', - () { + test('Normal ObjectModelWriter with some fields ignored from equals hashcode', () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -908,6 +1023,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: true, nonFinal: false, @@ -917,6 +1034,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -924,8 +1043,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'normal-equals-hashcode-some-ignored'); + WriterTestHelper.testObjectModelWriter(model, [], 'normal-equals-hashcode-some-ignored'); }); test('Normal ObjectModelWriter with default field', () { final model = ObjectModel( @@ -940,6 +1058,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -963,6 +1083,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -971,8 +1093,7 @@ void main() { ], converters: [], description: 'A good class description'); - WriterTestHelper.testObjectModelWriter( - model, [], 'normal-with-description'); + WriterTestHelper.testObjectModelWriter(model, [], 'normal-with-description'); }); test('Normal ObjectModelWriter with default required field', () { final model = ObjectModel( @@ -987,6 +1108,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -995,11 +1118,9 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'default-field-required'); + WriterTestHelper.testObjectModelWriter(model, [], 'default-field-required'); }); - test('Normal ObjectModelWriter with default required field disallow null', - () { + test('Normal ObjectModelWriter with default required field disallow null', () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -1012,6 +1133,8 @@ void main() { type: StringType(), isRequired: true, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -1021,8 +1144,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'default-field-required-null-disallowed'); + WriterTestHelper.testObjectModelWriter(model, [], 'default-field-required-null-disallowed'); }); test('Normal ObjectModelWriter with retrofit compute', () { final model = ObjectModel( @@ -1037,6 +1159,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -1044,8 +1168,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'normal-retrofit-compute'); + WriterTestHelper.testObjectModelWriter(model, [], 'normal-retrofit-compute'); }); test('Normal ObjectModelWriter with retrofit compute - tearoff', () { final model = ObjectModel( @@ -1060,6 +1183,8 @@ void main() { type: StringType(), isRequired: false, ignore: false, + includeFromJson: true, + includeToJson: true, includeIfNull: true, ignoreEquality: false, nonFinal: false, @@ -1067,8 +1192,7 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter( - model, [], 'retrofit-compute-tearoff'); + WriterTestHelper.testObjectModelWriter(model, [], 'retrofit-compute-tearoff'); }); }); } From fbf4d8684eaffbfa00ed258ff224be9fd7b7c331 Mon Sep 17 00:00:00 2001 From: Koen Van Looveren Date: Mon, 5 Jun 2023 12:19:43 +0200 Subject: [PATCH 2/3] Fixed analyzer --- test/writer/object_model_writer_test.dart | 76 ++++++++++++++++------- 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/test/writer/object_model_writer_test.dart b/test/writer/object_model_writer_test.dart index 949cd23..55d5afb 100644 --- a/test/writer/object_model_writer_test.dart +++ b/test/writer/object_model_writer_test.dart @@ -36,7 +36,9 @@ void main() { WriterTestHelper.testObjectModelWriter(model, [], 'normal'); }); - test('Normal ObjectModelWriter with not required field - equals and hashcode', () { + test( + 'Normal ObjectModelWriter with not required field - equals and hashcode', + () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -58,7 +60,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'normal-equals-hashcode'); + WriterTestHelper.testObjectModelWriter( + model, [], 'normal-equals-hashcode'); }); test('Normal ObjectModelWriter with explicit to json false', () { @@ -84,7 +87,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'explicit-to-json-false'); + WriterTestHelper.testObjectModelWriter( + model, [], 'explicit-to-json-false'); }); test('Normal ObjectModelWriter with explicit to json false in pubspec', () { final model = ObjectModel( @@ -108,7 +112,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'explicit-to-json-false-pubspec'); + WriterTestHelper.testObjectModelWriter( + model, [], 'explicit-to-json-false-pubspec'); }); test('Normal ObjectModelWriter with extra annotations', () { final model = ObjectModel( @@ -182,7 +187,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'extra-imports-on-model'); + WriterTestHelper.testObjectModelWriter( + model, [], 'extra-imports-on-model'); }); test('Normal ObjectModelWriter with required field', () { final model = ObjectModel( @@ -266,7 +272,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'generate-for-generics'); + WriterTestHelper.testObjectModelWriter( + model, [], 'generate-for-generics'); }); test('ObjectModelWriter with generate for generics override option', () { @@ -291,7 +298,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'generate-for-generics-override'); + WriterTestHelper.testObjectModelWriter( + model, [], 'generate-for-generics-override'); }); test('ObjectModelWriter with generate for generics override option 2', () { @@ -316,7 +324,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'generate-for-generics-override-2'); + WriterTestHelper.testObjectModelWriter( + model, [], 'generate-for-generics-override-2'); }); test('Normal ObjectModelWriter with includeFromJson field', () { @@ -368,7 +377,9 @@ void main() { WriterTestHelper.testObjectModelWriter(model, [], 'includeToJson'); }); - test('Normal ObjectModelWriter with includeFromJson and includeToJson field', () { + test( + 'Normal ObjectModelWriter with includeFromJson and includeToJson field', + () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -390,7 +401,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'includeToJson-includeFromJson'); + WriterTestHelper.testObjectModelWriter( + model, [], 'includeToJson-includeFromJson'); }); test('Normal ObjectModelWriter with import sorting', () { @@ -728,7 +740,8 @@ void main() { ignoreEquality: false, ), ]; - WriterTestHelper.testObjectModelWriter(model, extendsFields, 'extend-fields'); + WriterTestHelper.testObjectModelWriter( + model, extendsFields, 'extend-fields'); }); test('Normal ObjectModelWriter with extended fields', () { @@ -777,7 +790,8 @@ void main() { ignoreEquality: false, ), ]; - WriterTestHelper.testObjectModelWriter(model, extendsFields, 'extend-fields-with-non-dart-type'); + WriterTestHelper.testObjectModelWriter( + model, extendsFields, 'extend-fields-with-non-dart-type'); }); test('Normal ObjectModelWriter with extended fields twice', () { @@ -826,7 +840,8 @@ void main() { ignoreEquality: false, ), ]; - WriterTestHelper.testObjectModelWriter(model, extendsFields, 'extend-fields-twice'); + WriterTestHelper.testObjectModelWriter( + model, extendsFields, 'extend-fields-twice'); }); test('Normal ObjectModelWriter with package import', () { @@ -956,7 +971,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'to-json-from-json-handler'); + WriterTestHelper.testObjectModelWriter( + model, [], 'to-json-from-json-handler'); }); test('Normal ObjectModelWriter with static create', () { @@ -984,7 +1000,9 @@ void main() { WriterTestHelper.testObjectModelWriter(model, [], 'normal-static-create'); }); - test('Normal ObjectModelWriter with all fields ignored from equals hashcode', () { + test( + 'Normal ObjectModelWriter with all fields ignored from equals hashcode', + () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -1007,9 +1025,12 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'normal-equals-hashcode-empty'); + WriterTestHelper.testObjectModelWriter( + model, [], 'normal-equals-hashcode-empty'); }); - test('Normal ObjectModelWriter with some fields ignored from equals hashcode', () { + test( + 'Normal ObjectModelWriter with some fields ignored from equals hashcode', + () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -1043,7 +1064,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'normal-equals-hashcode-some-ignored'); + WriterTestHelper.testObjectModelWriter( + model, [], 'normal-equals-hashcode-some-ignored'); }); test('Normal ObjectModelWriter with default field', () { final model = ObjectModel( @@ -1093,7 +1115,8 @@ void main() { ], converters: [], description: 'A good class description'); - WriterTestHelper.testObjectModelWriter(model, [], 'normal-with-description'); + WriterTestHelper.testObjectModelWriter( + model, [], 'normal-with-description'); }); test('Normal ObjectModelWriter with default required field', () { final model = ObjectModel( @@ -1118,9 +1141,11 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'default-field-required'); + WriterTestHelper.testObjectModelWriter( + model, [], 'default-field-required'); }); - test('Normal ObjectModelWriter with default required field disallow null', () { + test('Normal ObjectModelWriter with default required field disallow null', + () { final model = ObjectModel( name: 'Person', path: 'path_to_my_model', @@ -1144,7 +1169,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'default-field-required-null-disallowed'); + WriterTestHelper.testObjectModelWriter( + model, [], 'default-field-required-null-disallowed'); }); test('Normal ObjectModelWriter with retrofit compute', () { final model = ObjectModel( @@ -1168,7 +1194,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'normal-retrofit-compute'); + WriterTestHelper.testObjectModelWriter( + model, [], 'normal-retrofit-compute'); }); test('Normal ObjectModelWriter with retrofit compute - tearoff', () { final model = ObjectModel( @@ -1192,7 +1219,8 @@ void main() { ], converters: [], ); - WriterTestHelper.testObjectModelWriter(model, [], 'retrofit-compute-tearoff'); + WriterTestHelper.testObjectModelWriter( + model, [], 'retrofit-compute-tearoff'); }); }); } From 79ba95953641e7c10b56088dbed40c3c8430b33e Mon Sep 17 00:00:00 2001 From: Koen Van Looveren Date: Mon, 5 Jun 2023 12:59:05 +0200 Subject: [PATCH 3/3] #134: Updated readme.md --- CHANGELOG.md | 4 ++-- README.md | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87bafea..fc80023 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,8 @@ ## [6.3.0] - 2023-06-05 - Fixed the deprecated `ignore` field. Added ``` - includeFromJson: true - includeToJson: true, + includeFromJson: false + includeToJson: false ``` ## [6.2.1] - 2023-03-07 diff --git a/README.md b/README.md index c803577..94736ad 100755 --- a/README.md +++ b/README.md @@ -323,7 +323,13 @@ UserModel: include_if_null: false #If this field is null, this field will not be added to your json object (used for PATCH models) type: String ignoreField: - ignore: false #this field will not be final, and not be used in the json parsing + ignore: false #This field is ignored in the to & from json methods + type: String + ignoreFieldOnlyInFrom: + includeFromJson: false #This field is ignored in the from json method + type: String + ignoreFieldOnlyInTo: + includeToJson: false #This field is ignored in the to json method type: String mutableField: non_final: true #Field will not be marked final