Make service_broadcast_settings.provider non-nullable

We set all existing null values to "all", then make the column
non-nullable. Admin is already passing through the value of "all".
This commit is contained in:
Katie Smith
2021-05-10 15:41:34 +01:00
parent 96cb30d640
commit 4624328c36
4 changed files with 41 additions and 28 deletions

View File

@@ -2557,7 +2557,7 @@ class ServiceBroadcastSettings(db.Model):
channel = db.Column( channel = db.Column(
db.String(255), db.ForeignKey('broadcast_channel_types.name'), nullable=False db.String(255), db.ForeignKey('broadcast_channel_types.name'), nullable=False
) )
provider = db.Column(db.String, db.ForeignKey('broadcast_provider_types.name'), nullable=True) provider = db.Column(db.String, db.ForeignKey('broadcast_provider_types.name'), nullable=False)
created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow) created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow)
updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow) updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow)

View File

@@ -0,0 +1,22 @@
"""
Revision ID: 0353_broadcast_provider_not_null
Revises: 0352_broadcast_provider_types
Create Date: 2021-05-10 15:06:40.046786
"""
from alembic import op
import sqlalchemy as sa
revision = '0353_broadcast_provider_not_null'
down_revision = '0352_broadcast_provider_types'
def upgrade():
op.execute("UPDATE service_broadcast_settings SET provider = 'all' WHERE provider is null")
op.alter_column('service_broadcast_settings', 'provider', existing_type=sa.VARCHAR(), nullable=False)
def downgrade():
op.alter_column('service_broadcast_settings', 'provider', existing_type=sa.VARCHAR(), nullable=True)
op.execute("UPDATE service_broadcast_settings SET provider = null WHERE provider = 'all'")

View File

@@ -30,14 +30,7 @@ from tests.app.db import (
from tests.conftest import set_config from tests.conftest import set_config
@pytest.mark.parametrize('available_provider', [None, 'all']) def test_send_broadcast_event_queues_up_for_active_providers(mocker, notify_api, sample_broadcast_service):
def test_send_broadcast_event_queues_up_for_active_providers(
mocker,
notify_api,
sample_broadcast_service,
available_provider,
):
sample_broadcast_service.allowed_broadcast_provider = available_provider
template = create_template(sample_broadcast_service, BROADCAST_TYPE) template = create_template(sample_broadcast_service, BROADCAST_TYPE)
broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING) broadcast_message = create_broadcast_message(template, status=BroadcastStatusType.BROADCASTING)
event = create_broadcast_event(broadcast_message) event = create_broadcast_event(broadcast_message)

View File

@@ -292,8 +292,6 @@ def test_get_service_by_id(admin_request, sample_service):
@pytest.mark.parametrize('broadcast_channel,allowed_broadcast_provider', ( @pytest.mark.parametrize('broadcast_channel,allowed_broadcast_provider', (
('test', 'all'), ('test', 'all'),
('severe', 'all'), ('severe', 'all'),
('test', None),
('severe', None),
('test', 'ee'), ('test', 'ee'),
('severe', 'three'), ('severe', 'three'),
)) ))
@@ -3719,7 +3717,7 @@ def test_set_as_broadcast_service_sets_broadcast_channel(
data = { data = {
'broadcast_channel': channel, 'broadcast_channel': channel,
'service_mode': 'live', 'service_mode': 'live',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
@@ -3744,7 +3742,7 @@ def test_set_as_broadcast_service_updates_channel_for_broadcast_service(
data = { data = {
'broadcast_channel': "test", 'broadcast_channel': "test",
'service_mode': 'training', 'service_mode': 'training',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
@@ -3768,7 +3766,7 @@ def test_set_as_broadcast_service_rejects_unknown_channels(
data = { data = {
'broadcast_channel': channel, 'broadcast_channel': channel,
'service_mode': 'live', 'service_mode': 'live',
'provider_restriction': None, 'provider_restriction': "all",
} }
admin_request.post( admin_request.post(
@@ -3784,7 +3782,7 @@ def test_set_as_broadcast_service_rejects_if_no_channel(
): ):
data = { data = {
'service_mode': 'training', 'service_mode': 'training',
'provider_restriction': None, 'provider_restriction': "all",
} }
admin_request.post( admin_request.post(
@@ -3807,7 +3805,7 @@ def test_set_as_broadcast_service_gives_broadcast_permission_and_removes_other_c
data = { data = {
'broadcast_channel': "severe", 'broadcast_channel': "severe",
'service_mode': 'training', 'service_mode': 'training',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
@@ -3838,7 +3836,7 @@ def test_set_as_broadcast_service_maintains_broadcast_permission_for_existing_br
data = { data = {
'broadcast_channel': "severe", 'broadcast_channel': "severe",
'service_mode': 'live', 'service_mode': 'live',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
@@ -3860,7 +3858,7 @@ def test_set_as_broadcast_service_sets_count_as_live_to_false(
data = { data = {
'broadcast_channel': "severe", 'broadcast_channel': "severe",
'service_mode': 'live', 'service_mode': 'live',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
'service.set_as_broadcast_service', 'service.set_as_broadcast_service',
@@ -3881,7 +3879,7 @@ def test_set_as_broadcast_service_sets_service_org_to_broadcast_org(
data = { data = {
'broadcast_channel': "severe", 'broadcast_channel': "severe",
'service_mode': 'training', 'service_mode': 'training',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
'service.set_as_broadcast_service', 'service.set_as_broadcast_service',
@@ -3900,7 +3898,7 @@ def test_set_as_broadcast_service_does_not_error_if_run_on_a_service_that_is_alr
data = { data = {
'broadcast_channel': "severe", 'broadcast_channel': "severe",
'service_mode': "live", 'service_mode': "live",
'provider_restriction': None, 'provider_restriction': "all",
} }
for _ in range(2): for _ in range(2):
admin_request.post( admin_request.post(
@@ -3922,7 +3920,7 @@ def test_set_as_broadcast_service_sets_service_to_live_mode(
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
'service_mode': 'live', 'service_mode': 'live',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
@@ -3947,7 +3945,7 @@ def test_set_as_broadcast_service_doesnt_override_existing_go_live_at(
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
'service_mode': 'live', 'service_mode': 'live',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
@@ -3973,7 +3971,7 @@ def test_set_as_broadcast_service_sets_service_to_training_mode(
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
'service_mode': 'training', 'service_mode': 'training',
'provider_restriction': None, 'provider_restriction': "all",
} }
result = admin_request.post( result = admin_request.post(
@@ -3993,7 +3991,7 @@ def test_set_as_broadcast_service_rejects_unknown_service_mode(
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
'service_mode': service_mode, 'service_mode': service_mode,
'provider_restriction': None, 'provider_restriction': "all",
} }
admin_request.post( admin_request.post(
@@ -4009,7 +4007,7 @@ def test_set_as_broadcast_service_rejects_if_no_service_mode(
): ):
data = { data = {
'broadcast_channel': 'severe', 'broadcast_channel': 'severe',
'provider_restriction': None, 'provider_restriction': "all",
} }
admin_request.post( admin_request.post(
@@ -4020,7 +4018,7 @@ def test_set_as_broadcast_service_rejects_if_no_service_mode(
) )
@pytest.mark.parametrize('provider', [None, "all", "three", "ee", "vodafone", "o2"]) @pytest.mark.parametrize('provider', ["all", "three", "ee", "vodafone", "o2"])
def test_set_as_broadcast_service_sets_mobile_provider_restriction( def test_set_as_broadcast_service_sets_mobile_provider_restriction(
admin_request, sample_service, broadcast_organisation, provider admin_request, sample_service, broadcast_organisation, provider
): ):
@@ -4045,7 +4043,7 @@ def test_set_as_broadcast_service_sets_mobile_provider_restriction(
assert records[0].provider == provider assert records[0].provider == provider
@pytest.mark.parametrize('provider', [None, "vodafone"]) @pytest.mark.parametrize('provider', ["all", "vodafone"])
def test_set_as_broadcast_service_updates_mobile_provider_restriction( def test_set_as_broadcast_service_updates_mobile_provider_restriction(
admin_request, notify_db, sample_broadcast_service, provider admin_request, notify_db, sample_broadcast_service, provider
): ):
@@ -4116,7 +4114,7 @@ def test_set_as_broadcast_service_updates_services_history(
data = { data = {
'broadcast_channel': 'test', 'broadcast_channel': 'test',
'service_mode': 'live', 'service_mode': 'live',
'provider_restriction': None, 'provider_restriction': "all",
} }
admin_request.post( admin_request.post(