From 3a1eeeed95fd2c6f929b526ca012e2b83f9a8b4e Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Mon, 24 Apr 2023 07:11:11 +0530 Subject: [PATCH] Testing ResponseModel --- test/models/kvrow_model_test.dart | 4 + test/models/response_model_test.dart | 108 +++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 test/models/response_model_test.dart diff --git a/test/models/kvrow_model_test.dart b/test/models/kvrow_model_test.dart index 2b0ca57a..f6f5b3a6 100644 --- a/test/models/kvrow_model_test.dart +++ b/test/models/kvrow_model_test.dart @@ -13,4 +13,8 @@ void main() { test('Testing copyWith()', () { expect(kvRow1.copyWith(k: "winter", v: "26"), kvRow2Expected); }); + + test('Testing hashcode', () { + expect(kvRow1.hashCode, greaterThan(0)); + }); } diff --git a/test/models/response_model_test.dart b/test/models/response_model_test.dart new file mode 100644 index 00000000..33f5eff1 --- /dev/null +++ b/test/models/response_model_test.dart @@ -0,0 +1,108 @@ +import 'dart:typed_data'; +import 'package:test/test.dart'; +import 'package:apidash/models/response_model.dart'; +import 'package:http/http.dart' as http; +import 'package:http_parser/http_parser.dart'; + +void main() { + int statusCode = 200; + Map headers = { + "content-length": "16", + "x-cloud-trace-context": "dad62aaf7f640300bbf629f4ae2f2f63", + "content-type": "application/json", + "date": "Sun, 23 Apr 2023 23:46:31 GMT", + "server": "Google Frontend" + }; + Map requestHeaders = { + "content-length": "18", + "content-type": "application/json; charset=utf-8" + }; + String body = '{"data":"world"}'; + Uint8List bodyBytes = Uint8List.fromList([ + 123, + 34, + 100, + 97, + 116, + 97, + 34, + 58, + 34, + 119, + 111, + 114, + 108, + 100, + 34, + 125 + ]); + String formattedBody = '''{ + "data": "world" +}'''; + Duration time = const Duration(milliseconds: 516); + + ResponseModel responseModel = ResponseModel( + statusCode: statusCode, + headers: headers, + requestHeaders: requestHeaders, + body: body, + formattedBody: formattedBody, + bodyBytes: bodyBytes, + time: time); + + Map responseModelJson = { + "statusCode": statusCode, + "headers": headers, + "requestHeaders": requestHeaders, + "body": body, + "bodyBytes": bodyBytes, + "time": 516000, + }; + + String responseModelStringExpected = [ + "Response Status: 200", + "Response Time: 0:00:00.516000", + "Response Headers: {content-length: 16, x-cloud-trace-context: dad62aaf7f640300bbf629f4ae2f2f63, content-type: application/json, date: Sun, 23 Apr 2023 23:46:31 GMT, server: Google Frontend}", + "Response Request Headers: {content-length: 18, content-type: application/json; charset=utf-8}", + 'Response Body: {"data":"world"}', + ].join("\n"); + + test('Testing toJSON', () { + expect(responseModel.toJson(), responseModelJson); + }); + + test('Testing toString', () { + expect(responseModel.toString(), responseModelStringExpected); + }); + + test('Testing fromJson', () { + final responseModelData = ResponseModel.fromJson(responseModelJson); + expect(responseModelData, responseModel); + }); + + test('Testing fromResponse', () async { + final response = await http.get( + Uri.parse('https://api.foss42.com/'), + ); + final responseData = responseModel.fromResponse(response: response); + expect(responseData.statusCode, 200); + expect(responseData.body, + '{"message":"Check out https://foss42.com for API docs to get started."}'); + expect(responseData.formattedBody, '''{ + "message": "Check out https://foss42.com for API docs to get started." +}'''); + }); + test('Testing fromResponse for contentType not Json', () async { + final response = await http.get( + Uri.parse('https://foss42.com/'), + ); + final responseData = responseModel.fromResponse(response: response); + expect(responseData.statusCode, 200); + expect(responseData.body!.length, greaterThan(1000)); + expect(responseData.contentType, 'text/html; charset=utf-8'); + expect(responseData.mediaType!.mimeType, 'text/html'); + }); + test('Testing hashcode', () { + expect(responseModel.hashCode, greaterThan(0)); + }); +}