diff --git a/drift_dev/test/writer/data_class_writer_test.dart b/drift_dev/test/writer/data_class_writer_test.dart index e0bd72fb..220fb98a 100644 --- a/drift_dev/test/writer/data_class_writer_test.dart +++ b/drift_dev/test/writer/data_class_writer_test.dart @@ -267,6 +267,58 @@ extension ItemToInsertable on i1.Item { result.writer, ); }); + + test( + 'generates fromJson and toJson with the sql column names as json keys', + () async { + final writer = await emulateDriftBuild( + options: const BuilderOptions({ + 'use_sql_column_name_as_json_key': true, + }), + inputs: const { + 'a|lib/main.dart': r''' +import 'package:drift/drift.dart'; + +part 'main.drift.dart'; + +class MyTable extends Table { + TextColumn get myFirstColumn => text()(); + IntColumn get mySecondColumn => integer()(); +} + + +@DriftDatabase( + tables: [MyTable], +) +class Database extends _$Database {} +''' + }, + ); + + checkOutputs({ + 'a|lib/main.drift.dart': decodedMatches(contains(r''' + factory MyTableData.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return MyTableData( + myFirstColumn: serializer.fromJson(json['my_first_column']), + mySecondColumn: serializer.fromJson(json['my_second_column']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'my_first_column': serializer.toJson(myFirstColumn), + 'my_second_column': serializer.toJson(mySecondColumn), + }; + } + +''')), + }, writer.dartOutputs, writer.writer); + }, + tags: 'analyzer', + ); } class _GeneratesConstDataClasses extends Matcher {