diff --git a/test/codegen/dart_http_codegen_test.dart b/test/codegen/dart_http_codegen_test.dart new file mode 100644 index 00000000..6e18ac9b --- /dev/null +++ b/test/codegen/dart_http_codegen_test.dart @@ -0,0 +1,84 @@ +import 'package:apidash/codegen/dart/pkg_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""" +"""; + expect(dartHttpCodeGen.getCode(requestModelGet1, "https"), expectedCode); + }); + + test('GET 2', () { + const expectedCode = r""" +"""; + expect(dartHttpCodeGen.getCode(requestModelGet2, "https"), expectedCode); + }); + }); + + group('HEAD Request', () { + test('HEAD 1', () { + const expectedCode = r""" +"""; + expect(dartHttpCodeGen.getCode(requestModelHead1, "https"), expectedCode); + }); + + test('HEAD 2', () { + const expectedCode = r""" +"""; + 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":"lower I 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(requestModelPost1, "https"), expectedCode); + }); + + test('POST 2', () { + const expectedCode = r""" +"""; + expect(dartHttpCodeGen.getCode(requestModelPost2, "https"), expectedCode); + }); + }); + + group('DELETE Request', () { + test('DELETE 1', () { + const expectedCode = r""" +"""; + expect( + dartHttpCodeGen.getCode(requestModelDelete1, "https"), expectedCode); + }); + }); +} diff --git a/test/codegen/kotlin_okhttp_codegen_test.dart b/test/codegen/kotlin_okhttp_codegen_test.dart index 96b36e9e..2efd1130 100644 --- a/test/codegen/kotlin_okhttp_codegen_test.dart +++ b/test/codegen/kotlin_okhttp_codegen_test.dart @@ -1,6 +1,6 @@ import 'package:apidash/codegen/kotlin/pkg_okhttp.dart'; import 'package:test/test.dart'; -import 'request_models.dart'; +import '../request_models.dart'; void main() { group('KotlinOkHttpCodeGen', () { diff --git a/test/codegen/request_models.dart b/test/codegen/request_models.dart deleted file mode 100644 index 4469b72a..00000000 --- a/test/codegen/request_models.dart +++ /dev/null @@ -1,48 +0,0 @@ -import 'package:apidash/models/models.dart' show KVRow, RequestModel; -import 'package:apidash/consts.dart'; - -/// Basic GET request model -const requestModelGet1 = RequestModel( - url: 'https://api.foss42.com', - method: HTTPVerb.get, - id: '', -); - -/// GET request model with headers and query params -const requestModelGet2 = RequestModel( - url: 'https://jsonplaceholder.typicode.com/posts', - method: HTTPVerb.get, - requestParams: [ - KVRow('userId', 1), - ], - requestHeaders: [ - KVRow('Custom-Header-1', 'Value-1'), - KVRow('Custom-Header-2', 'Value-2') - ], - id: '1', -); - -/// Basic HEAD request model -const requestModelHead1 = RequestModel( - url: 'https://jsonplaceholder.typicode.com/posts/1', - method: HTTPVerb.head, - id: '1', -); - -/// Basic POST request model -const requestModelPost1 = RequestModel( - url: 'https://api.foss42.com/case/lower', - method: HTTPVerb.post, - requestBody: '{"text": "IS Upper"}', - requestBodyContentType: ContentType.json, - id: '1', -); - -/// Basic DELETE request model -const requestModelDelete1 = RequestModel( - url: 'https://jsonplaceholder.typicode.com/posts/1', - method: HTTPVerb.delete, - requestBody: '{"title": "foo","body": "bar","userId": 1}', - requestBodyContentType: ContentType.json, - id: '1', -); diff --git a/test/request_models.dart b/test/request_models.dart new file mode 100644 index 00000000..a60a7bb6 --- /dev/null +++ b/test/request_models.dart @@ -0,0 +1,126 @@ +import 'package:apidash/models/models.dart' show KVRow, RequestModel; +import 'package:apidash/consts.dart'; + +/// Basic GET request model +const requestModelGet1 = RequestModel( + id: 'get1', + url: 'https://api.foss42.com', + method: HTTPVerb.get, +); + +/// GET request model with query params +const requestModelGet2 = RequestModel( + id: 'get2', + url: 'https://api.foss42.com/country/data', + method: HTTPVerb.get, + requestParams: [ + KVRow('code', 'US'), + ], +); + +/// GET request model with override query params +const requestModelGet3 = RequestModel( + id: 'get3', + url: 'https://api.foss42.com/country/data?code=US', + method: HTTPVerb.get, + requestParams: [ + KVRow('code', 'IND'), + ], +); + +/// GET request model with different types of query params +const requestModelGet4 = RequestModel( + id: 'get4', + url: 'https://api.foss42.com/humanize/social', + method: HTTPVerb.get, + requestParams: [ + KVRow('num', '8700000'), + KVRow('digits', '3'), + KVRow('system', 'SS'), + KVRow('add_space', 'true'), + KVRow('trailing_zeros', 'true'), + ], +); + +/// GET request model with headers +const requestModelGet5 = RequestModel( + id: 'get5', + url: 'https://api.github.com/repos/foss42/api-dash', + method: HTTPVerb.get, + requestHeaders: [ + KVRow('Authorization', 'Bearer XYZ'), + ], +); + +/// GET request model with headers & query params +const requestModelGet6 = RequestModel( + id: 'get6', + url: 'https://api.foss42.com/humanize/social', + method: HTTPVerb.get, + requestHeaders: [ + KVRow('Authorization', 'Bearer XYZ'), + ], + requestParams: [ + KVRow('raw', 'true'), + ], +); + +/// GET request model with body +const requestModelGet7 = RequestModel( + id: 'get7', + url: 'https://api.foss42.com/humanize/social', + method: HTTPVerb.get, + requestBodyContentType: ContentType.text, + requestBody: + 'This is a random text which should not be attached with a GET request', +); + +/// Basic HEAD request model +const requestModelHead1 = RequestModel( + id: 'head1', + url: 'https://api.foss42.com', + method: HTTPVerb.head, +); + +/// Without URI Scheme (pass default as http) +const requestModelHead2 = RequestModel( + id: 'head2', + url: 'api.foss42.com', + method: HTTPVerb.head, +); + +/// Basic POST request model +const requestModelPost1 = RequestModel( + id: 'post1', + url: 'https://api.foss42.com/case/lower', + method: HTTPVerb.post, + requestBody: r"""{ +"text": "I LOVE Flutter" +}""", +); + +/// POST request model with txt body +const requestModelPost2 = RequestModel( + id: 'post1', + url: 'https://api.foss42.com/case/lower', + method: HTTPVerb.post, + requestBody: r"""{ +"text": "I LOVE Flutter" +}""", + requestBodyContentType: ContentType.json, +); + +/// POST request model with headers + +/// PUT request model + +/// PATCH request model + +/// Basic DELETE request model +const requestModelDelete1 = RequestModel( + id: 'delete1', + url: 'https://jsonplaceholder.typicode.com/posts/1', + method: HTTPVerb.delete, + requestBody: '{"title": "foo","body": "bar","userId": 1}', + requestBodyContentType: ContentType.json, +);