Пример #1
0
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
Пример #2
0
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'
Пример #3
0
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'
Пример #4
0
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'
Пример #5
0
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
Пример #6
0
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'}
Пример #13
0
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])