modelTestTemplate function
A flutter_test round-trip test asserting fromJson/toJson are inverse
for the model. Only valid for models whose fields are all primitive/list/
DateTime (the caller skips it when any field is a nested model).
Implementation
String modelTestTemplate(
String name, List<FieldSpec> fields, ProjectContext ctx) {
final className = Naming.pascal(name);
final snake = Naming.snake(name);
final pkg = ctx.packageName ?? 'app';
final effective =
fields.isEmpty ? const [FieldSpec('id', 'String', false)] : fields;
final jsonEntries = effective
.map((f) => " '${f.name}': ${f.sampleLiteral().json},")
.join('\n');
return '''
import 'package:flutter_test/flutter_test.dart';
import 'package:$pkg/data/models/${snake}_model.dart';
void main() {
test('$className round-trips through JSON', () {
final json = <String, dynamic>{
$jsonEntries
};
final model = $className.fromJson(json);
expect(model.toJson(), json);
});
}
''';
}