import 'package:apidash/codegen/dart/http.dart'; import 'package:test/test.dart'; import '../request_models.dart'; void main() { final dartHttpCodeGen = DartHttpCodeGen(); group('GET Request', () { test('GET 1', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com'); final response = await http.get(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet1, "https"), expectedCode); }); test('GET 2', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com/country/data'); var queryParams = { "code": "US" }; uri = uri.replace(queryParameters: queryParams); final response = await http.get(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet2, "https"), expectedCode); }); test('GET 3', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com/country/data?code=US'); var queryParams = { "code": "IND" }; var urlQueryParams = Map.from(uri.queryParameters); urlQueryParams.addAll(queryParams); uri = uri.replace(queryParameters: urlQueryParams); final response = await http.get(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet3, "https"), expectedCode); }); test('GET 4', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com/humanize/social'); var queryParams = { "num": "8700000", "digits": "3", "system": "SS", "add_space": "true", "trailing_zeros": "true" }; uri = uri.replace(queryParameters: queryParams); final response = await http.get(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet4, "https"), expectedCode); }); test('GET 5', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.github.com/repos/foss42/apidash'); var headers = { "User-Agent": "Test Agent" }; final response = await http.get(uri, headers: headers); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet5, "https"), expectedCode); }); test('GET 6', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.github.com/repos/foss42/apidash'); var queryParams = { "raw": "true" }; uri = uri.replace(queryParameters: queryParams); var headers = { "User-Agent": "Test Agent" }; final response = await http.get(uri, headers: headers); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet6, "https"), expectedCode); }); test('GET 7', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com'); final response = await http.get(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet7, "https"), expectedCode); }); test('GET 8', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.github.com/repos/foss42/apidash'); var queryParams = { "raw": "true" }; uri = uri.replace(queryParameters: queryParams); var headers = { "User-Agent": "Test Agent" }; final response = await http.get(uri, headers: headers); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelGet8, "https"), expectedCode); }); }); group('HEAD Request', () { test('HEAD 1', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com'); final response = await http.head(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelHead1, "https"), expectedCode); }); test('HEAD 2', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('http://api.foss42.com'); final response = await http.head(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelHead2, "http"), expectedCode); }); }); group('POST Request', () { test('POST 1', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com/case/lower'); String body = r'''{ "text": "I LOVE Flutter" }'''; var headers = { "content-type": "text/plain" }; final response = await http.post(uri, headers: headers, body: body); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelPost1, "https"), expectedCode); }); test('POST 2', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com/case/lower'); String body = r'''{ "text": "I LOVE Flutter" }'''; var headers = { "content-type": "application/json" }; final response = await http.post(uri, headers: headers, body: body); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelPost2, "https"), expectedCode); }); test('POST 3', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://api.foss42.com/case/lower'); String body = r'''{ "text": "I LOVE Flutter" }'''; var headers = { "User-Agent": "Test Agent", "content-type": "application/json" }; final response = await http.post(uri, headers: headers, body: body); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelPost3, "https"), expectedCode); }); }); group('PUT Request', () { test('PUT 1', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://reqres.in/api/users/2'); String body = r'''{ "name": "morpheus", "job": "zion resident" }'''; var headers = { "content-type": "application/json" }; final response = await http.put(uri, headers: headers, body: body); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect(dartHttpCodeGen.getCode(requestModelPut1, "https"), expectedCode); }); }); group('PATCH Request', () { test('PATCH 1', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://reqres.in/api/users/2'); String body = r'''{ "name": "marfeus", "job": "accountant" }'''; var headers = { "content-type": "application/json" }; final response = await http.patch(uri, headers: headers, body: body); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect( dartHttpCodeGen.getCode(requestModelPatch1, "https"), expectedCode); }); }); group('DELETE Request', () { test('DELETE 1', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://reqres.in/api/users/2'); final response = await http.delete(uri); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect( dartHttpCodeGen.getCode(requestModelDelete1, "https"), expectedCode); }); test('DELETE 2', () { const expectedCode = r"""import 'package:http/http.dart' as http; void main() async { var uri = Uri.parse('https://reqres.in/api/users/2'); String body = r'''{ "name": "marfeus", "job": "accountant" }'''; var headers = { "content-type": "application/json" }; final response = await http.delete(uri, headers: headers, body: body); int statusCode = response.statusCode; if (statusCode >= 200 && statusCode < 300) { print('Status Code: $statusCode'); print('Response Body: ${response.body}'); } else{ print('Error Status Code: $statusCode'); print('Error Response Body: ${response.body}'); } } """; expect( dartHttpCodeGen.getCode(requestModelDelete2, "https"), expectedCode); }); }); }