This PR is to retain current behaviour when we allocate an inbound number for a service.

When a service is allocated an inbound number and they only have one SMS sender, then update that SMS sender to the inbound number.
That way they will not have more than one SMS sender and will not have to choose to use either one.
This commit is contained in:
Rebecca Law
2017-10-25 11:58:54 +01:00
parent adfc3b0801
commit a8adf4d7d7
4 changed files with 86 additions and 9 deletions

View File

@@ -6,9 +6,12 @@ from sqlalchemy.exc import SQLAlchemyError
from app.dao.service_sms_sender_dao import (
insert_or_update_service_sms_sender,
dao_add_sms_sender_for_service,
dao_update_service_sms_sender, dao_get_service_sms_senders_by_id, dao_get_sms_senders_by_service_id)
dao_update_service_sms_sender,
dao_get_service_sms_senders_by_id,
dao_get_sms_senders_by_service_id,
update_existing_sms_sender_with_inbound_number)
from app.models import ServiceSmsSender
from tests.app.db import create_service
from tests.app.db import create_service, create_inbound_number
def test_update_service_sms_sender_updates_existing_row(notify_db_session):
@@ -145,3 +148,27 @@ def test_dao_update_service_sms_sender_raises_exception_when_no_default_after_up
service_sms_sender_id=sms_sender.id,
is_default=False,
sms_sender="updated")
def test_update_existing_sms_sender_with_inbound_number(notify_db_session):
service = create_service(sms_sender='testing')
inbound_number = create_inbound_number(number='12345', service_id=service.id)
existing_sms_sender = ServiceSmsSender.query.filter_by(service_id=service.id).one()
sms_sender = update_existing_sms_sender_with_inbound_number(
service_sms_sender=existing_sms_sender, sms_sender=inbound_number.number, inbound_number_id=inbound_number.id)
assert sms_sender.inbound_number_id == inbound_number.id
assert sms_sender.sms_sender == inbound_number.number
assert sms_sender.is_default
def test_update_existing_sms_sender_with_inbound_number_raises_exception_if_inbound_number_does_not_exist(
notify_db_session
):
service = create_service(sms_sender='testing')
existing_sms_sender = ServiceSmsSender.query.filter_by(service_id=service.id).one()
with pytest.raises(expected_exception=SQLAlchemyError):
update_existing_sms_sender_with_inbound_number(service_sms_sender=existing_sms_sender,
sms_sender='blah',
inbound_number_id=uuid.uuid4())

View File

@@ -2602,12 +2602,13 @@ def test_add_service_sms_sender_can_add_multiple_senders(client, notify_db_sessi
assert len(senders) == 2
def test_add_service_sms_sender_when_it_is_an_inbound_number(client, notify_db_session):
service = create_service()
def test_add_service_sms_sender_when_it_is_an_inbound_number_updates_the_only_existing_sms_sender(
client, notify_db_session):
service = create_service(sms_sender='GOVUK')
inbound_number = create_inbound_number(number='12345')
data = {
"sms_sender": str(inbound_number.id),
"is_default": False,
"is_default": True,
"inbound_number_id": str(inbound_number.id)
}
response = client.post('/service/{}/sms-sender'.format(service.id),
@@ -2620,7 +2621,36 @@ def test_add_service_sms_sender_when_it_is_an_inbound_number(client, notify_db_s
resp_json = json.loads(response.get_data(as_text=True))
assert resp_json['sms_sender'] == inbound_number.number
assert resp_json['inbound_number_id'] == str(inbound_number.id)
assert not resp_json['is_default']
assert resp_json['is_default']
senders = ServiceSmsSender.query.all()
assert len(senders) == 1
def test_add_service_sms_sender_when_it_is_an_inbound_number_inserts_new_sms_sender_when_more_than_one(
client, notify_db_session):
service = create_service(sms_sender='GOVUK')
create_service_sms_sender(service=service, sms_sender="second", is_default=False)
inbound_number = create_inbound_number(number='12345')
data = {
"sms_sender": str(inbound_number.id),
"is_default": True,
"inbound_number_id": str(inbound_number.id)
}
response = client.post('/service/{}/sms-sender'.format(service.id),
data=json.dumps(data),
headers=[('Content-Type', 'application/json'), create_authorization_header()]
)
assert response.status_code == 201
updated_number = InboundNumber.query.get(inbound_number.id)
assert updated_number.service_id == service.id
resp_json = json.loads(response.get_data(as_text=True))
assert resp_json['sms_sender'] == inbound_number.number
assert resp_json['inbound_number_id'] == str(inbound_number.id)
assert resp_json['is_default']
senders = ServiceSmsSender.query.filter_by(service_id=service.id).all()
assert len(senders) == 3
def test_add_service_sms_sender_switches_default(client, notify_db_session):