Skip to content

Commit

Permalink
feat: test error
Browse files Browse the repository at this point in the history
  • Loading branch information
jhomlala committed Jul 7, 2024
1 parent cde5853 commit 1772e05
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
62 changes: 62 additions & 0 deletions packages/alice_dio/test/alice_dio_adapter_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:alice/core/alice_core.dart';
import 'package:alice/model/alice_form_data_file.dart';
import 'package:alice/model/alice_from_data_field.dart';
import 'package:alice/model/alice_http_call.dart';
import 'package:alice/model/alice_http_error.dart';
import 'package:alice/model/alice_http_response.dart';
import 'package:alice_dio/alice_dio_adapter.dart';
import 'package:alice_test/alice_test.dart';
Expand All @@ -22,10 +23,12 @@ void main() {
setUp(() {
registerFallbackValue(AliceHttpCall(0));
registerFallbackValue(AliceHttpResponse());
registerFallbackValue(AliceHttpError());

aliceCore = AliceCoreMock();
when(() => aliceCore.addCall(any())).thenAnswer((_) => {});
when(() => aliceCore.addResponse(any(), any())).thenAnswer((_) => {});
when(() => aliceCore.addError(any(), any())).thenAnswer((_) => {});

aliceDioAdapter = AliceDioAdapter();
aliceDioAdapter.injectCore(aliceCore);
Expand Down Expand Up @@ -219,4 +222,63 @@ void main() {
file.deleteSync();
});
});

test("should handle call with error", () async {
dioAdapter.onGet(
'https://test.com/json',
(server) => server.reply(
500,
'',
),
headers: {"content-type": "application/json"},
);

try {
await dio.get<void>(
'https://test.com/json',
options: Options(
headers: {"content-type": "application/json"},
),
);
} catch (_) {}

final requestMatcher = buildRequestMatcher(
checkTime: true,
headers: {"content-type": "application/json"},
contentType: "application/json",
queryParameters: {},
);

final responseMatcher = buildResponseMatcher(checkTime: true);

final callMatcher = buildCallMatcher(
checkId: true,
checkTime: true,
secured: true,
loading: true,
client: 'Dio',
method: 'GET',
endpoint: '/json',
server: 'test.com',
uri: 'https://test.com/json',
duration: 0,
request: requestMatcher,
response: responseMatcher);

verify(() => aliceCore.addCall(any(that: callMatcher)));

final nextResponseMatcher = buildResponseMatcher(
status: 500,
size: 0,
checkTime: true,
headers: {'content-type': '[application/json]'},
);

verify(() => aliceCore.addResponse(any(that: nextResponseMatcher), any()));

final errorMatcher =
buildErrorMatcher(checkError: true, checkStacktrace: true);

verify(() => aliceCore.addError(any(that: errorMatcher), any()));
});
}
1 change: 1 addition & 0 deletions packages/alice_test/lib/alice_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ export 'matcher/header_matcher.dart';
export 'matcher/alice_call_matcher.dart';
export 'matcher/alice_request_matcher.dart';
export 'matcher/alice_response_matcher.dart';
export 'matcher/alice_error_matcher.dart';
15 changes: 15 additions & 0 deletions packages/alice_test/lib/matcher/alice_error_matcher.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import 'package:alice/model/alice_http_error.dart';
import 'package:test/test.dart';

TypeMatcher<AliceHttpError> buildErrorMatcher(
{bool? checkError, bool? checkStacktrace}) {
var matcher = const TypeMatcher<AliceHttpError>();
if (checkError == true) {
matcher = matcher.having((error) => error.error, "error", isNotEmpty);
}
if (checkStacktrace == true) {
matcher = matcher.having((error) => error.error, "stackTrace", isNotEmpty);
}

return matcher;
}

0 comments on commit 1772e05

Please sign in to comment.