From 3b2272634a9bc3b8eff5564b3c79fe6ec0a73195 Mon Sep 17 00:00:00 2001 From: MBulli Date: Sat, 28 Dec 2024 11:33:31 +0100 Subject: [PATCH 1/3] Fixed creation of the temporary test directory in TempAssetWriter on Windows --- .../dart_mappable_builder/test/utils/temp_asset_writer.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/dart_mappable_builder/test/utils/temp_asset_writer.dart b/packages/dart_mappable_builder/test/utils/temp_asset_writer.dart index 4e0a02a5..e1e8c546 100644 --- a/packages/dart_mappable_builder/test/utils/temp_asset_writer.dart +++ b/packages/dart_mappable_builder/test/utils/temp_asset_writer.dart @@ -18,9 +18,7 @@ class TempAssetWriter implements RecordingAssetWriter { TempAssetWriter() { var id = Random().nextInt(1e6.round()); - dir = Directory.fromUri( - Uri.parse(path.join(Directory.systemTemp.path, 'mappable_$id'))); - dir.createSync(); + dir = Directory.systemTemp.createTempSync('mappable_$id'); } Future run(String code) async { From 4139105107b12303a4daace5bbb393d5478397e1 Mon Sep 17 00:00:00 2001 From: MBulli Date: Sat, 28 Dec 2024 11:34:47 +0100 Subject: [PATCH 2/3] Added test case for issue #207 --- .../test/simple_model_test.dart | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/packages/dart_mappable_builder/test/simple_model_test.dart b/packages/dart_mappable_builder/test/simple_model_test.dart index c74d45ff..84fafab3 100644 --- a/packages/dart_mappable_builder/test/simple_model_test.dart +++ b/packages/dart_mappable_builder/test/simple_model_test.dart @@ -31,5 +31,44 @@ void main() { }, ); }); + + // Test case for https://github.com/schultek/dart_mappable/issues/207 + test('raw string as key for field', () async { + await testMappable( + { + 'model': ''' + import 'package:dart_mappable/dart_mappable.dart'; + + part 'model.mapper.dart'; + + @MappableRecord() + typedef FullName = (@MappableField(key: r'\$firstName') String, String); + + + @MappableClass() + class Rawkeymodel with RawkeymodelMappable { + final String a; + final FullName? b; + + Rawkeymodel({ + @MappableField(key: r'\$key') required this.a, + this.b, + }); + } + ''', + }, + expect: { + "Rawkeymodel(a: 'hello', b: ('Max', 'Mustermann')).toMap()": equals({ + r'$key': 'hello', + 'b': {r'$firstName': 'Max', r'$2': 'Mustermann'} + }), + "RawkeymodelMapper.fromMap({r'\$key': 'hi', 'b': ('Max', 'Mustermann')}).toMap()": + equals({ + r'$key': 'hi', + 'b': {r'$firstName': 'Max', r'$2': 'Mustermann'} + }), + }, + ); + }); }); } From 7cc20ef48cf472b51021ab95f7240d26ac6eba71 Mon Sep 17 00:00:00 2001 From: MBulli Date: Sat, 28 Dec 2024 11:35:17 +0100 Subject: [PATCH 3/3] Using raw dart strings for field keys (Fixes #207) --- .../lib/src/elements/field/class_mapper_field_element.dart | 2 +- .../lib/src/elements/field/record_mapper_field_element.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/dart_mappable_builder/lib/src/elements/field/class_mapper_field_element.dart b/packages/dart_mappable_builder/lib/src/elements/field/class_mapper_field_element.dart index d43f762a..66442ed8 100644 --- a/packages/dart_mappable_builder/lib/src/elements/field/class_mapper_field_element.dart +++ b/packages/dart_mappable_builder/lib/src/elements/field/class_mapper_field_element.dart @@ -99,7 +99,7 @@ class ClassMapperFieldElement extends MapperFieldElement { _keyFor(field?.getter) ?? parent.caseStyle.transform(name); if (key != name) { - return ", key: '$key'"; + return ", key: r'$key'"; } else { return ''; } diff --git a/packages/dart_mappable_builder/lib/src/elements/field/record_mapper_field_element.dart b/packages/dart_mappable_builder/lib/src/elements/field/record_mapper_field_element.dart index 71ae834e..f7bb6f86 100644 --- a/packages/dart_mappable_builder/lib/src/elements/field/record_mapper_field_element.dart +++ b/packages/dart_mappable_builder/lib/src/elements/field/record_mapper_field_element.dart @@ -65,7 +65,7 @@ class RecordMapperFieldElement extends MapperFieldElement { String key = param.key ?? parent.caseStyle?.transform(param.name) ?? name; if (key != name) { - return ", key: '$key'"; + return ", key: r'$key'"; } else { return ''; }