"""Tests for transcription handler.""" from io import BytesIO import json from docx import Document from podcast.logic import email def test_update_transcription(no_user_fixture_client): """Test update transcription handler.""" no_user_fixture_client.put('/episode/1/transcript', json={'transcript': {'transcripts': [{ 'transcript': 'wow' }]}}) email._send_sqs.assert_called def test_get_transcription_doc(fixture_client, db_session): """Test get transcription word doc handler.""" fixture_client.put('/episode/1/transcript', json={ 'transcript': [{ 'speaker_label': 'spk_0', 'items': [{ 'type': 'pronunciation', 'end_time': '1.0', 'start_time': '0.2', 'content': 'wow' }] }] }) result = fixture_client.get('/episode/1/transcript/file') doc = Document(BytesIO(result.data)) assert doc.paragraphs[0].text == 'spk_0: wow' def test_get_transcription(fixture_client, db_session): """Test get transcription handler.""" result = fixture_client.get('/episode/1/transcript') assert json.loads(result.data) == { 'id': 1, 'created_by': 1, 'created_date': '2019-01-01T00:00:00.000Z', 'episode_id': 1, 'is_transcript_processing': False, 'transcript': None, 'updated_by': 2, 'updated_date': '2019-01-01T00:00:00.000Z' } def test_do_transcriptions_for_episodes_exist(fixture_client, db_session): """Test get transcription handler.""" items = [{'episode_id': 1, 'transcription': True}] result = fixture_client.get('/check-transcripts-by-episode-ids?ids=1') assert json.loads(result.data) == {'items': items}