# -*- coding: utf-8 -*- import unittest import os import dotdot import fake_env from pubs import content, filebroker class TestFileBroker(fake_env.TestFakeFs): def test_pushpull1(self): fb = filebroker.FileBroker('bla', create = True) fb.push_metafile('citekey1', 'abc') fb.push_bibfile('citekey1', 'cdef') self.assertEqual(fb.pull_metafile('citekey1'), 'abc') self.assertEqual(fb.pull_bibfile('citekey1'), 'cdef') fb.push_bibfile('citekey1', 'ghi') self.assertEqual(fb.pull_bibfile('citekey1'), 'ghi') def test_existing_data(self): self.fs.add_real_directory(os.path.join(self.rootpath, 'testrepo'), read_only=False) fb = filebroker.FileBroker('testrepo', create = True) bib_content = content.read_text_file('testrepo/bib/Page99.bib') self.assertEqual(fb.pull_bibfile('Page99'), bib_content) meta_content = content.read_text_file('testrepo/meta/Page99.yaml') self.assertEqual(fb.pull_metafile('Page99'), meta_content) def test_errors(self): with self.assertRaises(IOError): filebroker.FileBroker('testrepo', create = False) fb = filebroker.FileBroker('testrepo', create = True) self.assertFalse(fb.exists('Page99')) with self.assertRaises(IOError): fb.pull_bibfile('Page99') with self.assertRaises(IOError): fb.pull_metafile('Page99') def test_remove(self): with self.assertRaises(IOError): filebroker.FileBroker('testrepo', create = False) fb = filebroker.FileBroker('testrepo', create = True) fb.push_bibfile('citekey1', 'abc') self.assertEqual(fb.pull_bibfile('citekey1'), 'abc') fb.push_metafile('citekey1', 'defg') self.assertEqual(fb.pull_metafile('citekey1'), 'defg') self.assertTrue(fb.exists('citekey1')) fb.remove('citekey1') with self.assertRaises(IOError): self.assertEqual(fb.pull_bibfile('citekey1'), 'abc') with self.assertRaises(IOError): self.assertEqual(fb.pull_metafile('citekey1'), 'defg') self.assertFalse(fb.exists('citekey1')) class TestDocBroker(fake_env.TestFakeFs): def test_expanduser(self): """Test that real_docpath expand the user ~""" self.fs.add_real_directory(os.path.join(self.rootpath, 'data'), read_only=False) fb = filebroker.FileBroker('~/testrepo', create = True) docb = filebroker.DocBroker('~/testrepo') self.assertTrue(os.path.isabs(docb.docdir)) self.assertTrue(os.path.isabs(docb.real_docpath('docsdir://abc'))) def test_doccopy(self): self.fs.add_real_directory(os.path.join(self.rootpath, 'data'), read_only=False) fb = filebroker.FileBroker('testrepo', create = True) docb = filebroker.DocBroker('testrepo') docpath = docb.add_doc('Page99', 'data/pagerank.pdf') self.assertTrue(content.check_file(os.path.join('testrepo', 'doc/Page99.pdf'))) self.assertTrue(docb.in_docsdir(docpath)) self.assertEqual(docpath, 'docsdir://Page99.pdf') docb.remove_doc('docsdir://Page99.pdf') self.assertFalse(content.check_file(os.path.join('testrepo', 'doc/Page99.pdf'), fail=False)) with self.assertRaises(IOError): self.assertFalse(content.check_file(os.path.join('testrepo', 'doc/Page99.pdf'), fail=True)) if __name__ == '__main__': unittest.main()