migrate tests to apidash_core

This commit is contained in:
Ashita Prasad
2024-11-03 04:45:36 +05:30
parent e65151ae5a
commit 77fd3fc24f
7 changed files with 285 additions and 294 deletions

View File

@ -0,0 +1,62 @@
import 'package:apidash_core/apidash_core.dart';
import 'package:test/test.dart';
void main() {
group('Testing StringExtensions', () {
group('Testing capitalize', () {
test('should capitalize the first letter of a lowercase word', () {
expect('hello'.capitalize(), 'Hello');
});
test(
'should capitalize the first letter and lowercase the rest of an uppercase word',
() {
expect('HELLO'.capitalize(), 'Hello');
});
test('should return the same string if it is already capitalized', () {
expect('Hello'.capitalize(), 'Hello');
});
test('should return an empty string if the input is empty', () {
expect(''.capitalize(), '');
});
test('should capitalize a single lowercase letter', () {
expect('h'.capitalize(), 'H');
});
test('should return the same single uppercase letter', () {
expect('H'.capitalize(), 'H');
});
});
group('Testing clip', () {
test(
'should return the same string if its length is less than or equal to the limit',
() {
expect('hello'.clip(5), 'hello');
expect('hello'.clip(10), 'hello');
});
test(
'should clip the string and add ellipsis if its length is greater than the limit',
() {
expect('hello world'.clip(5), 'hello...');
expect('hello world'.clip(8), 'hello wo...');
});
test('should return an empty string if the input is empty', () {
expect(''.clip(5), '');
});
test('should handle limit of 0 correctly', () {
expect('hello'.clip(0), '...');
});
test('should handle negative limit correctly', () {
expect('hello'.clip(-1), '...');
});
});
});
}

View File

@ -0,0 +1,43 @@
import 'package:apidash_core/apidash_core.dart';
import 'package:test/test.dart';
void main() {
const fdmRow1 = FormDataModel(
name: "harry",
value: "23",
type: FormDataType.text,
);
test('Testing toString()', () {
const resultExpected =
'FormDataModel(name: harry, value: 23, type: FormDataType.text)';
expect(fdmRow1.toString(), resultExpected);
});
test('Testing toJson()', () {
const resultExpected = {"name": "harry", "value": "23", "type": "text"};
expect(fdmRow1.toJson(), resultExpected);
});
test('Testing fromJson()', () {
const resultExpected = fdmRow1;
expect(
FormDataModel.fromJson(
{"name": "harry", "value": "23", "type": "text"}),
resultExpected);
});
test('Testing copyWith()', () {
const resultExpected = FormDataModel(
name: "winter",
value: "26",
type: FormDataType.file,
);
expect(
fdmRow1.copyWith(name: "winter", value: "26", type: FormDataType.file),
resultExpected);
});
test('Testing hashcode', () {
expect(fdmRow1.hashCode, greaterThan(0));
});
}

View File

@ -0,0 +1,30 @@
import 'package:apidash_core/apidash_core.dart';
import 'package:test/test.dart';
void main() {
const nmRow1 = NameValueModel(name: "harry", value: 23);
test('Testing toString()', () {
const resultExpected = 'NameValueModel(name: harry, value: 23)';
expect(nmRow1.toString(), resultExpected);
});
test('Testing toJson()', () {
const resultExpected = {"name": "harry", "value": 23};
expect(nmRow1.toJson(), resultExpected);
});
test('Testing fromJson()', () {
const resultExpected = nmRow1;
expect(NameValueModel.fromJson({"name": "harry", "value": 23}),
resultExpected);
});
test('Testing copyWith()', () {
const resultExpected = NameValueModel(name: "winter", value: "26");
expect(nmRow1.copyWith(name: "winter", value: "26"), resultExpected);
});
test('Testing hashcode', () {
expect(nmRow1.hashCode, greaterThan(0));
});
}

View File

@ -0,0 +1,190 @@
import 'package:apidash_core/utils/http_response_utils.dart';
import 'package:apidash_core/utils/string_utils.dart';
import 'package:http_parser/http_parser.dart';
import 'package:test/test.dart';
void main() {
group("Testing getContentTypeFromHeaders function", () {
test('Testing getContentTypeFromHeaders for header1', () {
Map<String, String> header1 = {
"content-type": "application/json",
};
String contentType1Expected = "application/json";
expect(getContentTypeFromHeaders(header1), contentType1Expected);
});
test('Testing getContentTypeFromHeaders for null headers', () {
expect(getContentTypeFromHeaders(null), null);
});
test(
'Testing getContentTypeFromHeaders when header keys are in header case',
() {
Map<String, String> header2 = {
"Content-Type": "application/json",
};
expect(getContentTypeFromHeaders(header2), null);
});
});
group('Testing getMediaTypeFromContentType function', () {
test('Testing getMediaTypeFromContentType for json type', () {
String contentType1 = "application/json";
MediaType mediaType1Expected = MediaType("application", "json");
expect(getMediaTypeFromContentType(contentType1).toString(),
mediaType1Expected.toString());
});
test('Testing getMediaTypeFromContentType for null', () {
expect(getMediaTypeFromContentType(null), null);
});
test('Testing getMediaTypeFromContentType for image svg+xml type', () {
String contentType3 = "image/svg+xml";
MediaType mediaType3Expected = MediaType("image", "svg+xml");
expect(getMediaTypeFromContentType(contentType3).toString(),
mediaType3Expected.toString());
});
test('Testing getMediaTypeFromContentType for incorrect content type', () {
String contentType4 = "text/html : charset=utf-8";
expect(getMediaTypeFromContentType(contentType4), null);
});
test('Testing getMediaTypeFromContentType for text/css type', () {
String contentType5 = "text/css; charset=utf-8";
MediaType mediaType5Expected =
MediaType("text", "css", {"charset": "utf-8"});
expect(getMediaTypeFromContentType(contentType5).toString(),
mediaType5Expected.toString());
});
test('Testing getMediaTypeFromContentType for incorrect with double ;', () {
String contentType6 =
"application/xml; charset=utf-16be ; date=21/03/2023";
expect(getMediaTypeFromContentType(contentType6), null);
});
test('Testing getMediaTypeFromContentType for empty content type', () {
expect(getMediaTypeFromContentType(""), null);
});
test('Testing getMediaTypeFromContentType for missing subtype', () {
String contentType7 = "audio";
expect(getMediaTypeFromContentType(contentType7), null);
});
test('Testing getMediaTypeFromContentType for missing Type', () {
String contentType8 = "/html";
expect(getMediaTypeFromContentType(contentType8), null);
});
});
group("Testing getMediaTypeFromHeaders", () {
test('Testing getMediaTypeFromHeaders for basic case', () {
Map<String, String> header1 = {
"content-length": "4506",
"cache-control": "private",
"content-type": "application/json"
};
MediaType mediaType1Expected = MediaType("application", "json");
expect(getMediaTypeFromHeaders(header1).toString(),
mediaType1Expected.toString());
});
test('Testing getMediaTypeFromHeaders for null header', () {
expect(getMediaTypeFromHeaders(null), null);
});
test('Testing getMediaTypeFromHeaders for incomplete header value', () {
Map<String, String> header2 = {"content-length": "4506"};
expect(getMediaTypeFromHeaders(header2), null);
});
test('Testing getMediaTypeFromHeaders for empty header value', () {
Map<String, String> header3 = {"content-type": ""};
expect(getMediaTypeFromHeaders(header3), null);
});
test(
'Testing getMediaTypeFromHeaders for erroneous header value - missing type',
() {
Map<String, String> header4 = {"content-type": "/json"};
expect(getMediaTypeFromHeaders(header4), null);
});
test(
'Testing getMediaTypeFromHeaders for erroneous header value - missing subtype',
() {
Map<String, String> header5 = {"content-type": "application"};
expect(getMediaTypeFromHeaders(header5), null);
});
test('Testing getMediaTypeFromHeaders for header6', () {
Map<String, String> header6 = {"content-type": "image/svg+xml"};
MediaType mediaType6Expected = MediaType("image", "svg+xml");
expect(getMediaTypeFromHeaders(header6).toString(),
mediaType6Expected.toString());
});
});
group("Testing formatBody", () {
test('Testing formatBody for null values', () {
expect(formatBody(null, null), null);
});
test('Testing formatBody for null body values', () {
MediaType mediaType1 = MediaType("application", "xml");
expect(formatBody(null, mediaType1), null);
});
test('Testing formatBody for null MediaType values', () {
String body1 = '''
{
"text":"The Chosen One";
}
''';
expect(formatBody(body1, null), null);
});
test('Testing formatBody for json subtype values', () {
String body2 = '''{"data":{"area":9831510.0,"population":331893745}}''';
MediaType mediaType2 = MediaType("application", "json");
String result2Expected = '''{
"data": {
"area": 9831510.0,
"population": 331893745
}
}''';
expect(formatBody(body2, mediaType2), result2Expected);
});
test('Testing formatBody for xml subtype values', () {
String body3 = '''
<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price>5.95 USD</price>
<description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
<calories>650</calories>
</food>
</breakfast_menu>
''';
MediaType mediaType3 = MediaType("application", "xml");
String result3Expected = '''<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price>5.95 USD</price>
<description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
<calories>650</calories>
</food>
</breakfast_menu>''';
expect(formatBody(body3, mediaType3), result3Expected);
});
group("Testing formatBody for html", () {
MediaType mediaTypeHtml = MediaType("text", "html");
test('Testing formatBody for html subtype values', () {
String body4 = '''<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>''';
expect(formatBody(body4, mediaTypeHtml), body4);
});
test('Testing formatBody for html subtype values with random values', () {
String body5 =
'''<html>${RandomStringGenerator.getRandomStringLines(100, 10000)}</html>''';
expect(formatBody(body5, mediaTypeHtml), null);
});
test(
'Testing formatBody for html subtype values with random values within limit',
() {
String body6 =
'''<html>${RandomStringGenerator.getRandomStringLines(100, 190)}</html>''';
expect(formatBody(body6, mediaTypeHtml), body6);
});
});
});
}

View File

@ -0,0 +1,94 @@
import 'package:apidash_core/models/models.dart';
import 'package:apidash_core/utils/uri_utils.dart';
import 'package:test/test.dart';
void main() {
group("Testing getUriScheme", () {
test('Testing getUriScheme for https', () {
Uri uri1 = Uri(
scheme: 'https',
host: 'dart.dev',
path: 'guides/libraries/library-tour',
fragment: 'numbers');
String uriScheme1Expected = 'https';
expect(getUriScheme(uri1), (uriScheme1Expected, true));
});
test('Testing getUriScheme for mailto scheme value', () {
Uri uri2 = Uri(scheme: 'mailto');
String uriScheme2Expected = 'mailto';
expect(getUriScheme(uri2), (uriScheme2Expected, false));
});
test('Testing getUriScheme for empty scheme value', () {
Uri uri3 = Uri(scheme: '');
expect(getUriScheme(uri3), (null, false));
});
test('Testing getUriScheme for null scheme value', () {
Uri uri4 = Uri(scheme: null);
expect(getUriScheme(uri4), (null, false));
});
});
group("Testing getValidRequestUri", () {
test('Testing getValidRequestUri for normal values', () {
String url1 = "https://api.apidash.dev/country/data";
const kvRow1 = NameValueModel(name: "code", value: "US");
Uri uri1Expected = Uri(
scheme: 'https',
host: 'api.apidash.dev',
path: 'country/data',
queryParameters: {'code': 'US'});
expect(getValidRequestUri(url1, [kvRow1]), (uri1Expected, null));
});
test('Testing getValidRequestUri for null url value', () {
const kvRow2 = NameValueModel(name: "code", value: "US");
expect(getValidRequestUri(null, [kvRow2]), (null, "URL is missing!"));
});
test('Testing getValidRequestUri for empty url value', () {
const kvRow3 = NameValueModel(name: "", value: "");
expect(getValidRequestUri("", [kvRow3]), (null, "URL is missing!"));
});
test('Testing getValidRequestUri when https is not provided in url', () {
String url4 = "api.apidash.dev/country/data";
const kvRow4 = NameValueModel(name: "code", value: "US");
Uri uri4Expected = Uri(
scheme: 'https',
host: 'api.apidash.dev',
path: 'country/data',
queryParameters: {'code': 'US'});
expect(getValidRequestUri(url4, [kvRow4]), (uri4Expected, null));
});
test('Testing getValidRequestUri when url has fragment', () {
String url5 = "https://dart.dev/guides/libraries/library-tour#numbers";
Uri uri5Expected = Uri(
scheme: 'https',
host: 'dart.dev',
path: '/guides/libraries/library-tour');
expect(getValidRequestUri(url5, null), (uri5Expected, null));
});
test('Testing getValidRequestUri when uri scheme is not supported', () {
String url5 = "mailto:someone@example.com";
expect(getValidRequestUri(url5, null),
(null, "Unsupported URL Scheme (mailto)"));
});
test('Testing getValidRequestUri when query params in both url and kvrow',
() {
String url6 = "api.apidash.dev/country/data?code=IND";
const kvRow6 = NameValueModel(name: "code", value: "US");
Uri uri6Expected = Uri(
scheme: 'https',
host: 'api.apidash.dev',
path: 'country/data',
queryParameters: {'code': 'US'});
expect(getValidRequestUri(url6, [kvRow6]), (uri6Expected, null));
});
test('Testing getValidRequestUri when kvrow is null', () {
String url7 = "api.apidash.dev/country/data?code=US";
Uri uri7Expected = Uri(
scheme: 'https',
host: 'api.apidash.dev',
path: 'country/data',
queryParameters: {'code': 'US'});
expect(getValidRequestUri(url7, null), (uri7Expected, null));
});
});
}