From 0c4c467cacac7ef62c319cd26a787f5fe6b57039 Mon Sep 17 00:00:00 2001 From: Ken Tsang Date: Fri, 11 Aug 2017 12:51:52 +0100 Subject: [PATCH] Added extra tests after refactoring --- app/inbound_number/rest.py | 38 ++++++------- tests/app/dao/test_inbound_numbers_dao.py | 2 +- tests/app/inbound_number/test_rest.py | 67 ++++++++++++----------- 3 files changed, 53 insertions(+), 54 deletions(-) diff --git a/app/inbound_number/rest.py b/app/inbound_number/rest.py index f2d347c01..f95fce48b 100644 --- a/app/inbound_number/rest.py +++ b/app/inbound_number/rest.py @@ -8,7 +8,7 @@ from app.dao.inbound_numbers_dao import ( dao_set_inbound_number_to_service, dao_set_inbound_number_active_flag ) -from app.errors import register_errors +from app.errors import InvalidRequest, register_errors from app.models import InboundNumber from app.schema_validation import validate @@ -30,32 +30,28 @@ def get_inbound_numbers_available(): return jsonify(data=inbound_numbers) -@inbound_number_blueprint.route('/service/', methods=['POST']) -def post_allocate_inbound_number(service_id): +@inbound_number_blueprint.route('/service/', methods=['GET']) +def get_inbound_number_for_service(service_id): inbound_number = dao_get_inbound_number_for_service(service_id) - if not inbound_number: - available_numbers = dao_get_available_inbound_numbers() - - if len(available_numbers) > 0: - dao_set_inbound_number_to_service(service_id, available_numbers[0]) - return '', 204 - else: - return '', 409 - else: - dao_set_inbound_number_active_flag(service_id, active=True) - return '', 204 + return jsonify(data=inbound_number.serialize()) @inbound_number_blueprint.route('//service/', methods=['POST']) def post_set_inbound_number_for_service(inbound_number_id, service_id): - try: - dao_set_inbound_number_to_service(service_id, inbound_number_id) - except TypeError as e: - if str(e) == 'UUID objects are immutable': - return '', 409 - else: - raise e + if len(dao_get_available_inbound_numbers()) == 0: + raise InvalidRequest('No inbound numbers available', status_code=400) + + inbound_number = dao_get_inbound_number_for_service(service_id) + if inbound_number: + raise InvalidRequest('Service already has an inbound number', status_code=400) + + inbound_number = dao_get_inbound_number(inbound_number_id) + if inbound_number.service_id: + raise InvalidRequest('Inbound number already assigned', status_code=400) + + dao_set_inbound_number_to_service(service_id, inbound_number_id) + return '', 204 diff --git a/tests/app/dao/test_inbound_numbers_dao.py b/tests/app/dao/test_inbound_numbers_dao.py index d38622d86..9d59a8110 100644 --- a/tests/app/dao/test_inbound_numbers_dao.py +++ b/tests/app/dao/test_inbound_numbers_dao.py @@ -76,6 +76,6 @@ def test_set_inbound_number_active_flag(notify_db, notify_db_session, sample_ser dao_set_inbound_number_active_flag(inbound_number.id, active=active) - inbound_number = dao_get_inbound_number(inbound_number.id) + inbound_number = dao_get_inbound_number_for_service(sample_service.id) assert inbound_number.active is active diff --git a/tests/app/inbound_number/test_rest.py b/tests/app/inbound_number/test_rest.py index 2ece65883..aca7c4c3a 100644 --- a/tests/app/inbound_number/test_rest.py +++ b/tests/app/inbound_number/test_rest.py @@ -4,7 +4,6 @@ import json from app.models import InboundNumber from app.dao.inbound_numbers_dao import ( dao_get_inbound_numbers, - dao_get_inbound_number, dao_get_available_inbound_numbers, dao_get_inbound_number_for_service, dao_set_inbound_number_to_service @@ -20,56 +19,60 @@ def test_rest_get_inbound_numbers(admin_request, sample_inbound_numbers): assert result['data'] == [i.serialize() for i in sample_inbound_numbers] -def test_rest_allocate_inbound_number(admin_request, notify_db_session, sample_inbound_numbers): - service = create_service(service_name='test service') - admin_request.post( - 'inbound_number.post_allocate_inbound_number', - _expected_status=204, - service_id=service.id +def test_rest_get_inbound_number(admin_request, notify_db_session, sample_service): + inbound_number = create_inbound_number(number='1', provider='mmg', active=False, service_id=sample_service.id) + + result = admin_request.get( + 'inbound_number.get_inbound_number_for_service', + service_id=sample_service.id ) + assert result['data'] == inbound_number.serialize() -def test_rest_allocate_inbound_number_when_no_inbound_available_returns_409( +def test_rest_set_service_to_several_inbound_numbers_returns_400( admin_request, notify_db_session, sample_service): service_1 = create_service(service_name='test service 1') - create_inbound_number(number='4', provider='mmg', active=False, service_id=sample_service.id) - create_inbound_number(number='5', provider='mmg', active=True, service_id=service_1.id) + create_inbound_number(number='1', provider='mmg', active=False, service_id=sample_service.id) + inbound_number = create_inbound_number(number='2', provider='mmg', active=True, service_id=service_1.id) service_2 = create_service(service_name='test service 2') - admin_request.post( - 'inbound_number.post_allocate_inbound_number', - _expected_status=409, - service_id=service_2.id - ) - - -def test_rest_set_service_to_several_inbound_numbers_returns_409( - admin_request, notify_db_session, sample_service): - service_1 = create_service(service_name='test service 1') - create_inbound_number(number='4', provider='mmg', active=False, service_id=sample_service.id) - inbound_number = create_inbound_number(number='5', provider='mmg', active=True, service_id=service_1.id) - service_2 = create_service(service_name='test service 2') - - admin_request.post( + result = admin_request.post( 'inbound_number.post_set_inbound_number_for_service', - _expected_status=409, + _expected_status=400, inbound_number_id=inbound_number.id, service_id=service_2.id ) + assert result['message'] == 'No inbound numbers available' -def test_rest_set_number_to_several_services_returns_409( +def test_rest_set_number_to_several_services_returns_400( admin_request, notify_db_session, sample_service): service_1 = create_service(service_name='test service 1') - inbound_number = create_inbound_number(number='4', provider='mmg', active=False, service_id=sample_service.id) + inbound_number = create_inbound_number(number='1', provider='mmg', active=True, service_id=sample_service.id) + create_inbound_number(number='2', provider='mmg', active=True, service_id=None) service_2 = create_service(service_name='test service 2') - admin_request.post( + result = admin_request.post( 'inbound_number.post_set_inbound_number_for_service', - _expected_status=409, + _expected_status=400, inbound_number_id=inbound_number.id, service_id=service_2.id ) + assert result['message'] == 'Inbound number already assigned' + + +def test_rest_set_multiple_number_to_a_service_returns_400( + admin_request, notify_db_session, sample_service): + create_inbound_number(number='1', provider='mmg', active=True, service_id=sample_service.id) + inbound_number = create_inbound_number(number='2', provider='mmg', active=True, service_id=None) + + result = admin_request.post( + 'inbound_number.post_set_inbound_number_for_service', + _expected_status=400, + inbound_number_id=inbound_number.id, + service_id=sample_service.id + ) + assert result['message'] == 'Service already has an inbound number' def test_rest_set_inbound_number_active_flag_off(admin_request, notify_db_session): @@ -82,7 +85,7 @@ def test_rest_set_inbound_number_active_flag_off(admin_request, notify_db_sessio inbound_number_id=inbound_number.id ) - inbound_number_off = dao_get_inbound_number(inbound_number.id) + inbound_number_off = dao_get_inbound_number_for_service(service.id) assert not inbound_number_off.active @@ -96,5 +99,5 @@ def test_rest_set_inbound_number_active_flag_on(admin_request, notify_db_session inbound_number_id=inbound_number.id ) - inbound_number_on = dao_get_inbound_number(inbound_number.id) + inbound_number_on = dao_get_inbound_number_for_service(service.id) assert inbound_number_on.active