Added appropriate tests for the new codegen.

This commit is contained in:
morpheus-30
2023-06-23 12:54:57 +05:30
parent 637ca36fef
commit 1990622bce
2 changed files with 136 additions and 1 deletions

View File

@ -0,0 +1,135 @@
import 'package:apidash/codegen/python/pkg_http_client.dart';
import 'package:apidash/models/models.dart' show KVRow, RequestModel;
import 'package:test/test.dart';
import 'package:apidash/consts.dart';
void main() {
group('PythonHttpClient', () {
final PythonHttpClient pythonHttpClient = PythonHttpClient();
test('getCode returns valid code for GET request', () {
const requestModel = RequestModel(
url: 'https://jsonplaceholder.typicode.com/todos/1',
method: HTTPVerb.get,
id: '',
);
const expectedCode = """import http.client
import json
conn = http.client.HTTPSConnection('jsonplaceholder.typicode.com')
payload = json.dumps()
headers = {
'Content-Type':'application/json'
},
conn.request("GET", "/todos/1", payload, headers)}
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClient.getCode(requestModel), expectedCode);
});
test('getCode returns valid code for POST request', () {
const requestModel = RequestModel(
url: 'https://jsonplaceholder.typicode.com/todos',
method: HTTPVerb.post,
requestBody: '{"title": "foo","body": "bar","userId": 1}',
requestBodyContentType: ContentType.json,
id: '1',
);
const expectedCode = """import http.client
import json
conn = http.client.HTTPSConnection('jsonplaceholder.typicode.com')
payload = json.dumps({"title": "foo","body": "bar","userId": 1})
headers = {
'Content-Type':'application/json'
},
conn.request("POST", "/todos", payload, headers)}
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClient.getCode(requestModel), expectedCode);
});
test('getCode returns valid code for DELETE request', () {
const requestModel = RequestModel(
url: 'https://jsonplaceholder.typicode.com/todos/1',
method: HTTPVerb.delete,
requestBody: '{"title": "foo","body": "bar","userId": 1}',
requestBodyContentType: ContentType.json,
id: '1',
);
const expectedCode = """import http.client
import json
conn = http.client.HTTPSConnection('jsonplaceholder.typicode.com')
payload = json.dumps({"title": "foo","body": "bar","userId": 1})
headers = {
'Content-Type':'application/json'
},
conn.request("DELETE", "/todos/1", payload, headers)}
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClient.getCode(requestModel), expectedCode);
});
test('getCode returns valid code for HEAD request', () {
const requestModel = RequestModel(
url: 'https://jsonplaceholder.typicode.com/todos/1',
method: HTTPVerb.head,
id: '1',
);
const expectedCode = """import http.client
import json
conn = http.client.HTTPSConnection('jsonplaceholder.typicode.com')
payload = json.dumps()
headers = {
'Content-Type':'application/json'
},
conn.request("HEAD", "/todos/1", payload, headers)}
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClient.getCode(requestModel), expectedCode);
});
test(
'getCode returns valid code for requests with headers and query parameters',
() {
const requestModel = 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',
);
const expectedCode = """import http.client
import json
conn = http.client.HTTPSConnection('jsonplaceholder.typicode.com')
payload = json.dumps()
headers = {
'Content-Type':'application/json'
'Custom-Header-1':'Value-1',
'Custom-Header-2':'Value-2',
},
conn.request("GET", "/posts?userId=1", payload, headers)}
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
""";
expect(pythonHttpClient.getCode(requestModel), expectedCode);
});
});
}