class DecoratorTests(unittest.TestCase):

    def setUp(self):
        self.owner = User.objects.create_user(username='******',
                email='*****@*****.**', password='******')
        self.publication = Publication(title='Some Publication')

        self.publication.title = "Some publication"
        self.publication.owner = self.owner
        self.publication.save()

        self.decorator = OaiPmhDecorator()

    def tearDown(self):
        User.objects.all().delete()
        Publication.objects.all().delete()

    @unittest.skip("Takes too long to run - CiteSeer query")
    def test_valid_doi(self):
        self.publication.doi = '10.1.1.119.2204'
        self.decorator.decorate_publication(self.publication)
        self.assertNotEqual(self.publication.decorated, None)

    def test_invalid_doi(self):
        self.publication.doi = 'wrongdoi'
        self.assertRaises(InvalidDataException, self.decorator.decorate_publication, self.publication)
    def setUp(self):
        self.owner = User.objects.create_user(username='******',
                email='*****@*****.**', password='******')
        self.publication = Publication(title='Some Publication')

        self.publication.title = "Some publication"
        self.publication.owner = self.owner
        self.publication.save()

        self.decorator = OaiPmhDecorator()
 def GET(request, publication_id, meta=None):
     """Returns the information about the publication.
     
     If a publication is in review only an editor or referee of the reviewing
     group should be allowed to see it."""
     try:
         publication = Publication.objects.get(id=publication_id)
         if publication.review_status == 3:
             return PublicationDetail._get_restricted_publication(request, publication)
         if meta:
             oai = OaiPmhDecorator()
             try:
                 publication = oai.decorate_publication(publication)
             except InvalidDataException, exc:
                 logger.error(exc)
                 response = HttpResponse(exc.message)
                 response.status_code = RestView.BAD_REQUEST_STATUS
                 return response
         values = {'publication': publication}
         response = RestView.render_response(request, 'publication', values)