def setUp(self):
     self.form_dct_maker = CitationFormDctMaker()
     self.qdct = QueryDict( '', mutable=True )
class CitationFormDctMakerTest( TestCase ):
    """ Checks CitationFormDctMaker() functions. """

    def setUp(self):
        self.form_dct_maker = CitationFormDctMaker()
        self.qdct = QueryDict( '', mutable=True )

    ## make_form_dct() checks ##

    def test_make_form_dct__oclc_value(self):
        """ Checks removal of accessionnumber tags. """
        dct = { 'some_oclc_key': '<accessionnumber>1234</accessionnumber>' }
        self.qdct.update(dct)
        self.assertEqual( {
            u'atitle': u'Unknown',
            u'au': u'',
            u'date': u'',
            u'id': u'',
            u'issue': u'',
            u'issn': u'',
            u'jtitle': u'',
            u'pages': u'',
            u'some_oclc_key': u'1234',
            u'volume': u''},
            self.form_dct_maker.make_form_dct( self.qdct )
            )

    def test_make_form_dct__id_and_doi(self):
        """ Checks removal of 'doi' from value. """
        dct = { 'id': 'doi:1234' }
        self.qdct.update(dct)
        self.assertEqual(
            {u'au': u'', u'date': u'', u'pages': u'', 'volume': '', 'issue': '', 'id': '1234', 'atitle': 'Unknown', u'jtitle': u'', u'issn': u''},
            self.form_dct_maker.make_form_dct( self.qdct )
            )

    def test_make_form_dct__doi_key(self):
        """ Checks conversion of doi-key to id-key. """
        dct = { 'doi': '1234' }
        self.qdct.update(dct)
        self.assertEqual(
            {'atitle': 'Unknown', u'au': u'', u'date': u'', 'id': '1234', 'issue': '', u'pages': u'', 'volume': '', u'jtitle': u'', u'issn': u''},
            self.form_dct_maker.make_form_dct( self.qdct )
            )

    def test_make_form_dct__simple_isbn(self):
        """ Checks plain isbn. """
        dct = { 'isbn': '1234' }
        self.qdct.update(dct)
        self.assertEqual(
            {u'au': u'', u'btitle': None, u'date': u'', u'id': u'', u'isbn': u'1234',u'pages': u'', u'place': None, u'pub': None},
            self.form_dct_maker.make_form_dct( self.qdct )
            )



    def test_make_form_dct__article_openurl(self):
        """ Checks large openurl with issn and doi. """
        bibjson_dct = {
            u'_openurl': u'rft_val_fmt=info%3Aofi/fmt%3Akev%3Amtx%3Ajournal&rfr_id=info%3Asid/info%3Asid/info%3Asid/&rft.issue=3&rft.au=Schwenke%2C+K.+D.&rft.eissn=1611-6070&rft.pages=303+-+EOA&rft_id=info%3Adoi/10.1002/food.19720160319&rft.date=1972&rft.volume=16&rft.atitle=Structure%2C+Function+and+Evolution+in+Proteins.+Brookhaven+Symposia+in+Biology+No.+21%2C+Report+of+Symposium+held+June+3%3F5%2C+1968%2C+BNL+50116+%28C%3F53%29+Volume+I+and+II+of+II%2C+428+Seiten+mit+zahlreichen+Abb.+und+Tab.%2C+Biology+Department%2C+Brookhaven+National+Laboratory%2C+Upton%2C+New+York+1969.+Preis+%28printed+copy%29%3A+3.00+%24&ctx_ver=Z39.88-2004&rft.jtitle=Die+Nahrung&rft.issn=0027-769X&rft.genre=article&rft.spage=303',
            u'_rfr': u'info:sid/info:sid/',
            u'author': [{u'name': u'Schwenke, K. D.'}],
            u'identifier': [
                {u'id': u'doi:10.1002/food.19720160319', u'type': u'doi'},
                {u'id': u'0027-769X', u'type': u'issn'},
                {u'id': u'1611-6070', u'type': u'eissn'}],
            u'issue': u'3',
            u'journal': {u'name': u'Die Nahrung'},
            u'pages': u'303 - EOA',
            u'start_page': u'303',
            u'title': u'Structure, Function and Evolution in Proteins. Brookhaven Symposia in Biology No. 21, Report of Symposium held June 3?5, 1968, BNL 50116 (C?53) Volume I and II of II, 428 Seiten mit zahlreichen Abb. und Tab., Biology Department, Brookhaven National Laboratory, Upton, New York 1969. Preis (printed copy): 3.00 $',
            u'type': u'article',
            u'volume': u'16',
            u'year': u'1972'}
        self.qdct.update( bibjson_dct )
        form_dct = self.form_dct_maker.make_form_dct( self.qdct )
        self.assertEqual( '303-EOA', form_dct['pages'] )
        self.assertEqual( '10.1002/food.19720160319', form_dct['id'] )
        self.assertEqual( '0027-769X', form_dct['issn'] )
        self.assertEqual( {
            u'atitle': u'Structure, Function and Evolution in Proteins. Brookhaven Symposia in Biology No. 21, Report of Symposium held June 3?5, 1968, BNL 50116 (C?53) Volume I and II of II, 428 Seiten mit zahlreichen Abb. und Tab., Biology Department, Brookhaven National Laboratory, Upton, New York 1969. Preis (printed copy): 3.00 $',
            # u'issn': u'doi:10.1002/food.19720160319',
            'id': '10.1002/food.19720160319',
            'issn': '0027-769X',
            u'start_page': u'303',
            u'title': u'Structure, Function and Evolution in Proteins. Brookhaven Symposia in Biology No. 21, Report of Symposium held June 3?5, 1968, BNL 50116 (C?53) Volume I and II of II, 428 Seiten mit zahlreichen Abb. und Tab., Biology Department, Brookhaven National Laboratory, Upton, New York 1969. Preis (printed copy): 3.00 $',
            u'issue': u'3',
            u'journal': {u'name': u'Die Nahrung'},
            u'author': {u'name': u'Schwenke, K. D.'},
            u'year': u'1972',
            u'_openurl': u'rft_val_fmt=info%3Aofi/fmt%3Akev%3Amtx%3Ajournal&rfr_id=info%3Asid/info%3Asid/info%3Asid/&rft.issue=3&rft.au=Schwenke%2C+K.+D.&rft.eissn=1611-6070&rft.pages=303+-+EOA&rft_id=info%3Adoi/10.1002/food.19720160319&rft.date=1972&rft.volume=16&rft.atitle=Structure%2C+Function+and+Evolution+in+Proteins.+Brookhaven+Symposia+in+Biology+No.+21%2C+Report+of+Symposium+held+June+3%3F5%2C+1968%2C+BNL+50116+%28C%3F53%29+Volume+I+and+II+of+II%2C+428+Seiten+mit+zahlreichen+Abb.+und+Tab.%2C+Biology+Department%2C+Brookhaven+National+Laboratory%2C+Upton%2C+New+York+1969.+Preis+%28printed+copy%29%3A+3.00+%24&ctx_ver=Z39.88-2004&rft.jtitle=Die+Nahrung&rft.issn=0027-769X&rft.genre=article&rft.spage=303',
            u'volume': u'16',
            u'au': u'Schwenke, K. D.',
            u'_rfr': u'info:sid/info:sid/',
            u'date': u'1972',
            u'identifier': {u'type': u'doi', u'id': u'doi:10.1002/food.19720160319'},
            u'type': u'article',
            u'pages': u'303-EOA',
            u'jtitle': u'Die Nahrung'},
            self.form_dct_maker.make_form_dct(self.qdct)
            )



    def test_make_form_dct__book_openurl(self):
        """ Checks large openurl with no isbn. """
        dct = {
            'aufirst': 'T\u014dichi',
            'aulast': 'Yoshioka',
            'date': '1978',
            'genre': 'book',
            'id': '',
            'pid': '6104671<fssessid>0</fssessid><edition>1st ed.</edition>',
            'req_dat': '<sessionid>0</sessionid>',
            'rfe_dat': '6104671',
            'rfr_id': 'info:sid/firstsearch.oclc.org:WorldCat',
            'rft.aufirst': 'T\u014dichi',
            'rft.aulast': 'Yoshioka',
            'rft.btitle': 'Zen',
            'rft.date': '1978',
            'rft.edition': '1st ed.',
            'rft.genre': 'book',
            'rft.place': 'Osaka  Japan',
            'rft.pub': 'Hoikusha',
            'rft_id': 'info:oclcnum/6104671',
            'rft_val_fmt': 'info:ofi/fmt:kev:mtx:book',
            'sid': 'FirstSearch:WorldCat',
            'title': 'Zen',
            'url_ver': 'Z39.88-2004'}
        self.qdct.update(dct)
        self.assertEqual(
            {'au': 'Yoshioka, T\u014dichi',
             'aufirst': 'T\u014dichi',
             'aulast': 'Yoshioka',
             'btitle': 'Zen',
             'date': '1978',
             'genre': 'book',
             'id': '',
             'pid': '6104671<fssessid>0</fssessid><edition>1st ed.</edition>',
             u'pages': u'',
             'place': 'Osaka  Japan',
             'pub': 'Hoikusha',
             'req_dat': '<sessionid>0</sessionid>',
             'rfe_dat': '6104671',
             'rfr_id': 'info:sid/firstsearch.oclc.org:WorldCat',
             'rft.aufirst': 'T\u014dichi',
             'rft.aulast': 'Yoshioka',
             'rft.btitle': 'Zen',
             'rft.date': '1978',
             'rft.edition': '1st ed.',
             'rft.genre': 'book',
             'rft.place': 'Osaka  Japan',
             'rft.pub': 'Hoikusha',
             'rft_id': 'info:oclcnum/6104671',
             'rft_val_fmt': 'info:ofi/fmt:kev:mtx:book',
             'sid': 'FirstSearch:WorldCat',
             'title': 'Zen',
             'url_ver': 'Z39.88-2004'}, self.form_dct_maker.make_form_dct( self.qdct )
            )