"""Test Release Status Model.""" import time from ows_product_physical.connector.mysql import db_session from ows_product_physical.models import release_status def _get_release_status_by_release_id(release_id, session): """Helper to get dict-ified release_status object.""" return session.query(release_status.ReleaseStatus) \ .filter(release_status.ReleaseStatus.release_id == release_id) \ .one().to_dict() def test_create_release_status_defaults(db_fixture): """Test successful creation of a release status with default values.""" release_id = 1 values = { 'release_id': release_id, 'changed_by': 7123 } with db_session() as session: release_status.create(values, session) new_status = _get_release_status_by_release_id(release_id, session) assert new_status == { 'release_status_id': 1, 'release_id': 1, 'changed_by': 7123, 'changed_by_type': 'oa', 'status': 'orchard_processing', 'date': time.strftime('%Y-%m-%d') } def test_create_release_status_user_values(db_fixture): """Test successful creation of a release status.""" release_id = 1 values = { 'release_id': release_id, 'changed_by': 7123, 'changed_by_type': 'vendor', 'status': 'label_processing' } with db_session() as session: release_status.create(values, session) new_status = _get_release_status_by_release_id(release_id, session) assert new_status == { 'release_status_id': 1, 'release_id': 1, 'changed_by': 7123, 'changed_by_type': 'vendor', 'status': 'label_processing', 'date': time.strftime('%Y-%m-%d') } def test_delete_all_release_statuses(db_fixture): """Test deletion of release status.""" release_id = 1 first_status = {'release_id': release_id, 'changed_by': 7123} second_status = { 'release_id': release_id, 'changed_by': 7123, 'status': 'in_content'} with db_session() as session: release_status.create(first_status, session) release_status.create(second_status, session) release_status.delete_all(release_id, session) result = session.query(release_status.ReleaseStatus) \ .filter(release_status.ReleaseStatus.release_id == release_id) \ .all() assert result == []