Created
June 7, 2010 14:43
-
-
Save durdn/428745 to your computer and use it in GitHub Desktop.
tests.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from StringIO import StringIO | |
from datetime import datetime | |
from django.test import TestCase | |
import settings | |
from tms.parser import TMSParser, TMSAuthorParser | |
from tms.query import QueryProcessor | |
from collectie.collections.models import TMSObject | |
from IPython.Shell import IPShellEmbed | |
ipshell = IPShellEmbed() | |
class TestTMSParser(TestCase): | |
def setUp(self): | |
self.p = TMSParser(disable_validation = True) | |
def test_validation(self): | |
sample_response = file('apps/tms/samples/coco-single-2.xml') | |
self.assertTrue(self.p.validate(sample_response)) | |
def test_parse_records(self): | |
sample_response = file('apps/tms/samples/coco-single-1.xml') | |
records = self.p.parse(sample_response) | |
r = records[0] | |
self.assertEqual(u'99 (KN&V)',r.identifier) | |
self.assertEqual('1704 - 1709',r.temporal['nl']) | |
self.assertEqual('Kunstnijverheid en vormgeving',r.departement) | |
self.assertEqual([u'Johann Simon Rothaer'],r.creator) | |
self.assertEqual(u'99 (KN&V)_1.JPG',r.primary_image) | |
self.assertEqual([u'99 (KN&V)_2.JPG'],r.image[0]) | |
self.assertEqual('glas, radgravure,' ,r.resources[:17]) | |
self.assertEqual('Schenking /' ,r.credits[:11]) | |
self.assertEqual('Zaal 44' ,r.location) | |
def test_toren_van_babel(self): | |
sample_response = file('apps/tms/samples/toren-van-babel.xml') | |
records = self.p.parse(sample_response) | |
r = records[0] | |
self.assertEqual(u'2443 (OK)',r.identifier) | |
self.assertEqual('circa 1565',r.temporal['nl']) | |
self.assertEqual(u'De toren van Babel',r.title['nl']) | |
self.assertEqual(u'The tower of Babel',r.title['en']) | |
self.assertEqual('Oude Kunst',r.departement) | |
self.assertEqual([u'Pieter Bruegel de Oude'],r.creator) | |
self.assertEqual(u'0017_0023.jpg',r.primary_image) | |
self.assertEqual('olieverf op panee',r.resources[:17]) | |
self.assertEqual('Verworven m' ,r.credits[:11]) | |
self.assertEqual('Zaal 06' ,r.location) | |
self.assertEqual('2443 (OK)_2.jpg',r.image[1][0]) | |
self.assertEqual('Detail',r.image[1][1]['nl']) | |
self.assertEqual('2443 (OK)_E3.jpg',r.image[-1][0]) | |
self.assertEqual('Closeup van de Toren van Babel in de huiskamer van Van Beuningen',r.image[-1][1]['nl']) | |
self.assertEqual('http://62.221.199.226/BoijmansAudioVideo/EN\\5g.mp3',r.audio[-1][0]) | |
self.assertEqual('D.G. Van Beuningen',r.audio[-1][1]['en']) | |
self.assertEqual(['74,6','59,9'],r.dimensions) | |
self.assertEqual('schilderij',r.objectname['nl']) | |
def test_background(self): | |
sample_response = file('apps/tms/samples/background.xml') | |
records = self.p.parse(sample_response) | |
r = records[0] | |
self.assertEqual(u'3200 (OK)',r.identifier) | |
self.assertEqual('Het 1605',r.background['nl'][:8]) | |
self.assertEqual('The pain',r.background['en'][:8]) | |
self.assertEqual('schilderij',r.objectname['nl']) | |
def test_parse_records_2(self): | |
sample_response = file('apps/tms/samples/coco-single-2.xml') | |
records = self.p.parse(sample_response) | |
r = records[0] | |
self.assertEqual(u'2515 (OK)',r.identifier) | |
self.assertEqual('1633 - 1635',r.temporal['nl']) | |
self.assertEqual(u'The martyrdom of Saint Livinus',r.title['2']) | |
self.assertEqual(u'De marteling van de Heilige Livinus',r.title['1']) | |
self.assertEqual('Dit is een episode',r.description['nl'][:18]) | |
self.assertEqual('This is an episode',r.description['en'][:18]) | |
self.assertEqual('Oude Kunst',r.departement) | |
self.assertEqual([u'Peter Paul Rubens'],r.creator) | |
self.assertEqual(u'2515 cd OK.jpg',r.primary_image) | |
self.assertEqual('olieverf op panee',r.resources[:17]) | |
self.assertEqual('Verworven m' ,r.credits[:11]) | |
self.assertEqual('Zaal 13' ,r.location) | |
self.assertEqual(4 ,len(r.link)) | |
self.assertEqual('www.rubensonline.be/showDetail.asp?artworkID=100659]' ,r.link[0]) | |
def test_parse_multiple_records(self): | |
sample_response = file('apps/tms/samples/coco-1-20f.xml') | |
records = self.p.parse(sample_response) | |
self.assertEqual(20,len(records)) | |
r = records[1] | |
self.assertEqual('1633 - 1635',r.temporal['nl']) | |
self.assertEqual(u'The martyrdom of Saint Livinus',r.title['2']) | |
self.assertEqual(u'De marteling van de Heilige Livinus',r.title['1']) | |
self.assertEqual('Dit is een episode',r.description['nl'][:18]) | |
self.assertEqual('This is an episode',r.description['en'][:18]) | |
self.assertEqual('Oude Kunst',r.departement) | |
self.assertEqual([u'Peter Paul Rubens'],r.creator) | |
self.assertEqual(u'2515 cd OK.jpg',r.primary_image) | |
self.assertEqual('olieverf op panee',r.resources[:17]) | |
self.assertEqual('Verworven m' ,r.credits[:11]) | |
self.assertEqual('Zaal 13' ,r.location) | |
self.assertEqual(4 ,len(r.link)) | |
self.assertEqual('www.rubensonline.be/showDetail.asp?artworkID=100659]' ,r.link[0]) | |
class TestTMSAuthorParser(TestCase): | |
def setUp(self): | |
self.p = TMSAuthorParser(disable_validation = True) | |
def test_author(self): | |
sample_response = file('apps/tms/samples/author1.xml') | |
authors = self.p.parse(sample_response) | |
a = authors[0] | |
self.assertEqual(u'2616',a.ConstituentID) | |
self.assertEqual(u'C2616',a.ccidentifier) | |
self.assertEqual(u'Abraham van Beijeren',a.DisplayName) | |
self.assertEqual(u'1620',a.BeginDate) | |
self.assertEqual(u'1690',a.EndDate) | |
self.assertEqual(u'Abraham',a.FirstName) | |
self.assertEqual(u'Beijeren',a.LastName) | |
self.assertEqual(u'Den Haag 1620/1621 - Overschie 1690',a.DisplayDate) | |
self.assertEqual(u"Abraham van Beijeren's name appeared in 1816",a.biografie['en'][:44]) | |
self.assertEqual(u'Abraham van Beijerens naam dook in 1816 op a',a.biografie['nl'][:44]) | |
class TestAuthorManager(TestCase): | |
def test_author_update(self): | |
tms_object = TMSObject.records.find(identifier = 'St 90') | |
tms_object[0].update_author(lang='en') | |
self.assertEqual('Abraham van Beijeren', tms_object[0].author.DisplayName) | |
self.assertEqual('Abraham van Beijeren\'s name appeared in 1816', tms_object[0].author.biografie[:44]) | |
def test_simple_query(self): | |
authors = TMSObject.authors.find('Abraham van Beijeren') | |
self.failUnless(authors[0] != None) | |
self.assertEqual('C2616', authors[0].tms_id) | |
self.assertEqual('Abraham van Beijeren', authors[0].author.DisplayName) | |
class TestManager(TestCase): | |
def test_simple_query(self): | |
tms_object = TMSObject.records.filter(id = '2515 (OK)', test_response = 'apps/tms/samples/coco-single-2.xml')[0] | |
self.failUnless(tms_object != None) | |
self.assertEqual('2515 (OK)', tms_object.tms_id) | |
self.assertEqual(u'Peter Paul Rubens', tms_object.record.creator[0]) | |
def test_query_with_language(self): | |
tms_object = TMSObject.records.filter(id = '2515 (OK)', test_response = 'apps/tms/samples/coco-single-2.xml', lang='en')[0] | |
self.failUnless(tms_object != None) | |
self.assertEqual('2515 (OK)', tms_object.tms_id) | |
self.assertEqual(u'De marteling van de Heilige Livinus', tms_object.record.title) | |
def test_query_persists_tms_object(self): | |
tms_object = TMSObject.records.filter(id = '2515 (OK)', test_response = 'apps/tms/samples/coco-single-2.xml', lang='en')[0] | |
self.failUnless(tms_object != None) | |
try: | |
persisted_to = TMSObject.objects.get(tms_id = '2515 (OK)') | |
except TMSObject.DoesNotExist: | |
self.fail('tms object has not been persisted') | |
self.assertEqual('2515 (OK)', persisted_to.tms_id) | |
def test_search_page(self): | |
tms_objects = TMSObject.records.filter(query = 'fab:objectname=schilderij', start=1, end=10, lang='en') | |
self.assertEqual(10, len(tms_objects)) | |
o = tms_objects[2] | |
self.assertEqual('1990 (OK)',o.record.identifier) | |
class TestQueryProcessor(TestCase): | |
def setUp(self): | |
self.p = TMSParser(disable_validation = True) | |
if settings.INTEGRATION_TEST: | |
self.run=True | |
else: | |
self.run=False | |
def test_simple_query_process(self): | |
if not self.run: return | |
qp = QueryProcessor() | |
# r.identifier | |
response = qp.sru(query='dc.identifier = "id:2515 (OK)"') | |
self.assertTrue(self.p.validate(StringIO(response))) | |
# r.title | |
response = qp.sru(query='dc.title any "search string"') | |
pa = TMSParser() | |
self.assertTrue(self.p.validate(StringIO(response))) | |
# r.creator | |
response = qp.sru(query='dc.creator any "search string"') | |
pa = TMSParser() | |
self.assertTrue(self.p.validate(StringIO(response))) | |
def test_search_page_queries(self): | |
qp = QueryProcessor() | |
#title | |
response = qp.cit(query = 'dc:title=The martyrdom') | |
r = self.p.parse(StringIO(response))[0] | |
self.assertEqual('2515 (OK)',r.identifier) | |
#creator | |
response = qp.cit(query = 'fab:creator=Rubens',start=1,end=10) | |
rs = self.p.parse(StringIO(response)) | |
r = rs[0] | |
self.assertEqual('2515 (OK)',r.identifier) | |
#description | |
response = qp.cit(query = 'dc:description=missionary') | |
rs = self.p.parse(StringIO(response)) | |
r = rs[0] | |
self.assertEqual('2515 (OK)',r.identifier) | |
#temporal | |
response = qp.cit(query = 'fab:temporal=1633') | |
rs = self.p.parse(StringIO(response)) | |
r = rs[0] | |
self.assertEqual('2515 (OK)',r.identifier) | |
#material | |
response = qp.cit(query = 'fab:resources=glas') | |
rs = self.p.parse(StringIO(response)) | |
r = rs[0] | |
self.assertEqual('99 (KN&V)',r.identifier) | |
#objectname | |
response = qp.cit(query = 'fab:objectname=schilderij',start=1,end=10) | |
rs = self.p.parse(StringIO(response)) | |
r = rs[1] | |
self.assertEqual('1982 (OK)',r.identifier) | |
def test_find(self): | |
if not self.run: return | |
qp = QueryProcessor() | |
response = qp.find(identifier = 'id:2515 (OK)') | |
self.assertTrue(self.p.validate(StringIO(response))) | |
try: | |
response = qp.find(identifier = 'id:2515 (OK)', title = 'title') | |
self.fail('an exception shouldve been thrown') | |
except NotImplementedError: | |
pass |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment