mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-23 08:51:30 -05:00
fix tests
This commit is contained in:
@@ -62,24 +62,19 @@ def dao_create_organization(organization):
|
|||||||
|
|
||||||
@autocommit
|
@autocommit
|
||||||
def dao_update_organization(organization_id, **kwargs):
|
def dao_update_organization(organization_id, **kwargs):
|
||||||
|
|
||||||
domains = kwargs.pop('domains', None)
|
domains = kwargs.pop('domains', None)
|
||||||
|
|
||||||
num_updated = Organization.query.filter_by(id=organization_id).update(
|
num_updated = Organization.query.filter_by(id=organization_id).update(
|
||||||
kwargs
|
kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
if isinstance(domains, list):
|
if isinstance(domains, list):
|
||||||
|
|
||||||
Domain.query.filter_by(organization_id=organization_id).delete()
|
Domain.query.filter_by(organization_id=organization_id).delete()
|
||||||
|
|
||||||
db.session.bulk_save_objects([
|
db.session.bulk_save_objects([
|
||||||
Domain(domain=domain.lower(), organization_id=organization_id)
|
Domain(domain=domain.lower(), organization_id=organization_id)
|
||||||
for domain in domains
|
for domain in domains
|
||||||
])
|
])
|
||||||
|
|
||||||
organization = Organization.query.get(organization_id)
|
organization = Organization.query.get(organization_id)
|
||||||
|
|
||||||
if 'organization_type' in kwargs:
|
if 'organization_type' in kwargs:
|
||||||
_update_organization_services(organization, 'organization_type', only_where_none=False)
|
_update_organization_services(organization, 'organization_type', only_where_none=False)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
from flask import Blueprint, abort, current_app, jsonify, request
|
from flask import Blueprint, abort, current_app, jsonify, request
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError, SQLAlchemyError
|
||||||
|
|
||||||
from app.config import QueueNames
|
from app.config import QueueNames
|
||||||
from app.dao.annual_billing_dao import set_default_free_allowance_for_service
|
from app.dao.annual_billing_dao import set_default_free_allowance_for_service
|
||||||
@@ -92,7 +92,15 @@ def create_organization():
|
|||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
validate(data, post_create_organization_schema)
|
validate(data, post_create_organization_schema)
|
||||||
organization = Organization(**data)
|
organization = Organization(**data)
|
||||||
|
try:
|
||||||
dao_create_organization(organization)
|
dao_create_organization(organization)
|
||||||
|
except SQLAlchemyError as e:
|
||||||
|
error = str(e.__dict__['orig'])
|
||||||
|
if "duplicate key" in error:
|
||||||
|
return jsonify(result='error', message='Organization name already exists'), 400
|
||||||
|
else:
|
||||||
|
return jsonify(result='error', message='Error'), 400
|
||||||
|
|
||||||
return jsonify(organization.serialize()), 201
|
return jsonify(organization.serialize()), 201
|
||||||
|
|
||||||
|
|
||||||
@@ -101,7 +109,16 @@ def update_organization(organization_id):
|
|||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
validate(data, post_update_organization_schema)
|
validate(data, post_update_organization_schema)
|
||||||
|
|
||||||
|
try:
|
||||||
result = dao_update_organization(organization_id, **data)
|
result = dao_update_organization(organization_id, **data)
|
||||||
|
except SQLAlchemyError as e:
|
||||||
|
error = str(e.__dict__['orig'])
|
||||||
|
if "duplicate key" in error and "domain_pkey" in error:
|
||||||
|
return jsonify(result='error', message='Domain already exists'), 400
|
||||||
|
elif "duplicate key" in error and "organisation_name" in error:
|
||||||
|
return jsonify(result='error', message='Organization name already exists'), 400
|
||||||
|
else:
|
||||||
|
return jsonify(result='error', message='Error'), 400
|
||||||
|
|
||||||
if data.get('agreement_signed') is True:
|
if data.get('agreement_signed') is True:
|
||||||
# if a platform admin has manually adjusted the organization, don't tell people
|
# if a platform admin has manually adjusted the organization, don't tell people
|
||||||
|
|||||||
@@ -205,6 +205,9 @@ def test_post_create_organization_sets_default_nhs_branding_for_nhs_orgs(
|
|||||||
|
|
||||||
|
|
||||||
def test_post_create_organization_existing_name_raises_400(admin_request, sample_organization):
|
def test_post_create_organization_existing_name_raises_400(admin_request, sample_organization):
|
||||||
|
organization = Organization.query.all()
|
||||||
|
assert len(organization) == 1
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'name': sample_organization.name,
|
'name': sample_organization.name,
|
||||||
'active': True,
|
'active': True,
|
||||||
@@ -223,6 +226,27 @@ def test_post_create_organization_existing_name_raises_400(admin_request, sample
|
|||||||
assert response['message'] == 'Organization name already exists'
|
assert response['message'] == 'Organization name already exists'
|
||||||
|
|
||||||
|
|
||||||
|
def test_post_create_organization_works(admin_request, sample_organization):
|
||||||
|
organization = Organization.query.all()
|
||||||
|
assert len(organization) == 1
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'name': "org 2",
|
||||||
|
'active': True,
|
||||||
|
'organization_type': 'federal',
|
||||||
|
}
|
||||||
|
|
||||||
|
admin_request.post(
|
||||||
|
'organization.create_organization',
|
||||||
|
_data=data,
|
||||||
|
_expected_status=201
|
||||||
|
)
|
||||||
|
|
||||||
|
organization = Organization.query.all()
|
||||||
|
|
||||||
|
assert len(organization) == 2
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('data, expected_error', (
|
@pytest.mark.parametrize('data, expected_error', (
|
||||||
({
|
({
|
||||||
'active': False,
|
'active': False,
|
||||||
|
|||||||
Reference in New Issue
Block a user