From 79d23f25db07be463d759a53e18cf990e12970e3 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 12 May 2022 12:42:45 +0700 Subject: [PATCH] TF-548 Add unit test --- ...utocomplete_tmail_contact_method_test.dart | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 contact/test/contact/autocomplete_tmail_contact_method_test.dart diff --git a/contact/test/contact/autocomplete_tmail_contact_method_test.dart b/contact/test/contact/autocomplete_tmail_contact_method_test.dart new file mode 100644 index 000000000..ddb81b8dd --- /dev/null +++ b/contact/test/contact/autocomplete_tmail_contact_method_test.dart @@ -0,0 +1,111 @@ +import 'package:contact/contact/autocomplete/autocomplete_tmail_contact_method.dart'; +import 'package:contact/contact/autocomplete/autocomplete_tmail_contact_response.dart'; +import 'package:contact/contact/model/contact_filter.dart'; +import 'package:contact/contact/model/tmail_contact.dart'; +import 'package:dio/dio.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:http_mock_adapter/http_mock_adapter.dart'; +import 'package:jmap_dart_client/http/http_client.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/id.dart'; +import 'package:jmap_dart_client/jmap/jmap_request.dart'; + +void main() { + group('test to json autocomplete_tmail_contact method', () { + final contact1 = TMailContact( + '2', + '', + '', + 'marie@otherdomain.tld' + ); + + final contact2 = TMailContact( + '4', + 'Marie', + 'Dupond', + 'mdupond@linagora.com' + ); + + test('autocomplete_tmail_contact method and response parsing', () async { + final baseOption = BaseOptions(method: 'POST'); + final dio = Dio(baseOption) + ..options.baseUrl = 'http://domain.com'; + final dioAdapter = DioAdapter(dio: dio); + dioAdapter.onPost( + '/jmap', + (server) => server.reply(200, { + "sessionState": "2c9f1b12-b35a-43e6-9af2-0106fb53a943", + "methodResponses": [ + [ + "TMailContact/autocomplete", + { + "accountId": + "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", + "list": [ + { + "id": "2", + "firstname": "", + "surname": "", + "emailAddress": "marie@otherdomain.tld" + }, + { + "id": "4", + "firstname": "Marie", + "surname": "Dupond", + "emailAddress": "mdupond@linagora.com" + } + ] + }, + "c0" + ] + ] + }), + data: { + "using": [ + "urn:ietf:params:jmap:core", + "com:linagora:params:jmap:contact:autocomplete" + ], + "methodCalls": [ + [ + "TMailContact/autocomplete", + { + "accountId": + "29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6", + "filter": { + "text": "marie" + } + }, + "c0" + ] + ] + }, + headers: { + "accept": "application/json;jmapVersion=rfc-8621", + "content-type": "application/json; charset=utf-8", + "content-length": 245 + }); + + final httpClient = HttpClient(dio); + final processingInvocation = ProcessingInvocation(); + final requestBuilder = JmapRequestBuilder(httpClient, processingInvocation); + final accountId = AccountId(Id('29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6')); + + final autoCompleteMethod = AutoCompleteTMailContactMethod( + accountId, + ContactFilter('marie')); + + final autoCompleteInvocation = requestBuilder.invocation(autoCompleteMethod); + final response = await (requestBuilder + ..usings(autoCompleteMethod.requiredCapabilities)) + .build() + .execute(); + + final result = response.parse( + autoCompleteInvocation.methodCallId, + AutoCompleteTMailContactResponse.deserialize); + + expect(result?.list.length, equals(2)); + expect(result?.list, containsAll({contact1, contact2})); + }); + }); +} \ No newline at end of file