modelTestTemplate function

String modelTestTemplate(
  1. String name,
  2. List<FieldSpec> fields,
  3. ProjectContext ctx
)

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);
  });
}
''';
}