from datetime import datetime, timedelta, timezone import pytest from dapd_db_schema.schemas.workflow import TTL, DataSource, Priority, Storefront, TTLPriority pytestmark = [pytest.mark.integration] def test_add_data_source(db): item = DataSource(name='apple_music') db.workflow_session.add(item) item = DataSource(name='spotify') db.workflow_session.add(item) db.workflow_session.flush() db.workflow_session.expire_all() results = db.workflow_session.query(DataSource).all() assert len(results) == 2 def test_add_ttl(db): now = datetime.now(tz=timezone.utc) item = TTL(name='2_MINUTES', ttl=2, label='often', created_at=now) db.workflow_session.add(item) item = TTL(name='3_MINUTES', ttl=3, label='more often', created_at=now) db.workflow_session.add(item) db.workflow_session.flush() db.workflow_session.expire_all() results = db.workflow_session.query(TTL).all() assert len(results) == 2 def test_add_priority(db): now = datetime.now(tz=timezone.utc) item = Priority(name='LOW', priority=10, label='low', created_at=now) db.workflow_session.add(item) item = Priority(name='HIGH', priority=2, label='high', created_at=now) db.workflow_session.add(item) db.workflow_session.flush() db.workflow_session.expire_all() results = db.workflow_session.query(Priority).all() assert len(results) == 2 def test_add_storefront(db): now = datetime.now(tz=timezone.utc) ds_item = DataSource(name='spotify') db.workflow_session.add(ds_item) ttl_item = TTL(name='2_MINUTES', ttl=2, label='often', created_at=now) db.workflow_session.add(ttl_item) db.workflow_session.flush() sf_item = Storefront(id='us', name='us_US', created_at=now, expired_at=now + timedelta(days=1)) sf_item.ttl = ttl_item sf_item.data_source = ds_item db.workflow_session.add(sf_item) db.workflow_session.flush() db.workflow_session.expire_all() results = db.workflow_session.query(Storefront).all() assert len(results) == 1 def test_add_ttl_priority(db): now = datetime.now(tz=timezone.utc) # adding priority priority_item = Priority(name='HIGH', priority=2, label='high', created_at=now) db.workflow_session.add(priority_item) db.workflow_session.flush() # adding ttl ttl_item = TTL(name='2_MINUTES', ttl=2, label='often', created_at=now) db.workflow_session.add(ttl_item) db.workflow_session.flush() # mapping them together ttl_priority_item = TTLPriority() ttl_priority_item.ttl = ttl_item ttl_priority_item.priority = priority_item db.workflow_session.add(ttl_priority_item) db.workflow_session.flush() db.workflow_session.expire_all() # record exists results = db.workflow_session.query(TTLPriority).all() assert len(results) == 1 db.workflow_session.expire_all() # find priority by ttl result = db.workflow_session.query(TTLPriority).filter(TTLPriority.ttl_id == ttl_item.id).one() assert result.priority == priority_item db.workflow_session.expire_all() result = db.workflow_session.query(TTLPriority).filter(TTLPriority.priority_id == priority_item.id).one() assert result.ttl == ttl_item