From 443691402f986a76530577fbf84c9270f12e128a Mon Sep 17 00:00:00 2001 From: Martyn Inglis Date: Mon, 22 Feb 2016 09:46:16 +0000 Subject: [PATCH] Slight tiny up of templates_dao - 1 method per get query - logic around create/update removed --- app/dao/services_dao.py | 2 - app/dao/templates_dao.py | 23 ++++- tests/app/dao/test_templates_dao.py | 139 +++++++++++++++++++++------- 3 files changed, 125 insertions(+), 39 deletions(-) diff --git a/app/dao/services_dao.py b/app/dao/services_dao.py index 2df2ad173..c9a714d51 100644 --- a/app/dao/services_dao.py +++ b/app/dao/services_dao.py @@ -1,5 +1,3 @@ -import json -from . import DAOException from app import db from app.models import Service from sqlalchemy import asc diff --git a/app/dao/templates_dao.py b/app/dao/templates_dao.py index d6557f29d..3085c412b 100644 --- a/app/dao/templates_dao.py +++ b/app/dao/templates_dao.py @@ -1,9 +1,6 @@ -import json -from datetime import datetime -from sqlalchemy.orm import load_only -from . import DAOException from app import db from app.models import (Template, Service) +from sqlalchemy import asc def save_model_template(template, update_dict=None): @@ -32,3 +29,21 @@ def get_model_templates(template_id=None, service_id=None): elif service_id: return Template.query.filter_by(service=Service.query.get(service_id)).all() return Template.query.all() + + +def dao_create_template(template): + db.session.add(template) + db.session.commit() + + +def dao_update_template(template): + db.session.add(template) + db.session.commit() + + +def dao_get_template_by_id_and_service_id(template_id, service_id): + return Template.query.filter_by(id=template_id, service_id=service_id).first() + + +def dao_get_all_templates_for_service(service_id): + return Template.query.filter_by(service=Service.query.get(service_id)).order_by(asc(Template.created_at)).all() diff --git a/tests/app/dao/test_templates_dao.py b/tests/app/dao/test_templates_dao.py index bf2dc1993..14a9faffc 100644 --- a/tests/app/dao/test_templates_dao.py +++ b/tests/app/dao/test_templates_dao.py @@ -1,52 +1,125 @@ -import pytest from app.dao.templates_dao import ( - save_model_template, get_model_templates, delete_model_template) + dao_create_template, + dao_get_template_by_id_and_service_id, + dao_get_all_templates_for_service, + dao_update_template +) from tests.app.conftest import sample_template as create_sample_template from app.models import Template -def test_create_template(notify_api, notify_db, notify_db_session, sample_service): - assert Template.query.count() == 0 - template_name = 'Sample Template' +def test_create_template(sample_service): data = { - 'name': template_name, + 'name': 'Sample Template', 'template_type': "sms", 'content': "Template content", - 'service': sample_service} + 'service': sample_service + } template = Template(**data) - save_model_template(template) + dao_create_template(template) + assert Template.query.count() == 1 - assert Template.query.first().name == template_name - assert Template.query.first().id == template.id + assert len(dao_get_all_templates_for_service(sample_service.id)) == 1 + assert dao_get_all_templates_for_service(sample_service.id)[0].name == 'Sample Template' -def test_get_Templates(notify_api, notify_db, notify_db_session, sample_service): - sample_template = create_sample_template(notify_db, - notify_db_session, - service=sample_service) - assert Template.query.count() == 1 - assert len(get_model_templates()) == 1 - template_name = "Another Template" - sample_template = create_sample_template(notify_db, - notify_db_session, - template_name=template_name, - service=sample_service) +def test_update_template(sample_service): + data = { + 'name': 'Sample Template', + 'template_type': "sms", + 'content': "Template content", + 'service': sample_service + } + template = Template(**data) + dao_create_template(template) + created = dao_get_all_templates_for_service(sample_service.id)[0] + assert created.name == 'Sample Template' + + created.name = 'new name' + dao_update_template(created) + assert dao_get_all_templates_for_service(sample_service.id)[0].name == 'new name' + + +def test_get_all_templates_for_service(service_factory): + service_1 = service_factory.get('service 1') + service_2 = service_factory.get('service 2') + assert Template.query.count() == 2 - assert len(get_model_templates()) == 2 + assert len(dao_get_all_templates_for_service(service_1.id)) == 1 + assert len(dao_get_all_templates_for_service(service_2.id)) == 1 + + template_1 = Template( + name='Sample Template 1', + template_type="sms", + content="Template content", + service=service_1 + ) + template_2 = Template( + name='Sample Template 2', + template_type="sms", + content="Template content", + service=service_1 + ) + template_3 = Template( + name='Sample Template 3', + template_type="sms", + content="Template content", + service=service_2 + ) + dao_create_template(template_1) + dao_create_template(template_2) + dao_create_template(template_3) + + assert Template.query.count() == 5 + assert len(dao_get_all_templates_for_service(service_1.id)) == 3 + assert len(dao_get_all_templates_for_service(service_2.id)) == 2 -def test_get_user_Template(notify_api, notify_db, notify_db_session, sample_service): +def test_get_all_templates_for_service_in_created_order(sample_service): + template_1 = Template( + name='Sample Template 1', + template_type="sms", + content="Template content", + service=sample_service + ) + template_2 = Template( + name='Sample Template 2', + template_type="sms", + content="Template content", + service=sample_service + ) + template_3 = Template( + name='Sample Template 3', + template_type="sms", + content="Template content", + service=sample_service + ) + dao_create_template(template_1) + dao_create_template(template_2) + dao_create_template(template_3) + + assert Template.query.count() == 3 + assert dao_get_all_templates_for_service(sample_service.id)[0].name == 'Sample Template 1' + assert dao_get_all_templates_for_service(sample_service.id)[1].name == 'Sample Template 2' + assert dao_get_all_templates_for_service(sample_service.id)[2].name == 'Sample Template 3' + + +def test_get_all_returns_empty_list_if_no_templates(sample_service): assert Template.query.count() == 0 - template_name = "Random Template" - sample_template = create_sample_template(notify_db, - notify_db_session, - template_name=template_name, - service=sample_service) - assert get_model_templates(template_id=sample_template.id).name == template_name + assert len(dao_get_all_templates_for_service(sample_service.id)) == 0 + + +def test_get_template_by_id_and_service(notify_db, notify_db_session, sample_service): + sample_template = create_sample_template( + notify_db, + notify_db_session, + template_name='Test Template', + service=sample_service) + assert dao_get_template_by_id_and_service_id( + template_id=sample_template.id, + service_id=sample_service.id).name == 'Test Template' assert Template.query.count() == 1 -def test_delete_template(notify_api, notify_db, notify_db_session, sample_template): - assert Template.query.count() == 1 - delete_model_template(sample_template) - assert Template.query.count() == 0 +def test_get_template_by_id_and_service_returns_none_if_no_template(sample_service): + assert not dao_get_template_by_id_and_service_id(template_id=999, service_id=sample_service.id)