From ecdf076506b4e5e39ffa2248a64e09f0e30060c8 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 14 Feb 2019 11:32:50 +0000 Subject: [PATCH] Store anticipated volumes as integers This will make it easier to do analysis on the data. Almost all users are submitting data in a numerical format now anyway, because we ask the question in a sensible way. --- app/models.py | 6 +++--- migrations/versions/0260_service_volumes.py | 2 +- tests/app/service/test_rest.py | 13 ++++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/models.py b/app/models.py index b099e14c5..c2c93d015 100644 --- a/app/models.py +++ b/app/models.py @@ -361,9 +361,9 @@ class Service(db.Model, Versioned): crown = db.Column(db.Boolean, index=False, nullable=False, default=True) rate_limit = db.Column(db.Integer, index=False, nullable=False, default=3000) contact_link = db.Column(db.String(255), nullable=True, unique=False) - volume_sms = db.Column(db.String(255), nullable=True, unique=False) - volume_email = db.Column(db.String(255), nullable=True, unique=False) - volume_letter = db.Column(db.String(255), nullable=True, unique=False) + volume_sms = db.Column(db.Integer(), nullable=True, unique=False) + volume_email = db.Column(db.Integer(), nullable=True, unique=False) + volume_letter = db.Column(db.Integer(), nullable=True, unique=False) organisation = db.relationship( 'Organisation', diff --git a/migrations/versions/0260_service_volumes.py b/migrations/versions/0260_service_volumes.py index ad5d43035..276901f5f 100644 --- a/migrations/versions/0260_service_volumes.py +++ b/migrations/versions/0260_service_volumes.py @@ -22,7 +22,7 @@ TABLES_AND_CHANNELS = product( def upgrade(): for table, channel in TABLES_AND_CHANNELS: - op.add_column(table, sa.Column(channel, sa.String(length=255), nullable=True)) + op.add_column(table, sa.Column(channel, sa.Integer(), nullable=True)) def downgrade(): diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 8220fc8f7..b4504ab2c 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -620,15 +620,18 @@ def test_update_service_sets_crown(client, sample_service, org_type, expected): 'volume_sms', 'volume_letter', )) -@pytest.mark.parametrize('value', ( - 'ABC123', - None, +@pytest.mark.parametrize('value, expected_status, expected_persisted', ( + (1234, 200, 1234), + (None, 200, None), + ('Aa', 400, None), )) def test_update_service_sets_volumes( admin_request, sample_service, field, value, + expected_status, + expected_persisted, ): admin_request.post( 'service.update_service', @@ -636,9 +639,9 @@ def test_update_service_sets_volumes( _data={ field: value, }, - _expected_status=200, + _expected_status=expected_status, ) - assert getattr(sample_service, field) == value + assert getattr(sample_service, field) == expected_persisted @pytest.fixture(scope='function')