"""Integration tests for waveform peaks stored inline in audio_versions.""" import pytest from tests.factories import create_audio_version, create_band, create_member, create_song @pytest.mark.asyncio @pytest.mark.integration async def test_audio_version_stores_waveform_peaks(db_session, current_member): """AudioVersion can store waveform_peaks and waveform_peaks_mini JSONB data.""" from rehearsalhub.repositories.audio_version import AudioVersionRepository band = await create_band(db_session, creator_id=current_member.id) song = await create_song(db_session, band_id=band.id, creator_id=current_member.id) version = await create_audio_version(db_session, song_id=song.id) peaks_500 = [float(i) / 500 for i in range(500)] peaks_100 = [float(i) / 100 for i in range(100)] repo = AudioVersionRepository(db_session) updated = await repo.update( version, waveform_peaks=peaks_500, waveform_peaks_mini=peaks_100, ) await db_session.commit() fetched = await repo.get_by_id(updated.id) assert fetched is not None assert fetched.waveform_peaks is not None assert len(fetched.waveform_peaks) == 500 assert fetched.waveform_peaks_mini is not None assert len(fetched.waveform_peaks_mini) == 100 assert fetched.waveform_peaks[0] == pytest.approx(0.0) assert fetched.waveform_peaks[1] == pytest.approx(1 / 500) @pytest.mark.asyncio @pytest.mark.integration async def test_audio_version_peaks_default_null(db_session, current_member): """waveform_peaks and waveform_peaks_mini are null by default.""" band = await create_band(db_session, creator_id=current_member.id) song = await create_song(db_session, band_id=band.id, creator_id=current_member.id) version = await create_audio_version(db_session, song_id=song.id) await db_session.commit() assert version.waveform_peaks is None assert version.waveform_peaks_mini is None