You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.6 KiB

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import unittest
import copy
import dotdot
from pubs import bibstruct
import fixtures
class TestGenerateCitekey(unittest.TestCase):
def test_fails_on_empty_paper(self):
with self.assertRaises(ValueError):
bibstruct.generate_citekey(None)
def test_escapes_chars(self):
doe_bibentry = copy.deepcopy(fixtures.doe_bibentry)
citekey, bibdata = bibstruct.get_entry(doe_bibentry)
bibdata['author'] = ['Zôu\\@/ , John']
key = bibstruct.generate_citekey(doe_bibentry)
self.assertEqual(key, 'Zou2013')
def test_simple(self):
bibentry = copy.deepcopy(fixtures.doe_bibentry)
key = bibstruct.generate_citekey(bibentry)
self.assertEqual(key, 'Doe2013')
bibentry = copy.deepcopy(fixtures.franny_bibentry)
key = bibstruct.generate_citekey(bibentry)
self.assertEqual(key, 'Salinger1961')
def test_no_modifier(self):
template = '{author_last_name}{year}'
bibentry = copy.deepcopy(fixtures.doe_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'Doe2013')
bibentry = copy.deepcopy(fixtures.franny_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'Salinger1961')
def test_all_keys(self):
template = '{author_last_name}-{year}-{short_title}'
bibentry = copy.deepcopy(fixtures.doe_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'Doe-2013-Nice')
bibentry = copy.deepcopy(fixtures.franny_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'Salinger-1961-Franny')
def test_l_modifier(self):
template = '{author_last_name:l}{year:l}'
bibentry = copy.deepcopy(fixtures.doe_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'doe2013')
bibentry = copy.deepcopy(fixtures.franny_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'salinger1961')
def test_u_modifier(self):
template = '{author_last_name:u}{year:u}'
bibentry = copy.deepcopy(fixtures.doe_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'DOE2013')
bibentry = copy.deepcopy(fixtures.franny_bibentry)
key = bibstruct.generate_citekey(bibentry, template)
self.assertEqual(key, 'SALINGER1961', template)
if __name__ == '__main__':
unittest.main()