|
3 | 3 | import datetime |
4 | 4 | import json |
5 | 5 | import sys |
| 6 | +import urlparse |
| 7 | +import bibtexparser |
6 | 8 | if sys.version_info[0] == 2 and sys.version_info[1] < 7: |
7 | 9 | import unittest2 as unittest |
8 | 10 | else: |
9 | 11 | import unittest |
10 | 12 | from pyquery import PyQuery |
11 | 13 | from tempfile import NamedTemporaryFile |
12 | 14 | from Cookie import SimpleCookie |
13 | | -import urlparse |
14 | 15 |
|
15 | 16 | from django.core.urlresolvers import reverse as urlreverse |
16 | 17 | from django.conf import settings |
|
21 | 22 |
|
22 | 23 | from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State, |
23 | 24 | DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, NewRevisionDocEvent ) |
24 | | -from ietf.doc.factories import DocumentFactory |
| 25 | +from ietf.doc.factories import DocumentFactory, DocEventFactory |
25 | 26 | from ietf.group.models import Group |
26 | 27 | from ietf.group.factories import GroupFactory |
27 | 28 | from ietf.meeting.models import Meeting, Session, SessionPresentation |
@@ -810,6 +811,60 @@ def test_document_nonietf_pubreq_button(self): |
810 | 811 | self.assertTrue("Request publication" not in unicontent(r)) |
811 | 812 |
|
812 | 813 |
|
| 814 | + def test_document_bibtex(self): |
| 815 | + |
| 816 | + rfc = DocumentFactory.create( |
| 817 | + other_aliases = ['rfc6020',], |
| 818 | + states = [('draft','rfc'),('draft-iesg','pub')], |
| 819 | + std_level_id = 'ps', |
| 820 | + time = '2010-10-10', |
| 821 | + ) |
| 822 | + DocEventFactory.create(doc=rfc, type='published_rfc', time = '2010-10-10') |
| 823 | + # |
| 824 | + url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=rfc.name)) |
| 825 | + r = self.client.get(url) |
| 826 | + entry = bibtexparser.loads(r.content).get_entry_dict()["rfc6020"] |
| 827 | + self.assertEqual(entry['series'], u'Request for Comments') |
| 828 | + self.assertEqual(entry['number'], u'6020') |
| 829 | + self.assertEqual(entry['doi'], u'10.17487/rfc6020') |
| 830 | + self.assertEqual(entry['year'], u'2010') |
| 831 | + self.assertEqual(entry['month'], u'oct') |
| 832 | + # |
| 833 | + self.assertNotIn('day', entry) |
| 834 | + |
| 835 | + april1 = DocumentFactory.create( |
| 836 | + other_aliases = ['rfc1149',], |
| 837 | + stream_id = 'rse', |
| 838 | + states = [('draft','rfc'),('draft-iesg','pub')], |
| 839 | + std_level_id = 'ind', |
| 840 | + time = '1990-04-01', |
| 841 | + ) |
| 842 | + DocEventFactory.create(doc=april1, type='published_rfc', time = '1990-04-01') |
| 843 | + # |
| 844 | + url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=april1.name)) |
| 845 | + r = self.client.get(url) |
| 846 | + entry = bibtexparser.loads(r.content).get_entry_dict()['rfc1149'] |
| 847 | + self.assertEqual(entry['series'], u'Request for Comments') |
| 848 | + self.assertEqual(entry['number'], u'1149') |
| 849 | + self.assertEqual(entry['doi'], u'10.17487/rfc1149') |
| 850 | + self.assertEqual(entry['year'], u'1990') |
| 851 | + self.assertEqual(entry['month'], u'apr') |
| 852 | + self.assertEqual(entry['day'], u'1') |
| 853 | + |
| 854 | + draft = DocumentFactory.create() |
| 855 | + docname = u'%s-%s' % (draft.name, draft.rev) |
| 856 | + bibname = docname[6:] # drop the 'draft-' prefix |
| 857 | + url = urlreverse('ietf.doc.views_doc.document_bibtex', kwargs=dict(name=draft.name)) |
| 858 | + r = self.client.get(url) |
| 859 | + entry = bibtexparser.loads(r.content).get_entry_dict()[bibname] |
| 860 | + self.assertEqual(entry['note'], u'Work in Progress') |
| 861 | + self.assertEqual(entry['number'], docname) |
| 862 | + self.assertEqual(entry['year'], str(draft.pub_date().year)) |
| 863 | + self.assertEqual(entry['month'], draft.pub_date().strftime('%b').lower()) |
| 864 | + self.assertEqual(entry['day'], str(draft.pub_date().day)) |
| 865 | + # |
| 866 | + self.assertNotIn('doi', entry) |
| 867 | + |
813 | 868 | class AddCommentTestCase(TestCase): |
814 | 869 | def test_add_comment(self): |
815 | 870 | draft = make_test_data() |
|
0 commit comments