def test_account_create_request_wrong_account_code(): req = ro.AccountOperationRequest(account={'code': '', 'amount': 100.00}) assert req.has_errors() assert req.errors[0]['parameter'] == 'account' assert req.errors[0]['message'] == "account code can't be empty" assert bool(req) is False
def test_account_create_request_wrong_format(): req = ro.AccountOperationRequest(account='') assert req.has_errors() assert bool(req) is False assert req.errors[0]['parameter'] == 'account' assert req.errors[0]['message'] == 'parameter not in the correct format'
def test_account_create_request_empty_params(): req = ro.AccountOperationRequest(account={}) assert req.has_errors() assert bool(req) is False assert req.errors[0]['parameter'] == 'account' assert req.errors[0]['message'] == 'account code and amount are required'
def test_account_create_request_no_params(): req = ro.AccountOperationRequest() assert req.has_errors() assert bool(req) is False assert req.errors[0]['parameter'] == 'account' assert req.errors[0]['message'] == 'parameter is required'
def test_account_create_request_with_correct_params(): req = ro.AccountOperationRequest(account={ 'code': '1111111111V', 'amount': 100.00 }) assert req.account == {'code': '1111111111V', 'amount': 100.00} assert bool(req) is True
def test_account_request_negative_account_amount(): req = ro.AccountOperationRequest(account={ 'code': '1111111111V', 'amount': -300.00 }) assert req.has_errors() assert req.errors[0]['parameter'] == 'account' assert req.errors[0]['message'] == "amount must be a positive number" assert bool(req) is False
def test_account_creation_wrong_params_format(unit_of_work): uowm = unit_of_work account_creation = uc_account.AccountCreationUseCase(uowm) req = rq.AccountOperationRequest(account=0) resp = account_creation.execute(req) assert bool(resp) is False assert resp.value == {'type': rs.ResponseFailure.PARAMETERS_ERROR, 'message': 'account : parameter not in the correct format'} assert unit_of_work._committed is False
def test_account_creation_no_params(unit_of_work): uowm = unit_of_work account_creation = uc_account.AccountCreationUseCase(uowm) req = rq.AccountOperationRequest() resp = account_creation.execute(req) assert bool(resp) is False assert resp.value == {'type': rs.ResponseFailure.PARAMETERS_ERROR, 'message': 'account : parameter is required'} assert unit_of_work._committed is False
def test_account_withdraw_nonexistent_account(params, unit_of_work): uowm = unit_of_work account_withdraw = uc_account.AccountWithdrawUseCase(uowm) req = rq.AccountOperationRequest(account=params) resp = account_withdraw.execute(req) assert bool(resp) is False assert unit_of_work._committed is False assert resp.value == {'type': rs.ResponseFailure.RESOURCE_ERROR, 'message': 'account not found'}
def test_account_creation_error(params, unit_of_work): with mock.patch.object(unit_of_work.accounts,'add_account', side_effect=Exception('error message')): uowm = unit_of_work account_creation = uc_account.AccountCreationUseCase(uowm) req = rq.AccountOperationRequest(account=params) resp = account_creation.execute(req) assert bool(resp) is False assert unit_of_work._committed is False assert resp.value == {'type': rs.ResponseFailure.SYSTEM_ERROR, 'message': 'Exception : error message'} assert unit_of_work._rolledback
def test_account_creation_existing_account(account_domain_entity, params, unit_of_work): uowm = unit_of_work unit_of_work.accounts.add_account(account_domain_entity) account_creation = uc_account.AccountCreationUseCase(uowm) req = rq.AccountOperationRequest(account=params) resp = account_creation.execute(req) assert bool(resp) is False assert unit_of_work._committed is False assert resp.value == {'type': rs.ResponseFailure.RESOURCE_ERROR, 'message': 'account already exists'}
def test_account_withdraw_error(account_domain_entity, params, unit_of_work): with mock.patch.object(unit_of_work.accounts,'account_withdraw', side_effect=Exception('error message')): uowm = unit_of_work uowm.accounts.add_account(account_domain_entity) account_withdraw = uc_account.AccountWithdrawUseCase(uowm) req = rq.AccountOperationRequest(account=params) resp = account_withdraw.execute(req) assert bool(resp) is False assert unit_of_work._committed is False assert unit_of_work._rolledback assert resp.value == {'type': rs.ResponseFailure.SYSTEM_ERROR, 'message': 'Exception : error message'}
def account_deposit(): if request.headers['Content-Type'] != 'application/json': return Response(json.dumps({'message':'content type must be json'}), mimetype='application/json', status=STATUS_CODES[resp.ResponseFailure.PARAMETERS_ERROR]) else: req_object = req.AccountOperationRequest(account=request.json) uowm = db.unit_of_work_manager usecase = acc_uc.AccountDepositUseCase(uowm) resp_object = usecase.execute(req_object) return Response(json.dumps(resp_object.value, cls=acc_ser.AccountEncoder), mimetype='application/json', status=STATUS_CODES[resp_object.type])