def test_download_one(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='bacteria', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank') core.download(fake_args) _download_mock.assert_called_with('refseq', 'bacteria', core.NCBI_URI, '/tmp/fake', 'genbank')
def test_download_all(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='all', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank') core.download(fake_args) assert _download_mock.call_count == len(core.supported_domains)
def test_download_all(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='all', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank', assembly_level='all', genus='', species_taxid=None, taxid=None, parallel=1) core.download(fake_args) assert _download_mock.call_count == len(core.SUPPORTED_DOMAINS)
def test_download_one(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='bacteria', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank', assembly_level='all', genus='', species_taxid=None, taxid= None, parallel=1) core.download(fake_args) _download_mock.assert_called_with('refseq', 'bacteria', core.NCBI_URI, '/tmp/fake', 'genbank', 'all', '', None, None, 1)
def test_download(monkeypatch, mocker, req): summary_contents = open(_get_file('partial_summary.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 4
def test_download(monkeypatch, mocker, req): summary_contents = open(_get_file('partial_summary.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.download_entry') core.download(group='bacteria', output='/tmp/fake') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.download_entry.call_count == 4
def test_download_type_material_no_match(monkeypatch, mocker, req): summary_contents = open(_get_file('type_material.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) print(summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake', type_material=["neotype"]) assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 0
def test_download_all(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='all', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank', assembly_level='all', genus='', parallel=1) core.download(fake_args) assert _download_mock.call_count == len(core.supported_domains)
def test_download_contig(monkeypatch, mocker, req): summary_contents = open(_get_file('assembly_status.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake', assembly_level='contig') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.create_downloadjob.call_args_list[0][0][0]['assembly_level'] == 'Contig'
def test_download_scaffold(monkeypatch, mocker, req): summary_contents = open(_get_file('assembly_status.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.download_entry') core.download(group='bacteria', output='/tmp/fake', assembly_level='scaffold') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.download_entry.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.download_entry.call_args_list[0][0][0]['assembly_level'] == 'Scaffold'
def test_download_species_taxid(monkeypatch, mocker, req): summary_contents = open(_get_file('partial_summary.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.download_entry') core.download(group='bacteria', output='/tmp/fake', species_taxid='7') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.download_entry.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.download_entry.call_args_list[0][0][0][ 'organism_name'] == 'Azorhizobium caulinodans ORS 571'
def test_download_refseq_category(monkeypatch, mocker, req): summary_contents = open(_get_file('assembly_status.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake', refseq_category='reference') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.create_downloadjob.call_args_list[0][0][0][ 'organism_name'] == 'Streptomyces coelicolor A3(2)'
def test_download_species_taxid(monkeypatch, mocker, req): summary_contents = open(_get_file('partial_summary.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake', species_taxid='7') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.create_downloadjob.call_args_list[0][0][0][ 'organism_name'] == 'Azorhizobium caulinodans ORS 571'
def test_download_metadata(monkeypatch, mocker, req, tmpdir): """Test creating the metadata file works.""" metadata_file = tmpdir.join('metadata.tsv') summary_contents = open(_get_file('partial_summary.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob', return_value=[core.DownloadJob(None, None, None, None)]) core.download(group='bacteria', output='/tmp/fake', metadata_table=str(metadata_file)) assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 4 assert metadata_file.check()
def test_download_refseq_category(monkeypatch, mocker, req): summary_contents = open(_get_file('assembly_status.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake', refseq_category='reference') assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.create_downloadjob.call_args_list[0][0][0][ 'organism_name'] == 'Streptomyces coelicolor A3(2)'
def test_download_one(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='bacteria', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank', assembly_level='all', genus='', parallel=1) core.download(fake_args) _download_mock.assert_called_with('refseq', 'bacteria', core.NCBI_URI, '/tmp/fake', 'genbank', 'all', '', 1)
def test_download_metadata(monkeypatch, mocker, req, tmpdir): """Test creating the metadata file works.""" metadata_file = tmpdir.join('metadata.tsv') summary_contents = open(_get_file('partial_summary.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob', return_value=[core.DownloadJob(None, None, None, None)]) core.download(group='bacteria', output='/tmp/fake', metadata_table=str(metadata_file)) assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 4 assert metadata_file.check()
def test_download_type_material(monkeypatch, mocker, req): summary_contents = open(_get_file('type_material.txt'), 'r').read() req.get('https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) print(summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake', type_material=["all"]) assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.create_downloadjob.call_args_list[0][0][0][ 'organism_name'] == 'Myxococcus fulvus'
def test_download_all(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='all', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank', assembly_level='all', genus='', species_taxid=None, taxid=None, human_readable=False, parallel=1) core.download(fake_args) assert _download_mock.call_count == len(core.SUPPORTED_DOMAINS)
def test_download_defaults(monkeypatch, mocker): """Test _download is called an appropriate number of times.""" worker_mock = mocker.MagicMock() _download_mock = mocker.MagicMock( return_value=[core.DownloadJob(None, None, None, None)]) monkeypatch.setattr(core, '_download', _download_mock) monkeypatch.setattr(core, 'worker', worker_mock) assert core.download() == 0 assert _download_mock.call_count == len(core.SUPPORTED_TAXONOMIC_GROUPS)
def test_download_all_formats(monkeypatch, mocker, req): summary_contents = open(_get_file('assembly_status.txt'), 'r').read() req.get( 'https://ftp.ncbi.nih.gov/genomes/refseq/bacteria/assembly_summary.txt', text=summary_contents) mocker.spy(core, 'get_summary') mocker.spy(core, 'parse_summary') mocker.patch('ncbi_genome_download.core.create_downloadjob') core.download(group='bacteria', output='/tmp/fake', assembly_level='complete', file_format="all") assert core.get_summary.call_count == 1 assert core.parse_summary.call_count == 1 assert core.create_downloadjob.call_count == 1 # Many nested tuples in call_args_list, no kidding. assert core.create_downloadjob.call_args_list[0][0][0][ 'assembly_level'] == 'Complete Genome' print(core.create_downloadjob.call_args_list) assert core.create_downloadjob.call_args_list[0][0][ 4] == core.EFormats.keys()
def test_download_connection_err(monkeypatch, mocker): _download_mock = mocker.MagicMock(side_effect=ConnectionError) monkeypatch.setattr(core, '_download', _download_mock) fake_args = Namespace(section='refseq', domain='all', uri=core.NCBI_URI, output='/tmp/fake', file_format='genbank', assembly_level='all', genus='', species_taxid=None, taxid=None, human_readable=False, parallel=1) assert core.download(fake_args) == 75
def test_download_defaults(monkeypatch, mocker): """Test download does the right thing.""" entry = { 'assembly_accession': 'FAKE0.1', 'organism_name': 'Example species', 'infraspecific_name': 'strain=ABC 1234', 'ftp_path': 'https://fake/genomes/FAKE0.1' } worker_mock = mocker.MagicMock() select_candidates_mock = mocker.MagicMock(return_value=[(entry, 'bacteria')]) create_downloadjob_mock = mocker.MagicMock(return_value=[core.DownloadJob(None, None, None, None)]) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) monkeypatch.setattr(core, 'create_downloadjob', create_downloadjob_mock) monkeypatch.setattr(core, 'worker', worker_mock) assert core.download() == 0 assert select_candidates_mock.call_args_list[0][0][0].group == SUPPORTED_TAXONOMIC_GROUPS assert create_downloadjob_mock.call_args_list[0][0][0] == entry
def test_download_defaults(monkeypatch, mocker): """Test download does the right thing.""" entry = { 'assembly_accession': 'FAKE0.1', 'organism_name': 'Example species', 'infraspecific_name': 'strain=ABC 1234', 'ftp_path': 'https://fake/genomes/FAKE0.1' } worker_mock = mocker.MagicMock() select_candidates_mock = mocker.MagicMock(return_value=[(entry, 'bacteria')]) create_downloadjob_mock = mocker.MagicMock(return_value=[core.DownloadJob(None, None, None, None)]) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) monkeypatch.setattr(core, 'create_downloadjob', create_downloadjob_mock) monkeypatch.setattr(core, 'worker', worker_mock) assert core.download() == 0 assert select_candidates_mock.call_args_list[0][0][0].group == SUPPORTED_TAXONOMIC_GROUPS assert create_downloadjob_mock.call_args_list[0][0][0] == entry
def test_download_dry_run(monkeypatch, mocker): """Test _download is not called for a dry run.""" entry = { 'assembly_accession': 'FAKE0.1', 'organism_name': 'Example species', 'infraspecific_name': 'strain=ABC 1234', 'ftp_path': 'https://fake/genomes/FAKE0.1' } worker_mock = mocker.MagicMock() select_candidates_mock = mocker.MagicMock(return_value=[(entry, 'bacteria')]) create_downloadjob_mock = mocker.MagicMock(return_value=[core.DownloadJob(None, None, None, None)]) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) monkeypatch.setattr(core, 'create_downloadjob', create_downloadjob_mock) monkeypatch.setattr(core, 'worker', worker_mock) assert core.download(dry_run=True) == 0 assert select_candidates_mock.call_count == 1 assert create_downloadjob_mock.call_count == 0 assert worker_mock.call_count == 0
def test_download_dry_run(monkeypatch, mocker): """Test _download is not called for a dry run.""" entry = { 'assembly_accession': 'FAKE0.1', 'organism_name': 'Example species', 'infraspecific_name': 'strain=ABC 1234', 'ftp_path': 'https://fake/genomes/FAKE0.1' } worker_mock = mocker.MagicMock() select_candidates_mock = mocker.MagicMock(return_value=[(entry, 'bacteria')]) create_downloadjob_mock = mocker.MagicMock(return_value=[core.DownloadJob(None, None, None, None)]) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) monkeypatch.setattr(core, 'create_downloadjob', create_downloadjob_mock) monkeypatch.setattr(core, 'worker', worker_mock) assert core.download(dry_run=True) == 0 assert select_candidates_mock.call_count == 1 assert create_downloadjob_mock.call_count == 0 assert worker_mock.call_count == 0
def test_download_defaults_nomatch(monkeypatch, mocker): """Test download bails with a 1 return code if no entries match.""" select_candidates_mock = mocker.MagicMock(return_value=[]) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) assert core.download() == 1
def test_download_connection_err(monkeypatch, mocker): select_candidates_mock = mocker.MagicMock(side_effect=ConnectionError) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) assert core.download() == 75
def test_download_one(monkeypatch, mocker): download_mock = mocker.MagicMock() monkeypatch.setattr(core, 'download', download_mock) kwargs = {'group': 'bacteria', 'output': '/tmp/fake'} core.download(**kwargs) download_mock.assert_called_with(**kwargs)
def test_download_connection_err(monkeypatch, mocker): select_candidates_mock = mocker.MagicMock(side_effect=ConnectionError) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) assert core.download() == 75
def test_download_defaults_nomatch(monkeypatch, mocker): """Test download bails with a 1 return code if no entries match.""" select_candidates_mock = mocker.MagicMock(return_value=[]) monkeypatch.setattr(core, 'select_candidates', select_candidates_mock) assert core.download() == 1
def test_download_connection_err(monkeypatch, mocker): _download_mock = mocker.MagicMock(side_effect=ConnectionError) monkeypatch.setattr(core, '_download', _download_mock) assert core.download() == 75
def test_download_all(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) core.download(group='all', output='/tmp/fake') assert _download_mock.call_count == len(core.SUPPORTED_TAXONOMIC_GROUPS)
def test_download_defaults(monkeypatch, mocker): _download_mock = mocker.MagicMock() monkeypatch.setattr(core, '_download', _download_mock) core.download() assert _download_mock.call_count == len(core.SUPPORTED_TAXONOMIC_GROUPS)
def test_download_one(monkeypatch, mocker): download_mock = mocker.MagicMock() monkeypatch.setattr(core, 'download', download_mock) kwargs = {'group': 'bacteria', 'output': '/tmp/fake'} core.download(**kwargs) download_mock.assert_called_with(**kwargs)