"""Tests for ows-salessheets template details model.""" import datetime import pytest from salessheets.connectors import mysql from salessheets.constants import errors from salessheets.models import template_details @pytest.fixture def template_details_data(): """Fixture with templates.""" return { 'name': 'us', 'display_name': 'United States localized template', 'store_id': 1, 'email': 'salesUSA@theorchard.com', 'street': 'East 4th Street', 'apartment': '23', 'city': 'New York', 'state': 'NY', 'country': 'United States', 'postal_code': '10003', 'telephone': '888-888-888'} @pytest.fixture def template_details_sales_region_data(): """I haz template_details_sales_region rows.""" return [ template_details.TemplateDetailsSalesRegion( tdsr_id=1, template_details_id=1, region_id=3, timestamp_created=datetime.datetime(2018, 3, 16, 16, 12, 39)), template_details.TemplateDetailsSalesRegion( tdsr_id=2, template_details_id=2, region_id=1, timestamp_created=datetime.datetime(2018, 3, 16, 16, 12, 24)), template_details.TemplateDetailsSalesRegion( tdsr_id=3, template_details_id=3, region_id=2, timestamp_created=datetime.datetime(2018, 3, 16, 16, 12, 12)), template_details.TemplateDetailsSalesRegion( tdsr_id=4, template_details_id=4, region_id=8, timestamp_created=datetime.datetime(2018, 3, 16, 16, 12, 39)), template_details.TemplateDetailsSalesRegion( tdsr_id=5, template_details_id=5, region_id=1000, timestamp_created=datetime.datetime(2018, 3, 16, 16, 12, 5)), template_details.TemplateDetailsSalesRegion( tdsr_id=6, template_details_id=5, region_id=1001, timestamp_created=datetime.datetime(2018, 3, 16, 16, 22, 34)), template_details.TemplateDetailsSalesRegion( tdsr_id=7, template_details_id=5, region_id=1002, timestamp_created=datetime.datetime(2018, 3, 16, 16, 25, 11)) ] def test_get_dict_from_job_object(template_details_data): """Test getting dict from TemplateDetail object data.""" expected_result = { 'localized_template_type_id': None, 'name': template_details_data['name'], 'display_name': template_details_data['display_name'], 'store_id': template_details_data['store_id'], 'email': template_details_data['email'], 'street': template_details_data['street'], 'apartment': template_details_data['apartment'], 'city': template_details_data['city'], 'state': template_details_data['state'], 'country': template_details_data['country'], 'postal_code': template_details_data['postal_code'], 'telephone': template_details_data['telephone']} template = template_details.TemplateDetail( name=template_details_data['name'], display_name=template_details_data['display_name'], store_id=template_details_data['store_id'], email=template_details_data['email'], street=template_details_data['street'], apartment=template_details_data['apartment'], city=template_details_data['city'], state=template_details_data['state'], country=template_details_data['country'], postal_code=template_details_data['postal_code'], telephone=template_details_data['telephone']) template_dict = template.as_dict() assert template_dict == expected_result def test_get_by_template_type_id_success( test_database, template_details_data, template_details_sales_region_data): """Test fetching localized template type by id for successful result.""" expected_result = { 'localized_template_type_id': 1, 'name': template_details_data['name'], 'display_name': template_details_data['display_name'], 'store_id': template_details_data['store_id'], 'email': template_details_data['email'], 'street': template_details_data['street'], 'apartment': template_details_data['apartment'], 'city': template_details_data['city'], 'state': template_details_data['state'], 'country': template_details_data['country'], 'postal_code': template_details_data['postal_code'], 'telephone': template_details_data['telephone'], 'regions': [3] } template_detail_row = template_details.TemplateDetail( name=template_details_data['name'], display_name=template_details_data['display_name'], store_id=template_details_data['store_id'], email=template_details_data['email'], street=template_details_data['street'], apartment=template_details_data['apartment'], city=template_details_data['city'], state=template_details_data['state'], country=template_details_data['country'], postal_code=template_details_data['postal_code'], telephone=template_details_data['telephone']) with mysql.salessheets_history_session_scope() as session: session.add(template_detail_row) session.add_all(template_details_sales_region_data) result = template_details.get_by_template_type_id(1) assert result.message == expected_result def test_get_by_template_type_id_not_found(test_database): """Test fetching localized template type by id no such template.""" template_id = 1 result = template_details.get_by_template_type_id(template_id) assert not result assert result.errors['message'] == ( errors.ERROR_MESSAGE_TEMPLATE_TYPE_DOES_NOT_EXIST.format( id=template_id)) def test_get_by_template_type_id_internal_error(): """Test fetching localized template type by id can't connect to db.""" template_id = 1 result = template_details.get_by_template_type_id(template_id) assert not result assert result.status == 500