"""Test file for release_status model.""" import datetime import pytest from product_digital.connectors import mysql from product_digital.models import release_status from tests.testutils import db @pytest.fixture def release_status_data(): """Return a dictionary of release status properties for testing.""" return { 'release_id': 1234, 'status': 'label_processing', 'changed_by': 7123, 'changed_by_type': 'vendor'} @db.test_schema def test_create_release_status(release_status_data): """Test that a new release status record is returned.""" response = release_status.create(release_status_data) status = response.message assert response.status == 201 assert status['release_id'] == release_status_data['release_id'] assert status['status'] == release_status_data['status'] # the date is set by the database, so we can't test for a specific value assert isinstance( datetime.datetime.strptime(status['date'], '%Y-%m-%d'), datetime.date) assert status['changed_by'] == release_status_data['changed_by'] assert status['changed_by_type'] == release_status_data['changed_by_type'] assert 'date' in status @db.test_schema def test_create_release_status_persistence(release_status_data): """Test that a new release status record is created.""" release_status.create(release_status_data) with mysql.db_session() as session: last_record = session.query(release_status.ReleaseStatus).order_by( release_status.ReleaseStatus.release_status_id.desc()).first() assert last_record.release_id == release_status_data.get('release_id') @db.test_schema def test_delete(product_id): """Test delete release status for given product.""" new_release_status = release_status.ReleaseStatus( release_id=product_id, status='label_processing', date=datetime.date(2023, 3, 20), changed_by=7123, changed_by_type='vendor' ) db.seed_models(new_release_status) with mysql.db_session() as session: release_status.delete(product_id, session) result = session.query(release_status.ReleaseStatus).all() assert result == []