diff --git a/lib/api/response/identity_verification_document_add_response_extended.dart b/lib/api/response/identity_verification_document_add_response_extended.dart new file mode 100644 index 0000000000..f971dcd972 --- /dev/null +++ b/lib/api/response/identity_verification_document_add_response_extended.dart @@ -0,0 +1,36 @@ +import 'package:deriv_dependency_injector/dependency_injector.dart'; +import 'package:flutter_deriv_api/api/exceptions/base_api_exception.dart'; +import 'package:flutter_deriv_api/api/models/base_exception_model.dart'; +import 'package:flutter_deriv_api/api/response/identity_verification_document_add_response_result.dart'; +import 'package:flutter_deriv_api/basic_api/generated/identity_verification_document_add_receive.dart'; +import 'package:flutter_deriv_api/basic_api/generated/identity_verification_document_add_send.dart'; +import 'package:flutter_deriv_api/helpers/miscellaneous_helper.dart'; +import 'package:flutter_deriv_api/services/connection/api_manager/base_api.dart'; + +/// Extended model for [IdentityVerificationDocumentAddResponse] to add API calls. +class IdentityVerificationDocumentAddResponseExtended + extends IdentityVerificationDocumentAddResponse { + static final BaseAPI _api = Injector()(); + + /// Adds an identity verification document. + static Future + addIdentityVerificationDocument( + IdentityVerificationDocumentAddRequest request, + ) async { + final IdentityVerificationDocumentAddReceive response = + await _api.call(request: request); + + checkException( + response: response, + exceptionCreator: ({ + BaseExceptionModel? baseExceptionModel, + }) => + BaseAPIException( + baseExceptionModel: baseExceptionModel, + ), + ); + + return IdentityVerificationDocumentAddResponse.fromJson( + response.identityVerificationDocumentAdd); + } +} diff --git a/lib/services/connection/api_manager/mock_api.dart b/lib/services/connection/api_manager/mock_api.dart index a60a4415d6..221aad593e 100644 --- a/lib/services/connection/api_manager/mock_api.dart +++ b/lib/services/connection/api_manager/mock_api.dart @@ -17,6 +17,7 @@ import 'package:flutter_deriv_api/services/connection/api_manager/mock_data/pass import 'package:flutter_deriv_api/services/connection/api_manager/mock_data/passkeys/passkeys_register_options_response.dart'; import 'package:flutter_deriv_api/services/connection/api_manager/mock_data/passkeys/passkeys_register_response.dart'; import 'package:flutter_deriv_api/services/connection/api_manager/mock_data/common/crypto_config_response.dart'; +import 'package:flutter_deriv_api/services/connection/api_manager/mock_data/user/identity_verification_document_add_response.dart'; import 'package:flutter_deriv_api/services/connection/call_manager/base_call_manager.dart'; import 'package:flutter_deriv_api/services/connection/call_manager/exceptions/call_manager_exception.dart'; @@ -390,6 +391,8 @@ class MockAPI extends BaseAPI { return passkeysRegisterResponse; case 'passkeys_list': return passkeysListResponse; + case 'identity_verification_document_add': + return identityVerificationDocumentAddResponse; default: throw APIManagerException( diff --git a/lib/services/connection/api_manager/mock_data/user/identity_verification_document_add_response.dart b/lib/services/connection/api_manager/mock_data/user/identity_verification_document_add_response.dart new file mode 100644 index 0000000000..4a30a4d48d --- /dev/null +++ b/lib/services/connection/api_manager/mock_data/user/identity_verification_document_add_response.dart @@ -0,0 +1,12 @@ +/// Identity Verification Document Add Response +const String identityVerificationDocumentAddResponse = ''' +{ + "echo_req": { + "documentType": "test", + "documentNumber": "123", + "issuingCountry": "US" + }, + "identity_verification_document_add": 1, + "msg_type": "identity_verification_document_add" +} +'''; diff --git a/test/api/user/identity_verification/identity_verification_document_add_test.dart b/test/api/user/identity_verification/identity_verification_document_add_test.dart new file mode 100644 index 0000000000..f264b1f616 --- /dev/null +++ b/test/api/user/identity_verification/identity_verification_document_add_test.dart @@ -0,0 +1,27 @@ +import 'package:flutter_deriv_api/api/api_initializer.dart'; +import 'package:flutter_deriv_api/api/response/identity_verification_document_add_response_extended.dart'; +import 'package:flutter_deriv_api/api/response/identity_verification_document_add_response_result.dart'; +import 'package:flutter_deriv_api/basic_api/generated/identity_verification_document_add_send.dart'; +import 'package:flutter_deriv_api/services/connection/api_manager/mock_api.dart'; +import 'package:deriv_dependency_injector/dependency_injector.dart'; +import 'package:test/test.dart'; + +void main() { + setUp(() => APIInitializer().initialize(api: MockAPI())); + + tearDown(() => Injector().dispose()); + + test('Add Identity Verification Document', () async { + final IdentityVerificationDocumentAddResponse? identityDocumentResponse = + await IdentityVerificationDocumentAddResponseExtended + .addIdentityVerificationDocument( + const IdentityVerificationDocumentAddRequest( + documentNumber: '123', + documentType: 'test', + issuingCountry: 'US', + ), + ); + + expect(identityDocumentResponse?.identityVerificationDocumentAdd, 1); + }); +}