pubs/tests/test_filebroker.py
Olivier Mangin 136b8f83dc Fix fake_env, fix configparser issues, uniform 'open'.
- Update fake_env for compatibility with io.
- Uniform open (through _my_open in content).
- Fix read issue for config (although still using SafeConfigParser that
  is deprecated in py3).
2014-09-11 18:35:07 +02:00

106 lines
3.3 KiB
Python

# -*- 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):
fake_env.copy_dir(self.fs, os.path.join(os.path.dirname(__file__), 'testrepo'), 'testrepo')
fb = filebroker.FileBroker('testrepo', create = True)
bib_content = content.read_file('testrepo/bib/Page99.bib')
self.assertEqual(fb.pull_bibfile('Page99'), bib_content)
meta_content = content.read_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)
with self.assertRaises(IOError):
fb.pull_bibfile('Page99')
with self.assertRaises(IOError):
fb.pull_metafile('Page99')
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_doccopy(self):
fake_env.copy_dir(self.fs, os.path.join(os.path.dirname(__file__), 'data'), 'data')
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()