Files
koi_swagger_parser/test/fixture_corpus_test.dart
T
mr.koi 454e6c51d7 Release 0.2.0
Complete OpenAPI 3.0/3.1 generation, diagnostics, lifecycle safety, enum and naming mappings, bilingual documentation, examples, and pub.dev release validation.
2026-07-31 16:47:39 +08:00

66 lines
1.7 KiB
Dart

import 'dart:io';
import 'package:koi_swagger_parser/koi_swagger_parser.dart';
import 'package:path/path.dart' as p;
import 'package:test/test.dart';
void main() {
final fixtures = <String>[
'openapi_30_compat.yaml',
'e2e_openapi.json',
'dba_openapi.json',
];
for (final fixtureName in fixtures) {
test('fixture corpus parses and renders $fixtureName', () async {
final tempDirectory = await Directory.systemTemp.createTemp(
'koi_swagger_parser_corpus_',
);
addTearDown(() => tempDirectory.delete(recursive: true));
final source = p.join(
Directory.current.path,
'test',
'fixtures',
fixtureName,
);
final output = p.join(tempDirectory.path, 'lib', 'src');
final config = File(
p.join(tempDirectory.path, 'koi_swagger_parser.yaml'),
);
await config.writeAsString('''
input:
swagger_urls:
- url: $source
output:
base_dir: $output
api_dir: ${p.join(output, 'api')}
models_dir: ${p.join(output, 'models')}
manifest_path: ${p.join(tempDirectory.path, '.generated', 'manifest.json')}
generation:
api:
response_wrapper:
mode: passthrough
models:
class_prefix: Koi
formatting:
run_dart_format: false
''');
final result = await const KoiSwaggerParser().generate(
configPath: config.path,
dryRun: true,
);
expect(result.operationsCount, greaterThan(0));
expect(result.modelsCount, greaterThan(0));
expect(result.generatedFiles, isNotEmpty);
expect(
result.diagnostics.where(
(diagnostic) => diagnostic.severity == DiagnosticSeverity.error,
),
isEmpty,
);
});
}
}