mirror of
https://github.com/foss42/apidash.git
synced 2025-06-03 16:27:06 +08:00
test:add dart dio code gen tests
This commit is contained in:
514
test/codegen/dart_dio_codegen_test.dart
Normal file
514
test/codegen/dart_dio_codegen_test.dart
Normal file
@ -0,0 +1,514 @@
|
||||
import 'package:apidash/codegen/dart/dio.dart';
|
||||
import 'package:dart_style/dart_style.dart';
|
||||
import 'package:test/test.dart';
|
||||
import '../request_models.dart';
|
||||
|
||||
final _formatter = DartFormatter(fixes: [
|
||||
StyleFix.singleCascadeStatements
|
||||
]);
|
||||
|
||||
extension on String {
|
||||
// format code before compare
|
||||
String get format => _formatter.format(this);
|
||||
}
|
||||
|
||||
void main() {
|
||||
final dartDioCodeGen = DartDioCodeGen();
|
||||
|
||||
group('GET Request', () {
|
||||
test('GET 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.get('https://api.foss42.com');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet1, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('GET 2', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {'code': 'US'};
|
||||
final response = await dio.Dio.get(
|
||||
'https://api.foss42.com/country/data',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet2, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('GET 3', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {'code': 'IND'};
|
||||
final response = await dio.Dio.get(
|
||||
'https://api.foss42.com/country/data?code=US',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet3, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('GET 4', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {
|
||||
'num': '8700000',
|
||||
'digits': '3',
|
||||
'system': 'SS',
|
||||
'add_space': 'true',
|
||||
'trailing_zeros': 'true',
|
||||
};
|
||||
final response = await dio.Dio.get(
|
||||
'https://api.foss42.com/humanize/social',
|
||||
queryParameters: queryParams,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet4, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('GET 5', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
'https://api.github.com/repos/foss42/apidash',
|
||||
options: Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet5, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('GET 6', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {'raw': 'true'};
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
'https://api.github.com/repos/foss42/apidash',
|
||||
queryParameters: queryParams,
|
||||
options: Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet6, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('GET 7', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.get('https://api.foss42.com');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet7, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('GET 8', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final queryParams = {'raw': 'true'};
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final response = await dio.Dio.get(
|
||||
'https://api.github.com/repos/foss42/apidash',
|
||||
queryParameters: queryParams,
|
||||
options: Options(headers: headers),
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelGet8, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
group('HEAD Request', () {
|
||||
test('HEAD 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.head('https://api.foss42.com');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelHead1, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('HEAD 2', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.head('http://api.foss42.com');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(dartDioCodeGen.getCode(requestModelHead2, "http"),
|
||||
expectedCode.format);
|
||||
});
|
||||
});
|
||||
|
||||
group('POST Request', () {
|
||||
test('POST 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
}''';
|
||||
final response = await dio.Dio.post(
|
||||
'https://api.foss42.com/case/lower',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelPost1, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('POST 2', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
import 'dart:convert' as convert;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = convert.json.decode(r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
}''');
|
||||
final response = await dio.Dio.post(
|
||||
'https://api.foss42.com/case/lower',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelPost2, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('POST 3', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
import 'dart:convert' as convert;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final headers = {'User-Agent': 'Test Agent'};
|
||||
final data = convert.json.decode(r'''{
|
||||
"text": "I LOVE Flutter"
|
||||
}''');
|
||||
final response = await dio.Dio.post(
|
||||
'https://api.foss42.com/case/lower',
|
||||
options: Options(headers: headers),
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelPost3, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
});
|
||||
group('PUT Request', () {
|
||||
test('PUT 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
import 'dart:convert' as convert;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = convert.json.decode(r'''{
|
||||
"name": "morpheus",
|
||||
"job": "zion resident"
|
||||
}''');
|
||||
final response = await dio.Dio.put(
|
||||
'https://reqres.in/api/users/2',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelPut1, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
group('PATCH Request', () {
|
||||
test('PATCH 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
import 'dart:convert' as convert;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = convert.json.decode(r'''{
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
}''');
|
||||
final response = await dio.Dio.patch(
|
||||
'https://reqres.in/api/users/2',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelPatch1, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
group('DELETE Request', () {
|
||||
test('DELETE 1', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final response = await dio.Dio.delete('https://reqres.in/api/users/2');
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelDelete1, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
|
||||
test('DELETE 2', () {
|
||||
const expectedCode = r"""import 'package:dio/dio.dart' as dio;
|
||||
import 'dart:convert' as convert;
|
||||
|
||||
void main() async {
|
||||
try {
|
||||
final data = convert.json.decode(r'''{
|
||||
"name": "marfeus",
|
||||
"job": "accountant"
|
||||
}''');
|
||||
final response = await dio.Dio.delete(
|
||||
'https://reqres.in/api/users/2',
|
||||
data: data,
|
||||
);
|
||||
print(response.statusCode);
|
||||
print(response.data);
|
||||
} on DioException catch (e, s) {
|
||||
print(e.response?.statusCode);
|
||||
print(e.response?.data);
|
||||
print(s);
|
||||
} catch (e, s) {
|
||||
print(e);
|
||||
print(s);
|
||||
}
|
||||
}
|
||||
""";
|
||||
expect(
|
||||
dartDioCodeGen.getCode(requestModelDelete2, "https"),
|
||||
expectedCode.format,
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user