Files
koi_swagger_parser/test/config_loader_test.dart
T
mr.koi ea93f09154 Establish the Koi Swagger parser release
Prepare the OpenAPI parser and Dart generator as a publishable Koi package with CLI entrypoint, docs, examples, tests, and pub.dev release metadata.

Constraint: Initial GitHub import follows koi_blueprint_flutter identity mr.koi <i@mrkoi.is>.

Rejected: Keep local runtime state in the initial repository | .dart_tool, .omx, and pubspec.lock are ignored for a reusable package source tree.

Confidence: high

Scope-risk: moderate

Directive: Keep generated-output behavior covered by parser and generator tests before changing rendering rules.

Tested: dart analyze; dart test; PUB_HOSTED_URL=https://pub.dev dart pub publish --dry-run

Not-tested: End-to-end downstream build_runner compilation of generated Retrofit/Freezed output.
2026-06-02 22:00:13 +08:00

77 lines
2.1 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() {
group('KoiSwaggerConfigLoader', () {
test('兼容旧版 generator_config.yaml 字段', () async {
final tempDir = await Directory.systemTemp.createTemp(
'koi_swagger_parser_config_',
);
addTearDown(() => tempDir.delete(recursive: true));
final configFile = File(p.join(tempDir.path, 'generator_config.yaml'));
await configFile.writeAsString('''
input:
swagger_urls:
- url: ./openapi.json
enabled: true
output:
base_dir: ./lib/src
api_dir: ./lib/src/api
models_dir: ./lib/src/api_models
included_tags:
- stores
generation:
api:
enabled: true
use_retrofit: true
cancel_token_support: true
base_result_import: package:dba_network/dba_network.dart
client:
class_name: DbaApiClient
file_name: dba_api_client
models:
enabled: true
class_prefix: Koi
default_non_nullable_list_to_empty: true
json_serializable:
checked: true
explicit_to_json: true
include_if_null: false
formatting:
run_dart_format: false
''');
final config = await KoiSwaggerConfig.load(
workingDirectory: tempDir.path,
);
expect(config.input.swaggerUrls, <String>[
p.join(tempDir.path, 'openapi.json'),
]);
expect(config.output.includedTags, <String>['stores']);
expect(
config.generation.api.responseWrapper.mode,
ResponseWrapperMode.externalGeneric,
);
expect(
config.generation.api.responseWrapper.externalImport,
'package:dba_network/dba_network.dart',
);
expect(
config.generation.api.responseWrapper.externalClassName,
'BaseResult',
);
expect(config.generation.api.cancelTokenSupport, isTrue);
expect(config.generation.preset.name, 'koi_flutter');
expect(config.generation.models.classPrefix, 'Koi');
expect(config.generation.formatting.runDartFormat, isFalse);
});
});
}