"""Test file for template details model.""" from oto import status import pytest from salessheets.models import template_details from tests.factories import template_details as template_factory from tests.test_utils import db @pytest.fixture def existing_template(): """Create a template details to use when testing updates.""" return template_factory.TemplateDetailsFactory.build() @db.test_schema def test_get_template_by_id_exist(existing_template): """Test get template returns template if it exists.""" db.seed_ss_models([existing_template]) data = template_details.get_template_by_id(existing_template.template_id) assert data.message == { 'template_name': existing_template.display_name, 'template_id': existing_template.template_id, 'is_default': False, } @db.test_schema def test_get_template_by_id_missed(): """Test get template fails if template not exists.""" data = template_details.get_template_by_id(42) assert not data @db.test_schema def test_get_default_template_exist(existing_template): """Test get default template returns correct result.""" default_template = template_factory.TemplateDetailsFactory( is_default=True) db.seed_ss_models([existing_template, default_template]) response = template_details.get_default_template() assert response.message == { 'template_name': default_template.display_name, 'template_id': default_template.template_id, 'is_default': True, } @db.test_schema def test_get_default_template_missed(existing_template): """Test get default template returns error when template missed.""" db.seed_ss_models([existing_template]) response = template_details.get_default_template() assert not response.message @db.test_schema def test_get_all_templates_not_found(): """Test get all templates with empty DB.""" response = template_details.get_all_templates() assert response.status == status.NOT_FOUND @db.test_schema def test_get_all_templates_success(existing_template): """Test get all templates returns data.""" default_template = template_factory.TemplateDetailsFactory( is_default=True) db.seed_ss_models([existing_template, default_template]) response = template_details.get_all_templates() assert response assert len(response.message) == 2 assert response.message[0]['template_id'] == existing_template.template_id assert response.message[1]['template_id'] == default_template.template_id @db.test_schema def test_get_all_templates_pagination(existing_template): """Test get all templates pagination works fine.""" default_template = template_factory.TemplateDetailsFactory( is_default=True) db.seed_ss_models([existing_template, default_template]) response = template_details.get_all_templates(page_limit=1) assert response assert len(response.message) == 1 assert response.message[0]['template_id'] == existing_template.template_id response = template_details.get_all_templates(page_limit=1, page_offset=1) assert response assert len(response.message) == 1 assert response.message[0]['template_id'] == default_template.template_id