"""Test for Audio Attribute Model.""" from backend.connectors import mysql from backend.models.audio_attribute_query import AudioAttributeQuery from tests.testutils import db @db.test_schema def test_get_audio_attributes(): """Test get audio attributes.""" with mysql.db_session() as session: attributes = AudioAttributeQuery.get_audio_attributes(session=session) assert len(attributes.message['items']) == 10 @db.test_schema def test_get_track_audio_attributes(): """Test get track audio attributes.""" with mysql.db_session() as session: attributes = AudioAttributeQuery.get_track_audio_attributes( tuid=182, session=session) assert attributes.message['items'] == [ {'audio_attribute_id': 1, 'description': 'N/A', 'track_audio_attribute_id': 1}, {'audio_attribute_id': 2, 'description': 'Soundalike', 'track_audio_attribute_id': 2}, {'audio_attribute_id': 3, 'description': 'Classical - Contemporary', 'track_audio_attribute_id': 3}, ] @db.test_schema def test_get_track_audio_attributes_edits(): """Test get track audio attributes edits.""" with mysql.db_session() as session: attributes = AudioAttributeQuery.get_track_audio_attributes_edits( tuid=182, session=session) assert attributes.message['items'] == [ {'audio_attribute_id': 1, 'description': 'N/A', 'track_audio_attribute_id': 1}, {'audio_attribute_id': 2, 'description': 'Soundalike', 'track_audio_attribute_id': 2}, {'audio_attribute_id': 3, 'description': 'Classical - Contemporary', 'track_audio_attribute_id': 3}, ] @db.test_schema def test_get_track_suggested_audio_attributes(): """Test get track suggested audio attributes.""" with mysql.db_session() as session: attributes = AudioAttributeQuery.get_track_suggested_audio_attributes( tuid=1, session=session) assert attributes.message['items'] == [ {'audio_attribute_id': 6, 'description': 'Spoken Word', 'track_audio_attribute_id': 0, 'reasons': [{'type': 'spoken_word_check'}]} ] @db.test_schema def test_get_track_suggested_audio_attributes_keyword_match(): """Test keyword match fires for track name and artist name.""" with mysql.db_session() as session: attributes = AudioAttributeQuery.get_track_suggested_audio_attributes( tuid=38, session=session) assert attributes.message['items'] == [ {'audio_attribute_id': 4, 'description': 'Classical - Traditional', 'track_audio_attribute_id': 0, 'reasons': [ {'type': 'keyword_match', 'keyword': 'Vivaldi', 'on': 'track_name'}, {'type': 'keyword_match', 'keyword': 'Vivaldi', 'on': 'artist_name'}, ]}, {'audio_attribute_id': 9, 'description': 'Remaster', 'track_audio_attribute_id': 0, 'reasons': [ {'type': 'keyword_match', 'keyword': 'remastered', 'on': 'track_name'}, ]}, ] @db.test_schema def test_get_track_suggested_audio_attributes_classical_traditional(): """Test that Classical-Traditional is suggested for a Baroque subgenre.""" with mysql.db_session() as session: attributes = AudioAttributeQuery.get_track_suggested_audio_attributes( tuid=40, session=session) assert attributes.message['items'] == [ {'audio_attribute_id': 4, 'description': 'Classical - Traditional', 'track_audio_attribute_id': 0, 'reasons': [{'type': 'classical_traditional_check', 'subgenre_id': 267}]} ]