"""Tests for PhfMechadminTrack model.""" import datetime import pytest from models import phf_mechadmin_track import lambda_exceptions import mysql import test_utils @test_utils.test_schema def test_insert_phf_mechadmin_track_success(): """Test phf mechadmin track can be inserted into db.""" track_id = 'PHF123' track_data = { 'track_id': track_id, 'original_track_id': '123', 'company': 'phonofile', 'length_minute': 1, 'length_seconds': 15, 'public_domain': 'domain' } result = phf_mechadmin_track.insert_phf_mechadmin_track(track_data) assert result with mysql.ar_db_session() as session: track_obj = session.query( phf_mechadmin_track.PhfMechadminTrack).filter_by( id_=result).first() assert track_obj.track_id == track_id @test_utils.test_schema def test_insert_phf_mechadmin_track_track_id_validation_failed(): """Test validation of phf_mechadmin_track track_id field.""" track_id = 'invalid_id' track_data = { 'track_id': track_id, 'original_track_id': '123', 'company': 'phonofile', 'length_minute': 1, 'length_seconds': 15, 'public_domain': 'domain' } with pytest.raises(lambda_exceptions.ModelValidationFailed): phf_mechadmin_track.insert_phf_mechadmin_track(track_data) with mysql.ar_db_session() as session: tracks_obj = session.query( phf_mechadmin_track.PhfMechadminTrack).all() assert not tracks_obj @pytest.mark.parametrize( 'track_id, expected_result', [ ('PHF123', 1), ('non_existing_track_id', 0) ] ) @test_utils.test_schema def test_get_phf_mechadmin_track_by_track_id( track_required_data, track_id, expected_result): """Test get_phf_mechadmin_track_by_track_id function.""" phf_mechadmin_track.insert_phf_mechadmin_track(track_required_data) phf_mechadmin_track_objs = ( phf_mechadmin_track .get_phf_mechadmin_track_by_track_id(track_id)) assert len(phf_mechadmin_track_objs) == expected_result @test_utils.test_schema def test_get_phf_mechadmin_track_dict(track_required_data): """Test PhfMechadminTrack to_dict.""" phf_mechadmin_track.insert_phf_mechadmin_track(track_required_data) test_datetime = datetime.datetime(2018, 2, 8, 13, 21, 11) with mysql.ar_db_session() as session: phf_mechadmin_track_obj = session.query( phf_mechadmin_track.PhfMechadminTrack).first() phf_mechadmin_track_obj.last_modified = test_datetime assert phf_mechadmin_track_obj.to_dict() == { 'id': 1, 'track_id': 'PHF123', 'original_track_id': 123, 'company': 'phonofile', 'track_name': '', 'upc': '', 'isrc': '', 'track_artist': '', 'length_minute': 1, 'length_seconds': 15, 'label': '', 'public_domain': 'domain', 'writer': '', 'publisher': '', 'release_date': '', 'release_date_calculated': '', 'release_title': '', 'release_artist': '', 'original_publishers': None, 'last_modified': test_datetime } @test_utils.test_schema def test_bulk_insert_phf_mechadmin_track_success(): """Test bulk phf mechadmin track can be inserted into db.""" tracks_data = [{ 'track_id': 'PHF1', 'original_track_id': '1', 'company': 'phonofile', 'length_minute': 1, 'length_seconds': 15, 'public_domain': 'domain' }, { 'track_id': 'PHF2', 'original_track_id': '2', 'company': 'phonofile', 'length_minute': 1, 'length_seconds': 15, 'public_domain': 'domain' }] phf_mechadmin_track.bulk_insert_phf_mechadmin_track(tracks_data) with mysql.ar_db_session() as session: tracks = session.query( phf_mechadmin_track.PhfMechadminTrack).all() assert len(tracks) == 2