from unittest.mock import MagicMock import datetime import time import pytest from bulkperformancerights import config from bulkperformancerights.connectors import mysql from bulkperformancerights.logic import export_status s3_subdomain = '.s3.amazonaws.com' user_type = 'vendor' user_id = 1 user_prefix = '{}/{}'.format(user_type, user_id) fake_filename = export_status.input_file_name expected_input_file_path = '{}{}{}/{}'.format(config.bucket_name, config.prefix, user_prefix, fake_filename) def test_create_and_get_status(monkeypatch, db_fixture): export = export_status.create(user_type, user_id).dict() assert export.get('input_file_path') == export_status.input_file_name assert export.get('job_status') is 'querying' assert export.get('job_id').isnumeric() export_job_id = export.get('job_id') export_lookup = export_status.get(user_type, user_id, export_job_id) assert export_lookup.get('input_file_path') == expected_input_file_path def test_create_and_check_start_time(monkeypatch, db_fixture): first_export = export_status.create(user_type, user_id).dict() time.sleep(1) second_export = export_status.create(user_type, user_id).dict() assert first_export.get('start_time') != second_export.get('start_time') def test_amend(monkeypatch, db_fixture): export_to_update = export_status.create(user_type, user_id) status_dict = dict(job_status='jsonify') updated_export = export_status.amend(export_to_update, **status_dict) assert updated_export.rowcount == 1 current_datetime = datetime.datetime.now() updated_export = export_status.amend(export_to_update, end_time=current_datetime) assert updated_export.rowcount == 1 def test_get_list(): jobs_made = export_status.get(user_type, user_id, None) assert len(jobs_made) > 1 def test_decorate(): export_status_dict = {} export_status_dict['user_id'] = user_id export_status_dict['user_type'] = user_type export_status_dict['input_file_path'] = export_status.input_file_name decorated_export = export_status.decorate(export_status_dict) assert expected_input_file_path == decorated_export.get('input_file_path') def test_get_export_status(monkeypatch): """Test getting an export status. """ mysql.session.close = MagicMock() with pytest.raises(AssertionError): export_status.get(user_type, user_id, 'job_id') assert mysql.session.close.called