def test_set_pdf_duplicate_pdf(mock_init_sample): bib = bm.find(key='ShowmanEtal2009apjRadGCM') pdf = 'file.pdf' bin_pdf = b'file.pdf' with pytest.raises(ValueError, match='Exactly one of pdf or bin_pdf must be not None'): pm.set_pdf(bib, pdf=pdf, bin_pdf=bin_pdf)
def test_set_pdf_bin_new(mock_init_sample, name): bib = bm.find(key='ShowmanEtal2009apjRadGCM') bin_pdf = b'file.pdf' pm.set_pdf(bib, bin_pdf=bin_pdf, filename=name) filename = 'Showman2009_ApJ_699_564.pdf' if name is None else name assert filename in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == filename
def test_set_pdf_str_bib(mock_init_sample, bib): pdf = 'file.pdf' name = 'new.pdf' pathlib.Path(pdf).touch() pm.set_pdf(bib, pdf=pdf, filename=name) assert name in os.listdir(u.BM_PDF()) bib = bm.find(key='ShowmanEtal2009apjRadGCM') assert bib.pdf == name
def test_set_pdf_bin_overwrite_rename(mock_init_sample, mock_input): bib = bm.find(key='ShowmanEtal2009apjRadGCM') bin_pdf = b'file.pdf' name = 'new.pdf' pathlib.Path(f"{u.BM_PDF()}{name}").touch() pm.set_pdf(bib, bin_pdf=bin_pdf, filename=name) assert 'new_new.pdf' in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == 'new_new.pdf'
def test_set_pdf_in_new(mock_init_sample, name): bib = bm.find(key='ShowmanEtal2009apjRadGCM') pdf = u.BM_PDF() + 'file.pdf' pathlib.Path(pdf).touch() pm.set_pdf(bib, pdf=pdf, filename=name) filename = 'file.pdf' if name is None else name assert filename in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == filename
def test_set_pdf_overwrite_no(mock_init_sample, mock_input): bib = bm.find(key='ShowmanEtal2009apjRadGCM') pdf = 'file.pdf' name = 'new.pdf' pathlib.Path(pdf).touch() pathlib.Path(f"{u.BM_PDF()}{name}").touch() pm.set_pdf(bib, pdf=pdf, filename=name) assert name in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf is None
def test_set_pdf_bin_replace_ask_no(mock_init_sample, mock_input): bib = bm.find(key='Slipher1913lobAndromedaRarialVelocity') bin_pdf = b'file.pdf' old = f"{u.BM_PDF()}{bib.pdf}" name = 'new.pdf' pathlib.Path(old).touch() pm.set_pdf(bib, bin_pdf=bin_pdf, filename=name) assert name not in os.listdir(u.BM_PDF()) assert os.path.basename(old) in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == os.path.basename(old)
def test_set_pdf_rename(mock_init_sample, replace): bib = bm.find(key='Slipher1913lobAndromedaRarialVelocity') old = f"{u.BM_PDF()}{bib.pdf}" pdf = old name = 'new.pdf' pathlib.Path(old).touch() pm.set_pdf(bib, pdf=pdf, filename=name, replace=replace) assert name in os.listdir(u.BM_PDF()) assert old not in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == name
def test_set_pdf_bin_replace(mock_init_sample): bib = bm.find(key='Slipher1913lobAndromedaRarialVelocity') bin_pdf = b'file.pdf' pdf = 'file.pdf' name = 'new.pdf' old = f"{u.BM_PDF()}{bib.pdf}" pathlib.Path(old).touch() pm.set_pdf(bib, bin_pdf=bin_pdf, filename=name, replace=True) filename = 'file.pdf' if name is None else name assert filename in os.listdir(u.BM_PDF()) assert os.path.basename(old) not in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == filename
def test_set_pdf_overwrite_yes(mock_init_sample, mock_input): bib = bm.find(key='ShowmanEtal2009apjRadGCM') pdf = 'file.pdf' name = 'new.pdf' pathlib.Path(pdf).touch() pathlib.Path(f"{u.BM_PDF()}{name}").touch() out_filename = pm.set_pdf(bib, pdf=pdf, filename=name) assert name in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == name # TBD: Check if previous file belongs to another entry? assert out_filename is not None assert out_filename == f"{u.BM_PDF()}{name}"
def test_set_pdf_replace_ask_yes(mock_init_sample, mock_input): bib = bm.find(key='Slipher1913lobAndromedaRarialVelocity') pdf = 'file.pdf' name = 'new.pdf' old = f"{u.BM_PDF()}{bib.pdf}" pathlib.Path(old).touch() pathlib.Path(pdf).touch() out_filename = pm.set_pdf(bib, pdf=pdf, filename=name) filename = 'file.pdf' if name is None else name assert filename in os.listdir(u.BM_PDF()) assert os.path.basename(old) not in os.listdir(u.BM_PDF()) bib = bm.find(key=bib.key) assert bib.pdf == filename assert out_filename is not None assert out_filename == f"{u.BM_PDF()}{filename}"
def test_set_pdf_invalid_extension(mock_init_sample): bib = bm.find(key='ShowmanEtal2009apjRadGCM') bin_pdf = b'file.pdf' with pytest.raises(ValueError, match='Invalid filename, must have a .pdf extension'): pm.set_pdf(bib, bin_pdf=bin_pdf, filename='pdf_file')
def test_set_pdf_pathed_filename(mock_init_sample): bib = bm.find(key='ShowmanEtal2009apjRadGCM') bin_pdf = b'file.pdf' with pytest.raises(ValueError, match='filename must not have a path'): pm.set_pdf(bib, bin_pdf=bin_pdf, filename='./file.pdf')
def test_set_pdf_undefined_pdf(mock_init_sample): bib = bm.find(key='ShowmanEtal2009apjRadGCM') with pytest.raises(ValueError, match='Exactly one of pdf or bin_pdf must be not None'): pm.set_pdf(bib)
def test_set_pdf_bad_bib(mock_init_sample): key = 'not_in_database' pdf = 'file.pdf' with pytest.raises(ValueError, match='BibTex entry is not in Bibmanager database'): pm.set_pdf(key, pdf)