Added an endpoint to get letter-branding by id.

This commit is contained in:
Rebecca Law
2019-01-25 16:05:55 +00:00
parent e030c2be88
commit 4dbb54b5e7
4 changed files with 49 additions and 3 deletions

View File

@@ -3,6 +3,10 @@ from app.dao.dao_utils import transactional
from app.models import LetterBranding
def dao_get_letter_branding_by_id(letter_branding_id):
return LetterBranding.query.filter(LetterBranding.id == letter_branding_id).one()
def dao_get_letter_branding_by_domain(domain):
return LetterBranding.query.filter(
LetterBranding.domain == domain

View File

@@ -5,7 +5,8 @@ from flask import Blueprint, jsonify, request
from app.dao.letter_branding_dao import (
dao_get_all_letter_branding, dao_create_letter_branding,
dao_update_letter_branding
dao_update_letter_branding,
dao_get_letter_branding_by_id
)
from app.errors import register_errors
from app.letter_branding.letter_branding_schema import post_letter_branding_schema
@@ -53,6 +54,13 @@ def get_all_letter_brands():
return jsonify([lb.serialize() for lb in letter_brands])
@letter_branding_blueprint.route('/<uuid:letter_branding_id>', methods=['GET'])
def get_letter_brand_by_id(letter_branding_id):
letter_branding = dao_get_letter_branding_by_id(letter_branding_id)
return jsonify(letter_branding.serialize()), 200
@letter_branding_blueprint.route('', methods=['POST'])
def create_letter_brand():
data = request.get_json()

View File

@@ -1,13 +1,31 @@
import uuid
import pytest
from sqlalchemy.exc import SQLAlchemyError
from app.dao.letter_branding_dao import (
dao_get_letter_branding_by_domain,
dao_get_all_letter_branding,
dao_create_letter_branding,
dao_update_letter_branding
dao_update_letter_branding,
dao_get_letter_branding_by_id
)
from app.models import LetterBranding
from tests.app.db import create_letter_branding
def test_dao_get_letter_branding_by_id(notify_db_session):
letter_branding = create_letter_branding()
result = dao_get_letter_branding_by_id(letter_branding.id)
assert result == letter_branding
def test_dao_get_letter_brand_by_id_raises_exception_if_does_not_exist(notify_db_session):
with pytest.raises(expected_exception=SQLAlchemyError):
dao_get_letter_branding_by_id(uuid.uuid4())
def test_dao_get_letter_branding_by_domain_returns_none_if_no_matching_domains(notify_db_session):
result = dao_get_letter_branding_by_domain(domain="test.domain")
assert not result

View File

@@ -1,5 +1,5 @@
import json
import uuid
from app.models import LetterBranding
from tests import create_authorization_header
@@ -24,6 +24,22 @@ def test_get_all_letter_brands(client, notify_db_session):
assert False
def test_get_letter_branding_by_id(client, notify_db_session):
hm_gov = create_letter_branding()
create_letter_branding(
name='test domain', filename='test-domain', domain='test.domain'
)
response = client.get('/letter-branding/{}'.format(hm_gov.id), headers=[create_authorization_header()])
assert response.status_code == 200
assert json.loads(response.get_data(as_text=True)) == hm_gov.serialize()
def test_get_letter_branding_by_id_returns_404_if_does_not_exist(client, notify_db_session):
response = client.get('/letter-branding/{}'.format(uuid.uuid4()), headers=[create_authorization_header()])
assert response.status_code == 404
def test_create_letter_branding(client, notify_db_session):
form = {
'name': 'super brand',