"""Tests for store model.""" from oto import error as oto_error import pytest from availability.connectors import sql from availability.models import store from tests.dbutils import db_setup_function as setup_function # noqa from tests.dbutils import db_teardown_function as teardown_function # noqal STORE_ID = 42 STORE_NAME = 'test store' STORE_POLLING_DELAY_DAYS = 7 STORE_DAYS_AFTER_SALES = 7 VALID_STORE_KWARGS = dict( store_id=STORE_ID, name=STORE_NAME, polling_delay_days=STORE_POLLING_DELAY_DAYS, poll_days_after_sales=STORE_DAYS_AFTER_SALES ) def _get_store_kwargs(update_dict=None): result = VALID_STORE_KWARGS.copy() if update_dict is not None: result.update(update_dict) return result @pytest.mark.parametrize( 'kwargs', [ {}, dict( store_id=STORE_ID+1, name='foo', polling_delay_days=STORE_POLLING_DELAY_DAYS*2, poll_days_after_sales=STORE_DAYS_AFTER_SALES*2 ) ] ) def test_store_as_dict(kwargs): """Test store dictionary representation.""" store_kwargs = _get_store_kwargs(kwargs) store_instance = store.Store(**store_kwargs) assert store_instance assert store_instance.as_dict() == store_kwargs def test_get_store_by_id_existing(): """Test get_store_by_id for existing records.""" with sql.session_scope() as session: kwargs = _get_store_kwargs() session.add(store.Store(**kwargs)) select_result = store.get_store_by_id(STORE_ID) assert select_result.status == 200 assert select_result.message == kwargs def test_get_store_by_id_non_existing(): """Test get_store_by_id for non-existing records.""" with sql.session_scope() as session: kwargs = _get_store_kwargs() session.add(store.Store(**kwargs)) select_result = store.get_store_by_id(STORE_ID + 1) assert select_result.errors assert select_result.status == 404 assert select_result.errors['code'] == oto_error.ERROR_CODE_NOT_FOUND