mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-23 07:46:06 -04:00
Merge pull request #1265 from alphagov/logoless-organsations
Make organisation logo nullable
This commit is contained in:
@@ -136,7 +136,7 @@ class Organisation(db.Model):
|
|||||||
__tablename__ = 'organisation'
|
__tablename__ = 'organisation'
|
||||||
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
||||||
colour = db.Column(db.String(7), nullable=True)
|
colour = db.Column(db.String(7), nullable=True)
|
||||||
logo = db.Column(db.String(255), nullable=False)
|
logo = db.Column(db.String(255), nullable=True)
|
||||||
name = db.Column(db.String(255), nullable=True)
|
name = db.Column(db.String(255), nullable=True)
|
||||||
|
|
||||||
def serialize(self):
|
def serialize(self):
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ post_create_organisation_schema = {
|
|||||||
"name": {"type": ["string", "null"]},
|
"name": {"type": ["string", "null"]},
|
||||||
"logo": {"type": ["string", "null"]}
|
"logo": {"type": ["string", "null"]}
|
||||||
},
|
},
|
||||||
"required": ["logo"]
|
"required": []
|
||||||
}
|
}
|
||||||
|
|
||||||
post_update_organisation_schema = {
|
post_update_organisation_schema = {
|
||||||
|
|||||||
25
migrations/versions/0121_nullable_logos.py
Normal file
25
migrations/versions/0121_nullable_logos.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
"""
|
||||||
|
|
||||||
|
Revision ID: 0121_nullable_logos
|
||||||
|
Revises: 0120_add_org_banner_branding
|
||||||
|
Create Date: 2017-09-20 11:00:20.415523
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
revision = '0121_nullable_logos'
|
||||||
|
down_revision = '0120_add_org_banner_branding'
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.alter_column(
|
||||||
|
'organisation', 'logo',
|
||||||
|
existing_type=sa.VARCHAR(length=255),
|
||||||
|
nullable=True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
pass
|
||||||
@@ -21,20 +21,13 @@ def test_create_organisation(notify_db, notify_db_session):
|
|||||||
|
|
||||||
|
|
||||||
def test_create_organisation_without_name_or_colour_is_valid(notify_db, notify_db_session):
|
def test_create_organisation_without_name_or_colour_is_valid(notify_db, notify_db_session):
|
||||||
organisation = create_organisation(name=None, colour=None)
|
organisation = create_organisation(logo=None, name=None, colour=None)
|
||||||
|
|
||||||
assert Organisation.query.count() == 1
|
assert Organisation.query.count() == 1
|
||||||
organisation_from_db = Organisation.query.first()
|
organisation_from_db = Organisation.query.first()
|
||||||
assert organisation == organisation_from_db
|
assert organisation == organisation_from_db
|
||||||
|
|
||||||
|
|
||||||
def test_create_organisation_without_logo_raises_error(notify_db, notify_db_session):
|
|
||||||
with pytest.raises(IntegrityError) as excinfo:
|
|
||||||
create_organisation(logo=None)
|
|
||||||
assert 'column "logo" violates not-null constraint' in str(excinfo.value)
|
|
||||||
assert Organisation.query.count() == 0
|
|
||||||
|
|
||||||
|
|
||||||
def test_get_organisations_gets_all_organisations(notify_db, notify_db_session):
|
def test_get_organisations_gets_all_organisations(notify_db, notify_db_session):
|
||||||
org_1 = create_organisation(name='test_org_1')
|
org_1 = create_organisation(name='test_org_1')
|
||||||
org_2 = create_organisation(name='test_org_2')
|
org_2 = create_organisation(name='test_org_2')
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ def test_post_create_organisation(admin_request, notify_db_session):
|
|||||||
assert data['logo'] == response['data']['logo']
|
assert data['logo'] == response['data']['logo']
|
||||||
|
|
||||||
|
|
||||||
def test_post_create_organisation_without_logo_raises_error(admin_request, notify_db_session):
|
def test_post_create_organisation_without_logo_is_ok(admin_request, notify_db_session):
|
||||||
data = {
|
data = {
|
||||||
'name': 'test organisation',
|
'name': 'test organisation',
|
||||||
'colour': '#0000ff',
|
'colour': '#0000ff',
|
||||||
@@ -62,9 +62,8 @@ def test_post_create_organisation_without_logo_raises_error(admin_request, notif
|
|||||||
response = admin_request.post(
|
response = admin_request.post(
|
||||||
'organisation.create_organisation',
|
'organisation.create_organisation',
|
||||||
_data=data,
|
_data=data,
|
||||||
_expected_status=400
|
_expected_status=201,
|
||||||
)
|
)
|
||||||
assert response['errors'][0]['message'] == "logo is a required property"
|
|
||||||
|
|
||||||
|
|
||||||
def test_post_create_organisation_without_name_or_colour_is_valid(admin_request, notify_db_session):
|
def test_post_create_organisation_without_name_or_colour_is_valid(admin_request, notify_db_session):
|
||||||
|
|||||||
Reference in New Issue
Block a user