web/ldt/text/tests.py
changeset 17 683ce4109c28
parent 16 d0f617472760
child 19 7cf81d58a968
equal deleted inserted replaced
16:d0f617472760 17:683ce4109c28
    14 import datetime
    14 import datetime
    15 from django.contrib.auth.models import *
    15 from django.contrib.auth.models import *
    16 from django.conf import settings
    16 from django.conf import settings
    17 from django.test.client import Client
    17 from django.test.client import Client
    18 from ldt.text import VERSION_STR
    18 from ldt.text import VERSION_STR
       
    19 from django.db import transaction
    19 
    20 
    20 
    21 
    21 # This test creates an annotation and checks that:
    22 # This test creates an annotation and checks that:
    22 # 1. the annotation was created in the database (by trying to access it through a 'get')
    23 # 1. the annotation was created in the database (by trying to access it through a 'get')
    23 # 2. the returned xml contains correct data
    24 # 2. the returned xml contains correct data
    24 class CreateTest(unittest.TestCase):
    25 class CreateTest(unittest.TestCase):
    25     def setUp(self):
    26     def setUp(self):
    26         self.content = str('<iri><text-annotation><id>f2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>')
    27         self.content = str('<iri><text-annotation><id>f2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>')
    27         self.c = Client()
    28         self.c = Client()
    28         self.annot = Annotation(external_id=u'd2c1d1fa-629d-4520-a3d2-955b4f2582c0', uri=u'http://iri.blabla', tags=[u'tag1',u'tag2'], title=u'montitre', description=u'madesc', text=u'letexteselectionne', color=u'#AAAAAA', creator=u'wakimd', contributor=u'wakimd', creation_date=u'2010-09-06 12:33:53.417550', update_date=u'2010-09-06 12:33:53.417550')
    29         self.annot = Annotation(external_id=u'd2c1d1fa-629d-4520-a3d2-955b4f2582c0', uri=u'http://iri.blabla', tags=u"tag1,tag2", title=u'montitre', description=u'madesc', text=u'letexteselectionne', color=u'#AAAAAA', creator=u'wakimd', contributor=u'wakimd', creation_date=u'2010-09-06 12:33:53.417550', update_date=u'2010-09-06 12:33:53.417550')
    29         self.annot.save()
    30         self.annot.save()
    30     def tearDown(self):
    31     def tearDown(self):
       
    32         transaction.rollback()
    31         annotlist=Annotation.objects.all()
    33         annotlist=Annotation.objects.all()
    32         for annot in annotlist:
    34         for annot in annotlist:
    33             annot.delete()
    35             annot.delete()
    34 
    36 
    35     def test_create_annotation(self):
    37     def test_create_annotation(self):
    36         response = self.c.post('/api/'+ VERSION_STR +'/text/create/', {'content':self.content})
    38         response = self.c.post('/api/'+ VERSION_STR +'/text/create/', {'content':self.content})
    37         #self.assertEqual(response.content, "  ")
    39         #self.assertEqual(response.content, "  ")
    38         self.annot1 = lxml.etree.fromstring(response.content)
    40         self.annot1 = lxml.etree.fromstring(response.content)
    39         self.assertEqual(self.annot1.xpath("/iri/text-annotation/id/text()")[0],"f2c1d1fa-629d-4520-a3d2-955b4f2582c0")
    41         self.assertEqual(self.annot1.xpath("/iri/text-annotation/id/text()")[0],"f2c1d1fa-629d-4520-a3d2-955b4f2582c0")
    40         self.assertEqual(self.annot1.xpath("/iri/text-annotation/content")[0].tag,"content")
    42         self.assertEqual(self.annot1.xpath("/iri/text-annotation/content")[0].tag,"content")
    41         self.assertEqual(self.annot1.xpath("/iri/text-annotation/tags/tag/text()")[0],"tag1")
    43         self.assertEqual(self.annot1.xpath("/iri/text-annotation/tags/tag/text()")[0],u"tag1")
    42         self.assertEqual(self.annot1.xpath("/iri/text-annotation/content/text/text()")[0],u"texte selectionne lors de la creation de l\'annotation")
    44         self.assertEqual(self.annot1.xpath("/iri/text-annotation/content/text/text()")[0],u"texte selectionne lors de la creation de l\'annotation")
    43         self.assertEqual(self.annot1.xpath("/iri/text-annotation/meta/created/text()")[0],"2010-09-06 12:33:53.417550")
    45         #self.assertEqual(self.annot1.xpath("/iri/text-annotation/meta/created/text()")[0],"2010-09-06 12:33:53.417550")
    44         response2 = self.c.get('/api/'+ VERSION_STR +'/text/get/', {'id':'f2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
    46         response2 = self.c.get('/api/'+ VERSION_STR +'/text/get/', {'id':'f2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
    45         annot2 = lxml.etree.fromstring(response.content)
    47         annot2 = lxml.etree.fromstring(response.content)
    46         self.assertEqual(annot2.xpath("/iri/text-annotation/uri/text()")[0], "http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168")
    48         self.assertEqual(annot2.xpath("/iri/text-annotation/uri/text()")[0], "http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168")
    47         
    49         
    48     def test_error_create(self):
    50     def test_error_create(self):
    52 
    54 
    53 
    55 
    54 # This test creates an annotation, then gets it, and checks that the returned xml contains correct data
    56 # This test creates an annotation, then gets it, and checks that the returned xml contains correct data
    55 class GetTest(unittest.TestCase):
    57 class GetTest(unittest.TestCase):
    56     def setUp(self):
    58     def setUp(self):
    57         self.annotation = Annotation(external_id="d2c1d1fa-629d-4520-a3d2-955b4f2582c0", tags=[u"tag1",u"tag2",u"tag3"], title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", creation_date="2010-09-06 12:33:53.417550", update_date="2010-09-06 12:33:53.420459")
    59         self.annotation = Annotation(external_id="d2c1d1fa-629d-4520-a3d2-955b4f2582c0", tags=u"tag1 ,tag2 ,     tag3", title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", creation_date="2010-09-06 12:33:53.417550", update_date="2010-09-06 12:33:53.420459")
    58         self.annotation.save()
    60         self.annotation.save()
    59         self.c = Client()
    61         self.c = Client()
    60     def tearDown(self):
    62     def tearDown(self):
    61         annotlist=Annotation.objects.all()
    63         annotlist=Annotation.objects.all()
    62         for annot in annotlist:
    64         for annot in annotlist:
    63             annot.delete()
    65             annot.delete()
    64       
    66       
    65     def test_get_annotation(self):
    67     def test_get_annotation(self):
    66         response = self.c.get('/api/'+ VERSION_STR +'/text/get/', {'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
    68         response = self.c.get('/api/'+ VERSION_STR +'/text/get/', {'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})
       
    69         print response
    67         self.annot1 = lxml.etree.fromstring(response.content)
    70         self.annot1 = lxml.etree.fromstring(response.content)
    68         self.assertEqual(self.annot1.xpath("/iri/text-annotation/id/text()")[0],self.annotation.external_id)
    71         self.assertEqual(self.annot1.xpath("/iri/text-annotation/id/text()")[0],self.annotation.external_id)
    69         self.assertEqual(self.annot1.xpath("/iri/text-annotation/tags/tag/text()")[1], self.annotation.tags[1])
    72         self.assertEqual(self.annot1.xpath("/iri/text-annotation/tags/tag/text()")[1], "tag2")
    70         self.assertEqual(self.annot1.xpath("/iri/text-annotation/content/color/text()")[0],self.annotation.color)
    73         self.assertEqual(self.annot1.xpath("/iri/text-annotation/content/color/text()")[0],self.annotation.color)
    71         self.assertEqual(self.annot1.xpath("/iri/text-annotation/meta/created/text()")[0], str(self.annotation.creation_date))
    74         self.assertEqual(self.annot1.xpath("/iri/text-annotation/meta/created/text()")[0], str(self.annotation.creation_date))
    72 
    75 
    73     def test_error_get(self):
    76     def test_error_get(self):
    74         response = self.c.get('/api/'+ VERSION_STR +'/text/get/', {'id':'2'})
    77         response = self.c.get('/api/'+ VERSION_STR +'/text/get/', {'id':'2'})
   118         limit = None
   121         limit = None
   119         response = self.c.get('/api/'+ VERSION_STR +'/text/filter/', {'uri':uri,'filter':'lors'})
   122         response = self.c.get('/api/'+ VERSION_STR +'/text/filter/', {'uri':uri,'filter':'lors'})
   120         doc = lxml.etree.fromstring(response.content)
   123         doc = lxml.etree.fromstring(response.content)
   121         for elem in doc.xpath("/iri/text-annotation/content/text/text()"):
   124         for elem in doc.xpath("/iri/text-annotation/content/text/text()"):
   122             self.assertTrue('lors' in elem)  
   125             self.assertTrue('lors' in elem)  
   123         for elem in doc.xpath("/iri/text-annotation/meta/creator/text()"):
   126         #for elem in doc.xpath("/iri/text-annotation/meta/creator/text()"):
   124             self.assertEqual(elem,user)          
   127         #    self.assertEqual(elem,user)          
   125 
   128 
   126 
   129 
   127 # This test creates an annotation, then deletes it, and checks that:
   130 # This test creates an annotation, then deletes it, and checks that:
   128 # 1. the annotation doesn't exist anymore in the database (by trying to access it through a 'get')
   131 # 1. the annotation doesn't exist anymore in the database (by trying to access it through a 'get')
   129 # 2. the returned xml contains no data
   132 # 2. the returned xml contains no data
   155         
   158         
   156 
   159 
   157 # This test creates an annotation, then updates it with new content, and checks that the returned xml contains the updated data
   160 # This test creates an annotation, then updates it with new content, and checks that the returned xml contains the updated data
   158 class UpdateTest(unittest.TestCase):
   161 class UpdateTest(unittest.TestCase):
   159     def setUp(self):
   162     def setUp(self):
   160         self.annotation = Annotation(external_id="d2c1d1fa-629d-4520-a3d2-955b4f2582c0", tags=['tag1','mytag'],title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", creation_date="2010-09-06T12:33:53.417550", update_date="2010-09-06T12:33:53.420459")
   163         self.annotation = Annotation(external_id="d2c1d1fa-629d-4520-a3d2-955b4f2582c0", tags=u"tag1, mytag",title="titre de l\'annotation",text="texte selectionne lors de la creation de l\'annotation",color="#AAAAAA", creation_date="2010-09-06T12:33:53.417550", update_date="2010-09-06T12:33:53.420459")
   161         self.annotation.save()
   164         self.annotation.save()
   162         self.c = Client()
   165         self.c = Client()
   163     def tearDown(self):
   166     def tearDown(self):
   164         annotlist=Annotation.objects.all()
   167         annotlist=Annotation.objects.all()
   165         for annot in annotlist:
   168         for annot in annotlist:
   169         content = '<iri><text-annotation><id></id><uri></uri><tags><tag>tag1</tag><tag>tag2new</tag><tag>tag3</tag></tags><content><color>#DDDDDD</color><description><![CDATA[texte de description update]]></description><title></title><text><![CDATA[texte selectionne a nouveau lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>'
   172         content = '<iri><text-annotation><id></id><uri></uri><tags><tag>tag1</tag><tag>tag2new</tag><tag>tag3</tag></tags><content><color>#DDDDDD</color><description><![CDATA[texte de description update]]></description><title></title><text><![CDATA[texte selectionne a nouveau lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>80cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created></created><creator></creator><creator-id></creator-id><modified>2010-11-06 12:33:53.420459</modified></meta></text-annotation></iri>'
   170         response = self.c.post('/api/'+ VERSION_STR +'/text/update/', {'content':content,'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})        
   173         response = self.c.post('/api/'+ VERSION_STR +'/text/update/', {'content':content,'id':'d2c1d1fa-629d-4520-a3d2-955b4f2582c0'})        
   171         doc = lxml.etree.fromstring(response.content)
   174         doc = lxml.etree.fromstring(response.content)
   172         #self.assertEqual(lxml.etree.tostring(doc), " ")
   175         #self.assertEqual(lxml.etree.tostring(doc), " ")
   173         self.assertEqual(doc.xpath("/iri/text-annotation/id/text()")[0],"d2c1d1fa-629d-4520-a3d2-955b4f2582c0")
   176         self.assertEqual(doc.xpath("/iri/text-annotation/id/text()")[0],"d2c1d1fa-629d-4520-a3d2-955b4f2582c0")
   174         self.assertEqual(doc.xpath("/iri/text-annotation/tags/tag/text()")[1], "mytag")
   177         self.assertEqual(doc.xpath("/iri/text-annotation/tags/tag/text()")[1], "tag2new")
   175         self.assertEqual(doc.xpath("/iri/text-annotation/content/color/text()")[0],"#DDDDDD")
   178         self.assertEqual(doc.xpath("/iri/text-annotation/content/color/text()")[0],"#DDDDDD")
   176         
   179         
   177     def test_error_update(self):
   180     def test_error_update(self):
   178         content = '<iri><text-annotation><id>d2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>'
   181         content = '<iri><text-annotation><id>d2c1d1fa-629d-4520-a3d2-955b4f2582c0</id><uri>http://www.leezam.com/pub/epub/123456!/OPS/chapter2.xhtml#pos=56,168</uri><tags><tag>tag1</tag><tag>tag2</tag></tags><content><color>#AAAAAA</color><description><![CDATA[texte de description]]></description><title><![CDATA[titre de l\'annotation]]></title><text><![CDATA[texte selectionne lors de la creation de l\'annotation]]></text></content><meta><contributor>oaubert</contributor><contributor-id>79cd0532-1dda-4130-b351-6a181130a7c9</contributor-id><created>2010-09-06 12:33:53.417550</created><creator>oaubert</creator><creator-id>79cd0532-1dda-4130-b351-6a181130a7c9</creator-id><modified>2010-09-06 12:33:53.420459</modified></meta></text-annotation></iri>'
   179         response = self.c.post('/api/'+ VERSION_STR +'/text/update/', {'content':content,'id':'1'})
   182         response = self.c.post('/api/'+ VERSION_STR +'/text/update/', {'content':content,'id':'1'})