"""Test queries.""" from vector_utils import queries from pymysql.err import OperationalError def test_get_job(seed_all_tables_with_all_seeds): """Test get_job.""" job_data = queries.get_job(1) expected = ['encoding_queue_detail_id', 'encoding_queue_id', 'upc', 'status', 'encoding_started', 'encoding_ended', 'delivery_started', 'delivery_ended', 'error_log', 'dms_master_master_id', 'encoding_server', 'delivery_server', 'updated_oa', 'last_updated', 'package_size', 'cd', 'track_id', 'clip_number'] returned = job_data.keys() assert len(expected) == len(returned) \ and sorted(expected) == sorted(returned) def test_get_job_with_conn_info(seed_all_tables_with_all_seeds, dd_conn_info_valid): """Test get_job.""" job_data = queries.get_job(1, dd_conn_info_valid) expected = ['encoding_queue_detail_id', 'encoding_queue_id', 'upc', 'status', 'encoding_started', 'encoding_ended', 'delivery_started', 'delivery_ended', 'error_log', 'dms_master_master_id', 'encoding_server', 'delivery_server', 'updated_oa', 'last_updated', 'package_size', 'cd', 'track_id', 'clip_number'] returned = job_data.keys() assert len(expected) == len(returned) \ and sorted(expected) == sorted(returned) def test_get_job_with_invalid_conn_info( seed_all_tables_with_all_seeds, dd_conn_info_invalid): """Test get_job.""" try: queries.get_job(1, dd_conn_info_invalid) except OperationalError as e: error = e assert error def test_set_job_status(seed_all_tables_with_all_seeds): """Test set_job_status.""" r = queries.set_job_to_queued_for_delivery(1) assert r == 1 assert queries.get_job(1)['status'] == 'queued_for_delivery' def test_set_job_status_with_conn_info( seed_all_tables_with_all_seeds, dd_conn_info_valid): """Test set_job_status.""" r = queries.set_job_to_queued_for_delivery(1, dd_conn_info_valid) assert r == 1 assert queries.get_job(1)['status'] == 'queued_for_delivery' def test_set_job_status_error(seed_all_tables_with_all_seeds): """Test set_job_status.""" r = queries.set_job_status( 'ready_to_deliver', 'queued_for_delivery', 1, error_log='An error occurred') assert r == 1 job_status = queries.get_job(1) assert job_status['status'] == 'queued_for_delivery' assert job_status['error_log'] == 'An error occurred' def test_get_connection_limit(seed_all_tables_with_all_seeds): """Test get_connection_limit.""" queries.set_job_to_queued_for_delivery(1) r = queries.get_connection_limit(1, 'release') assert r['connection_limit'] == 10 assert r['current_connections'] == 1 def test_get_connection_limit_with_conn_info( seed_all_tables_with_all_seeds, dd_conn_info_valid): """Test get_connection_limit.""" queries.set_job_to_queued_for_delivery(1, dd_conn_info_valid) r = queries.get_connection_limit(1, 'release') assert r['connection_limit'] == 10 assert r['current_connections'] == 1 def test_get_dms_delivery_spec(seed_all_tables_with_all_seeds): """Test get_dms_delivery_spec query.""" r = queries.get_dms_delivery_spec(1, 'release') expected = { 'num_per_batch': 100, 'domain_name': None, 'user_name': None, 'password': None, 'port': None, 'confirm_manifest_delivery': 'Y', 'authenticate_type': 'password', 'remote_initial_dir': None, 'connection_type': None, 'batch_delivery': 'N', 'aws_s3_region': 'us-east-1', 'md5_fingerprint': None, 'batch_foldername': None, 'manifest_filename': None, 'delivery_complete_file': None, 'manifest_format': None, 'ftp_pasv_mode': 'N', 'private_key_file': 'id_rsa', 'priority': 1, 'mixed_album': 'combined', 'known_host': None, 'max_num_batches': 5, 'connection_limit': 10, 'verify_delivery': 'Y', 'encoding': 'Y', 'delivery': 'Y', 'delivery_spec_id': 1, 'cloud_domain_name': None, 'cloud_user_name': None, 'cloud_password': None, 'udp_port': None, 'cloud_protocol': None, 'gcs_config_file': None, 'file_encryption': 0, 'file_encryption_passphrase': None, 'pubkey_passphrase': None, 'aspera_token': None, 'aws_s3_signature_version': 's3', } assert r == expected def test_get_dms_delivery_specs(seed_all_tables_with_all_seeds): """Test get_dms_delivery_specs query.""" r = queries.get_dms_delivery_specs(1, 'release') expected = [{ 'num_per_batch': 100, 'domain_name': None, 'user_name': None, 'password': None, 'port': None, 'confirm_manifest_delivery': 'Y', 'authenticate_type': 'password', 'remote_initial_dir': None, 'connection_type': None, 'batch_delivery': 'N', 'aws_s3_region': 'us-east-1', 'md5_fingerprint': None, 'batch_foldername': None, 'manifest_filename': None, 'delivery_complete_file': None, 'manifest_format': None, 'ftp_pasv_mode': 'N', 'private_key_file': 'id_rsa', 'priority': 1, 'mixed_album': 'combined', 'known_host': None, 'max_num_batches': 5, 'connection_limit': 10, 'verify_delivery': 'Y', 'encoding': 'Y', 'delivery': 'Y', 'delivery_spec_id': 1, 'cloud_domain_name': None, 'cloud_user_name': None, 'cloud_password': None, 'udp_port': None, 'cloud_protocol': None, 'gcs_config_file': None, 'file_encryption': 0, 'file_encryption_passphrase': None, 'pubkey_passphrase': None, 'aspera_token': None, 'aws_s3_signature_version': 's3', }] assert r == expected def test_get_dms_delivery_spec_with_conn_info( seed_all_tables_with_all_seeds, dd_conn_info_valid): """Test get_dms_delivery_spec query.""" r = queries.get_dms_delivery_spec(1, 'release', dd_conn_info_valid) expected = { 'num_per_batch': 100, 'domain_name': None, 'user_name': None, 'password': None, 'port': None, 'confirm_manifest_delivery': 'Y', 'authenticate_type': 'password', 'remote_initial_dir': None, 'connection_type': None, 'batch_delivery': 'N', 'aws_s3_region': 'us-east-1', 'md5_fingerprint': None, 'batch_foldername': None, 'manifest_filename': None, 'delivery_complete_file': None, 'manifest_format': None, 'ftp_pasv_mode': 'N', 'private_key_file': 'id_rsa', 'priority': 1, 'mixed_album': 'combined', 'known_host': None, 'max_num_batches': 5, 'connection_limit': 10, 'verify_delivery': 'Y', 'encoding': 'Y', 'delivery': 'Y', 'delivery_spec_id': 1, 'cloud_domain_name': None, 'cloud_user_name': None, 'cloud_password': None, 'udp_port': None, 'cloud_protocol': None, 'gcs_config_file': None, 'file_encryption': 0, 'file_encryption_passphrase': None, 'pubkey_passphrase': None, 'aspera_token': None, 'aws_s3_signature_version': 's3', } assert r == expected def test_get_jobs_for_batch_delivery(seed_batch_delivery_jobs): """Test get_jobs_for_batch_delivery.""" r = queries.get_jobs_for_batch_delivery(1, [18]) assert r == [{ 'encoding_queue_detail_id': 1, 'priority': 1, 'dms_master_master_id': 1, 'dms_priority': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 1 }] def test_get_jobs_for_batch_delivery_with_conn_info(seed_batch_delivery_jobs, dd_conn_info_valid): """Test get_jobs_for_batch_delivery with valid conn_info passed.""" r = queries.get_jobs_for_batch_delivery( 1, [18], dd_conn_info_valid) assert r == [{ 'encoding_queue_detail_id': 1, 'priority': 1, 'dms_master_master_id': 1, 'dms_priority': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 1 }] def test_get_jobs_for_batch_delivery_no_results( seed_all_tables_with_all_seeds): """Test get_jobs_for_batch_delivery with no results returned.""" r = queries.get_jobs_for_batch_delivery(1, [18]) assert r == () def test_get_jobs_for_nonbatch_delivery(seed_nonbatch_delivery_jobs): """Test get_jobs_for_nonbatch_delivery.""" r = queries.get_jobs_for_nonbatch_delivery(1, 100, [18]) assert r == [{ 'encoding_queue_detail_id': 1, 'priority': 1, 'dms_master_master_id': 1, 'dms_priority': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 0 }] def test_get_jobs_for_nonbatch_delivery_with_conn_info(seed_nonbatch_delivery_jobs, dd_conn_info_valid): """Test get_jobs_for_nonbatch_delivery with valid conn_info passed.""" r = queries.get_jobs_for_nonbatch_delivery( 1, 100, [18], dd_conn_info_valid) assert r == [{ 'encoding_queue_detail_id': 1, 'priority': 1, 'dms_master_master_id': 1, 'dms_priority': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 0 }] def test_get_jobs_for_nonbatch_delivery_no_results( seed_all_tables_with_all_seeds): """Test get_jobs_for_nonbatch_delivery with no results.""" r = queries.get_jobs_for_nonbatch_delivery(1, 100, [18]) assert r == () def test_get_jobs_for_batch_or_nonbatch_delivery_nonbatch(seed_nonbatch_delivery_jobs): """Test get_jobs_for_batch_or_nonbatch_delivery for non-batch jobs.""" r = queries.get_jobs_for_delivery(1, 100, [18], 0) assert r == [{ 'encoding_queue_detail_id': 1, 'priority': 1, 'dms_master_master_id': 1, 'dms_priority': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 0 }] def test_get_jobs_for_batch_or_nonbatch_delivery_batch(seed_batch_delivery_jobs): """Test get_jobs_for_batch_or_nonbatch_delivery for batch jobs.""" r = queries.get_jobs_for_delivery(1, 100, [18], 1) assert r == [{ 'encoding_queue_detail_id': 1, 'priority': 1, 'dms_master_master_id': 1, 'dms_priority': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 1 }] def test_get_jobs_for_batch_or_nonbatch_delivery_with_conn_info(seed_nonbatch_delivery_jobs, dd_conn_info_valid): """Test get_jobs_for_batch_or_nonbatch_delivery with valid conn_info passed.""" r = queries.get_jobs_for_delivery( 1, 100, [18], 0, dd_conn_info_valid) assert r == [{ 'encoding_queue_detail_id': 1, 'priority': 1, 'dms_master_master_id': 1, 'dms_priority': 1, 'encoding_order_type': 'release', 'encoder_id': 18, 'delivery_batch_id': 0 }] def test_get_active_delivery_stores( seed_all_tables_with_all_seeds): """Test get_active_delivery_stores.""" r = queries.get_active_delivery_stores() assert r == [{ 'dms_master_master_id': 1, 'order_types': [ { 'batch_delivery': 'N', 'third_party_credential_set_id': None, 'order_type': 'release', 'encoding': 'Y', 'count_new': 1, 'count_encoded': 1, 'count_ready_to_deliver': 7 }, { 'batch_delivery': 'N', 'third_party_credential_set_id': None, 'order_type': 'harddrive', 'encoding': 'Y', 'count_new': 1, 'count_encoded': 0, 'count_ready_to_deliver': 0 } ] }] def test_get_active_delivery_stores_with_conn_info( seed_all_tables_with_all_seeds, dd_conn_info_valid): """Test get_active_delivery_stores with valid conn_info.""" r = queries.get_active_delivery_stores(dd_conn_info_valid) assert r == [{ 'dms_master_master_id': 1, 'order_types': [ { 'batch_delivery': 'N', 'third_party_credential_set_id': None, 'order_type': 'release', 'encoding': 'Y', 'count_new': 1, 'count_encoded': 1, 'count_ready_to_deliver': 7 }, { 'batch_delivery': 'N', 'third_party_credential_set_id': None, 'order_type': 'harddrive', 'encoding': 'Y', 'count_new': 1, 'count_encoded': 0, 'count_ready_to_deliver': 0 } ] }] def test_get_renew_delivery_jobs(seed_renew_script): """Test get_renew_delivery_jobs.""" r = queries.get_renew_delivery_jobs(1, 10, [17, 18, 19, 23]) assert r == [{ 'encoding_order_id': None, 'encoding_order_priority': 1, 'encoder_id': 18, 'encoding_queue_detail_id': 1, 'dms_master_master_id': 1, 'upc': 3452345234523, 'encoding_order_type': 'release', 'meta_update': 'N', 'priority': 1, 'cd': None, 'track_id': None, 'clip_number': None }] def test_get_renew_delivery_jobs_with_conn_info( seed_renew_script, dd_conn_info_valid): """Test get_renew_delivery_jobs_with valid conn_info.""" r = queries.get_renew_delivery_jobs( 1, 10, [17, 18, 19, 23], dd_conn_info_valid) assert r == [{ 'encoding_order_id': None, 'encoding_order_priority': 1, 'encoder_id': 18, 'encoding_queue_detail_id': 1, 'dms_master_master_id': 1, 'upc': 3452345234523, 'encoding_order_type': 'release', 'meta_update': 'N', 'priority': 1, 'cd': None, 'track_id': None, 'clip_number': None }] def test_get_batch(seed_batch_delivery_jobs, dd_conn_info_valid): """Test get_batch with connection info.""" job_data = queries.get_batch(1, dd_conn_info_valid) expected = ['delivery_batch_id', 'dms_master_master_id', 'priority', 'remote_folder', 'status', 'time_created', 'order_type', 'last_updated', 'third_party_credential_set_id'] returned = job_data.keys() assert len(expected) == len(returned) \ and sorted(expected) == sorted(returned) def test_get_batches_to_close( seed_find_batch_to_close, dd_conn_info_valid): """Test get_batches_to_close with connection info.""" r = queries.get_batches_to_close(dd_conn_info_valid) assert r == [{ 'delivery_batch_id': 1, 'dms_master_master_id': 1, }] assert queries.get_batch( 1, dd_conn_info_valid)['status'] == 'ready_to_close' def test_get_batches_to_close_no_results( seed_find_batch_to_close_no_batches_to_close): """Test get_batches_to_close.""" r = queries.get_batches_to_close() assert r == () def test_update_batch_status( seed_find_batch_to_close, dd_conn_info_valid): """Test update_batch_status with valid connection info.""" r = queries.update_batch_status( 'open', 'closed', 1, dd_conn_info_valid) assert r == 1 assert queries.get_batch( 1, dd_conn_info_valid)['status'] == 'closed' def test_get_product_ids_by_upcs( seed_get_product_ids_by_upcs, ar_conn_info_valid): """Test get_product_ids_by_upcs with list of UPC's.""" r = queries.get_product_ids_by_upcs( [452345234521, 452345234522, 452345234523, 452345234524, 452345234525], 1, ar_conn_info_valid) assert len(r) == 5 assert r == [ {'release_id': 1, 'upc': 452345234521}, {'release_id': 2, 'upc': 452345234522}, {'release_id': 3, 'upc': 452345234523}, {'release_id': 4, 'upc': 452345234524}, {'release_id': 5, 'upc': 452345234525}] def test_get_open_batch_count( seed_get_open_batch_count, dd_conn_info_valid): r = queries.get_open_batch_count(1, conn_info=dd_conn_info_valid) assert r == {'open_batches': 3, 'open_jobs': 6, 'highest_priority': 1} def test_get_encoded_jobs_info( seed_get_encoded_jobs_info, dd_conn_info_valid): encoder_ids = [17, 18] order_type = 'release' r = queries.get_encoded_jobs_info( 1, encoder_ids, order_type, conn_info=dd_conn_info_valid) assert r == \ {'dms_master_master_id': 1, 'encoded_jobs': 6, 'highest_priority': 1} def test_get_encoded_jobs_info_empty( seed_get_encoded_jobs_info_empty, dd_conn_info_valid): encoder_ids = [17, 18] order_type = 'release' r = queries.get_encoded_jobs_info( 1, encoder_ids, order_type, conn_info=dd_conn_info_valid) assert r is None def test_create_delivery_batch( seed_create_delivery_batch, dd_conn_info_valid): expected = [ {'batch_id': 1, 'dms_master_master_id': 1, 'priority': 1, 'remote_folder': 'remote_dir', 'order_type': 'release'}, {'batch_id': 2, 'dms_master_master_id': 1, 'priority': 2, 'remote_folder': 'remote_dir', 'order_type': 'release'}, {'batch_id': 3, 'dms_master_master_id': 1, 'priority': 3}] for i in range(3): batch_id = queries.create_delivery_batch( 1, 'remote_dir', 'release', 10, conn_info=dd_conn_info_valid) assert batch_id == expected[i]['batch_id'] r = queries.get_batch(batch_id, conn_info=dd_conn_info_valid) assert r['dms_master_master_id'] == \ expected[i]['dms_master_master_id'] assert r['priority'] == expected[i]['priority'] assert r['remote_folder'] == 'remote_dir' assert r['status'] == 'open' assert queries.get_open_batch_count( 1, conn_info=dd_conn_info_valid)['open_batches'] == 3 def test_create_delivery_batch_no_batch_created( seed_create_delivery_batch_no_batch_created, dd_conn_info_valid): batch_id = queries.create_delivery_batch( 1, 'remote_dir', 'release', 10, conn_info=dd_conn_info_valid) assert batch_id is None def test_set_job_for_delivery(dd_conn_info_valid): assert queries.set_job_for_delivery(1, 'release', dd_conn_info_valid) def test_close_delivery_batch( seed_get_open_batch_count, dd_conn_info_valid): assert queries.close_delivery_batch(1, dd_conn_info_valid) def test_get_batch_info( seed_get_open_batch_count, dd_conn_info_valid): assert queries.get_batch_info(1, dd_conn_info_valid) == [ { 'dms_master_master_id': 1, 'order_type': 'release', 'upc': 3452345234529, 'remote_folder': '20140521_0001', 'encoding_queue_detail_id': 7, 'meta_update': 'N', 'third_party_credential_set_id': None, }, ] def test_get_release_priority_info( seed_get_release_priority_info, ar_conn_info_valid): assert queries.get_release_priority_info('2, 70', '1', '452345234521, 452345234522', ar_conn_info_valid) == [ { 'upc': 452345234521, 'release_date': None, 'sale_start_date': None, 'exclusive_date': None, 'release_name': None, 'artist_name': 'artist 1', 'artist_country': 1, 'vendor_country': 1, 'priority_a': 0, 'priority_b': 0, 'mkt_blurb': 0 }, { 'upc': 452345234522, 'release_date': None, 'sale_start_date': None, 'exclusive_date': None, 'release_name': None, 'artist_name': 'artist 1', 'artist_country': 1, 'vendor_country': 1, 'priority_a': 0, 'priority_b': 0, 'mkt_blurb': 0 }, ] def test_get_dms_master_contact_info( seed_customer_master_master_contact, ar_conn_info_valid): assert queries.get_dms_master_contact_info(1, ar_conn_info_valid) == [ { 'customer_master_master_contact_id': 1, 'contact_email': 'contact@mail.com', 'contact_first_name': 'first name', 'contact_last_name': 'last name' }, ] def test_get_customer_name( seed_customer_master_master_contact, ar_conn_info_valid): assert queries.get_customer_name(1, ar_conn_info_valid) == {'customer_name': 'iTunes/Apple'} def test_get_local_territory_focus(seed_customer_master_master_contact, ar_conn_info_valid): assert queries.get_local_focus_territory(1, ar_conn_info_valid) == {'local_focus_territory': '123,231,312'} def test_get_customer_id( seed_customer_master, seed_customer_master_master_contact, ar_conn_info_valid): assert queries.get_customer_id(1, ar_conn_info_valid) == [{'customer_id': 1}, {'customer_id': 2}] def test_get_track_count_in_upcs(seed_track, ar_conn_info_valid): assert queries.get_track_count_in_upcs([123, 321], ar_conn_info_valid) == {'total': 10} def test_get_release_artist_genre_info(seed_get_release_artist_genre_info, ar_conn_info_valid): assert queries.get_release_artist_genre_info([123], 123, ar_conn_info_valid) == { 'artist_name': 'artist 1', 'exclusive_date': None, 'genre': None, 'label': None, 'myspace_url': None, 'orig_release_year': None, 'release_date': None, 'release_name': None, 'sale_start_date': None, 'upc': 123 } def test_get_release_track_info( seed_track, ar_conn_info_valid): assert queries.get_release_track_info( [123, 321], conn_info=ar_conn_info_valid) == [ { 'display_upc': '123', 'upc': 123, 'cd': 1, 'track_id': 1, 'content_id': 123 }, { 'display_upc': '123', 'upc': 123, 'cd': 1, 'track_id': 2, 'content_id': 123 }, { 'display_upc': '123', 'upc': 123, 'cd': 1, 'track_id': 3, 'content_id': 123 }, { 'display_upc': '123', 'upc': 123, 'cd': 1, 'track_id': 4, 'content_id': 123 }, { 'display_upc': '123', 'upc': 123, 'cd': 2, 'track_id': 1, 'content_id': 123 }, { 'display_upc': '123', 'upc': 123, 'cd': 2, 'track_id': 2, 'content_id': 123 }, { 'display_upc': '123', 'upc': 123, 'cd': 2, 'track_id': 3, 'content_id': 123 }, ] def test_get_store_info( seed_customer_master_master_table_ar, ar_conn_info_valid): assert queries.get_store_info(1, conn_info=ar_conn_info_valid) == { 'customer_name': 'iTunes/Apple', 'ddex_party_id': 'ASDF2345234523452354', } def test_get_storage_drives( seed_storage_drives, dd_conn_info_valid): assert queries.get_storage_drives(1, 1, dd_conn_info_valid) == [{ 'storage_drive_id': 1, 'drive_location': None, 'storage_id': 1, 'unix_mount': None, 'local_ip': '139.140.101.204', 'remote_ip': '139.203.33.62' }]