Esempio n. 1
0
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')
Esempio n. 2
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')
    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)
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
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)
Esempio n. 9
0
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'
Esempio n. 10
0
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'
Esempio n. 11
0
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'
Esempio n. 12
0
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)'
Esempio n. 13
0
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'
Esempio n. 14
0
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()
Esempio n. 15
0
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)'
Esempio n. 16
0
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)
Esempio n. 17
0
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()
Esempio n. 18
0
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'
Esempio n. 19
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='',
                          species_taxid=None,
                          taxid=None,
                          human_readable=False,
                          parallel=1)
    core.download(fake_args)
    assert _download_mock.call_count == len(core.SUPPORTED_DOMAINS)
Esempio n. 20
0
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)
Esempio n. 21
0
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()
Esempio n. 22
0
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
Esempio n. 23
0
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
Esempio n. 24
0
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
Esempio n. 25
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
Esempio n. 26
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
Esempio n. 27
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
Esempio n. 28
0
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
Esempio n. 29
0
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)
Esempio n. 30
0
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
Esempio n. 31
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
Esempio n. 32
0
def test_download_connection_err(monkeypatch, mocker):
    _download_mock = mocker.MagicMock(side_effect=ConnectionError)
    monkeypatch.setattr(core, '_download', _download_mock)
    assert core.download() == 75
Esempio n. 33
0
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)
Esempio n. 34
0
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)
Esempio n. 35
0
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)