from datetime import datetime, timedelta, timezone import pytest from dapd_db_schema.schemas.workflow import Playlist pytestmark = [pytest.mark.integration] def test_create_playlist(db, seed, playlist): results = db.workflow_session.query(Playlist).all() assert len(results) == 1 assert not results[0].is_personalized assert not results[0].is_removed def test_update_playlist(db, seed, playlist): now = datetime.now(tz=timezone.utc) expired_at = now + timedelta(minutes=playlist.ttl_priority.ttl.ttl) is_personalized_expired_at = now + timedelta(days=1) is_removed = True is_removed_expired_at = now + timedelta(days=2) snapshot_id = 'x123' track_snapshot_id = 'xabc' assert playlist.is_removed is not is_removed assert playlist.is_removed_expired_at != is_removed_expired_at playlist.expired_at = expired_at playlist.snapshot_id = snapshot_id playlist.tracks_snapshot_id = track_snapshot_id playlist.is_removed = is_removed playlist.is_removed_expired_at = is_removed_expired_at playlist.is_personalized = True playlist.is_personalized_expired_at = is_personalized_expired_at db.workflow_session.add(playlist) db.workflow_session.flush() playlist_id = playlist.id playlist_data_source_id = playlist.data_source_id db.workflow_session.expire_all() playlist_item = db.workflow_session.query(Playlist) \ .filter( Playlist.id == playlist_id, Playlist.data_source_id == playlist_data_source_id) \ .one() assert playlist_item.snapshot_id == snapshot_id assert playlist_item.expired_at == expired_at assert playlist_item.is_removed is is_removed assert playlist_item.is_removed_expired_at == is_removed_expired_at assert playlist_item.is_personalized assert playlist_item.is_personalized_expired_at == is_personalized_expired_at assert playlist_item.tracks_snapshot_id == track_snapshot_id