From da6f07c6c9f8be94a6740b6207cf0d437fd1e04a Mon Sep 17 00:00:00 2001 From: Olivier Mangin Date: Sat, 22 Jul 2017 15:42:12 -0400 Subject: [PATCH] Adds basic API test for DOI and ISBN. --- tests/test_apis.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/test_apis.py diff --git a/tests/test_apis.py b/tests/test_apis.py new file mode 100644 index 0000000..087f32f --- /dev/null +++ b/tests/test_apis.py @@ -0,0 +1,64 @@ +# coding: utf8 + +from __future__ import unicode_literals +import unittest + +import dotdot + +from pubs.p3 import ustr +from pubs.endecoder import EnDecoder +from pubs.apis import doi2bibtex, isbn2bibtex + + +class TestDOI2Bibtex(unittest.TestCase): + + def setUp(self): + self.endecoder = EnDecoder() + + def test_unicode(self): + bib = doi2bibtex('10.1007/BF01700692') + self.assertIsInstance(bib, ustr) + self.assertIn('Kurt Gödel', bib) + + def test_parses_to_bibtex(self): + bib = doi2bibtex('10.1007/BF01700692') + b = self.endecoder.decode_bibdata(bib) + self.assertEqual(len(b), 1) + entry = b[list(b)[0]] + self.assertEqual(entry['author'][0], 'Gödel, Kurt') + self.assertEqual(entry['title'], + 'Über formal unentscheidbare Sätze der Principia ' + 'Mathematica und verwandter Systeme I') + + def test_parse_fails_on_incorrect_DOI(self): + bib = doi2bibtex('999999') + with self.assertRaises(ValueError): + self.endecoder.decode_bibdata(bib) + + +class TestISBN2Bibtex(unittest.TestCase): + + def setUp(self): + self.endecoder = EnDecoder() + + def test_unicode(self): + bib = isbn2bibtex('9782081336742') + self.assertIsInstance(bib, ustr) + self.assertIn('Poincaré, Henri', bib) + + def test_parses_to_bibtex(self): + bib = isbn2bibtex('9782081336742') + b = self.endecoder.decode_bibdata(bib) + self.assertEqual(len(b), 1) + entry = b[list(b)[0]] + self.assertEqual(entry['author'][0], 'Poincaré, Henri') + self.assertEqual(entry['title'], 'La science et l\'hypothèse') + + def test_parse_fails_on_incorrect_ISBN(self): + bib = doi2bibtex('9' * 13) + with self.assertRaises(ValueError): + self.endecoder.decode_bibdata(bib) + + +# Note: apparently ottobib.com uses caracter modifiers for accents instead +# of the correct unicode characters. TODO: Should we convert them?