1# -*- coding: utf-8 -*-
2
3import unittest
4
5import dotdot
6import fixtures
7import str_fixtures
8from pubs.paper import Paper
9from pubs.endecoder import EnDecoder
10
11
12class TestAttributes(unittest.TestCase):
13
14    def setUp(self):
15        self.p = Paper.from_bibentry(
16            fixtures.page_bibentry,
17            metadata=fixtures.page_metadata).deepcopy()
18
19    def test_tags(self):
20        self.assertEqual(self.p.tags, set(['search', 'network']))
21
22    def test_add_tag(self):
23        self.p.add_tag('algorithm')
24        self.assertEqual(self.p.tags, set(['search', 'network', 'algorithm']))
25        self.p.add_tag('algorithm')
26        self.assertEqual(self.p.tags, set(['search', 'network', 'algorithm']))
27
28    def test_set_tags(self):
29        self.p.tags = ['algorithm']
30        self.assertEqual(self.p.tags, set(['algorithm']))
31
32    def test_remove_tags(self):
33        self.p.remove_tag('network')
34        self.assertEqual(self.p.tags, set(['search']))
35
36    def test_mixed_tags(self):
37        self.p.add_tag('algorithm')
38        self.assertEqual(self.p.tags, set(['search', 'network', 'algorithm']))
39        self.p.remove_tag('network')
40        self.assertEqual(self.p.tags, set(['search', 'algorithm']))
41        self.p.tags = ['ranking']
42        self.assertEqual(self.p.tags, set(['ranking']))
43        self.p.remove_tag('ranking')
44        self.assertEqual(self.p.tags, set())
45        self.p.remove_tag('ranking')
46
47    def test_fails_with_empty_citekey(self):
48        with self.assertRaises(ValueError):
49            Paper(" ", fixtures.doe_bibdata)
50
51
52class TestPaperUnicodeBibdata(unittest.TestCase):
53
54    def test_no_latex(self):
55        p = Paper.from_bibentry(fixtures.page_bibentry,
56                                metadata=fixtures.page_metadata).deepcopy()
57        self.assertEqual(p.bibdata, p.get_unicode_bibdata())
58
59    def test_latex_converted(self):
60        bib = EnDecoder().decode_bibdata(str_fixtures.bibtex_with_latex)
61        p = Paper.from_bibentry(bib)
62        ubib = p.get_unicode_bibdata()
63        self.assertEqual(ubib['author'][0], u"Kjær, Kurt H")
64        self.assertEqual(ubib['author'][3], u"Bjørk, Anders A")
65
66
67if __name__ == '__main__':
68    unittest.main()
69