def setUp(self): a = Citation( name="line", refsDecl="/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n='$1' and @type='section']/tei:div[@n='$2']/tei:l[@n='$3']" ) b = Citation( name="poem", child=a, refsDecl="/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n='$1' and @type='section']/tei:div[@n='$2']" ) self.citation = Citation( name="book", child=b, refsDecl="/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n='$1' and @type='section']" ) self.endpoint = HttpCtsRetriever("http://services.perseids.org/remote/cts")
def setUp(self): a = Citation( name="line" ) b = Citation( name="poem", child=a ) self.citation = Citation( name="book", child=b ) self.url = "http://services.perseids.org/remote/cts" self.endpoint = HttpCtsRetriever(self.url) self.endpoint.getPassage = mock.MagicMock(return_value=GET_PASSAGE) self.endpoint.getPrevNextUrn = mock.MagicMock(return_value=NEXT_PREV) self.endpoint.getValidReff = mock.MagicMock(return_value=GET_VALID_REFF) self.endpoint.getFirstUrn = mock.MagicMock(return_value=Get_FIRST) self.text = CtsText("urn:cts:latinLit:phi1294.phi002.perseus-lat2", self.endpoint, citation=self.citation)
def test_str(self): a = Citation(name="book", xpath="/tei:div[@n=\"?\"]", scope="/tei:TEI/tei:body/tei:text/tei:div") self.assertEqual( a.export(Mimetypes.XML.TEI), "<tei:cRefPattern n=\"book\" matchPattern=\"(\\w+)\" replacementPattern=\"#xpath(/tei:TEI/tei:body/tei:text/tei:div/tei:div[@n=\"$1\"])\"><tei:p>This pointer pattern extracts book</tei:p></tei:cRefPattern>" ) b = Citation( name="chapter", xpath="/tei:div[@n=\"?\"]", scope="/tei:TEI/tei:body/tei:text/tei:div/tei:div[@n=\"?\"]") self.assertEqual( b.export(Mimetypes.XML.TEI), "<tei:cRefPattern n=\"chapter\" matchPattern=\"(\\w+)\.(\\w+)\" replacementPattern=\"#xpath(/tei:TEI/tei:body/tei:text/tei:div/tei:div[@n=\"$1\"]/tei:div[@n=\"$2\"])\"><tei:p>This pointer pattern extracts chapter</tei:p></tei:cRefPattern>" ) a = Citation() self.assertEqual(a.export(Mimetypes.XML.TEI), "")
def test_ingest_single(self): b = xmlparser(""" <tei:tei xmlns:tei="http://www.tei-c.org/ns/1.0"> <tei:cRefPattern n="line" matchPattern="(\\w+).(\\w+).(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n='$1']/tei:div[@n='$2']/tei:l[@n='$3'])"> <tei:p>This pointer pattern extracts book and poem and line</tei:p> </tei:cRefPattern> </tei:tei> """.replace("\n", "").replace("\s+", " ")) a = Citation.ingest(b) self.assertEqual( a.export(Mimetypes.XML.TEI), """<tei:cRefPattern n="line" matchPattern="(\\w+)\.(\\w+)\.(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n=\'$1\']/tei:div[@n=\'$2\']/tei:l[@n=\'$3\'])"><tei:p>This pointer pattern extracts line</tei:p></tei:cRefPattern>""" )
def test_ingest_single_and(self): text = xmlparser(""" <tei:tei xmlns:tei="http://www.tei-c.org/ns/1.0"> <tei:cRefPattern n="section" matchPattern="(.+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div[@type='edition']/tei:div[@n='$1' and @type='section'])" /> </tei:tei> """.replace("\n", "").replace("\s+", " ")) citation = Citation.ingest(text) self.maxDiff = None self.assertEqual( citation.export(Mimetypes.XML.TEI), """<tei:cRefPattern n="section" matchPattern="(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div[@type='edition']/tei:div[@n=\'$1\' and @type='section'])"><tei:p>This pointer pattern extracts section</tei:p></tei:cRefPattern>""" ) self.assertEqual( citation.scope, "/tei:TEI/tei:text/tei:body/tei:div[@type='edition']") self.assertEqual(citation.xpath, "/tei:div[@n='?' and @type='section']") self.assertEqual( citation.fill("1"), "/tei:TEI/tei:text/tei:body/tei:div[@type='edition']/tei:div[@n=\'1\' and @type='section']" )
def test_ingest_multiple(self): b = xmlparser(""" <tei:tei xmlns:tei="http://www.tei-c.org/ns/1.0"> <tei:cRefPattern n="line" matchPattern="(\\w+).(\\w+).(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n='$1' and @type='section']/tei:div[@n='$2']/tei:l[@n='$3'])"> <tei:p>This pointer pattern extracts line</tei:p> </tei:cRefPattern> <tei:cRefPattern n="poem" matchPattern="(\\w+).(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n='$1']/tei:div[@n='$2'])"> <tei:p>This pointer pattern extracts poem</tei:p> </tei:cRefPattern> <tei:cRefPattern n="book" matchPattern="(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n='$1'])"> <tei:p>This pointer pattern extracts book</tei:p> </tei:cRefPattern> </tei:tei> """.replace("\n", "").replace("\s+", " ")) a = Citation.ingest(b) self.assertEqual( a.export(Mimetypes.XML.TEI), """<tei:cRefPattern n="book" matchPattern="(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n=\'$1\'])"><tei:p>This pointer pattern extracts book</tei:p></tei:cRefPattern>""" ) self.assertEqual( a.child.export(Mimetypes.XML.TEI), """<tei:cRefPattern n="poem" matchPattern="(\\w+)\.(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n=\'$1\']/tei:div[@n=\'$2\'])"><tei:p>This pointer pattern extracts poem</tei:p></tei:cRefPattern>""" ) self.assertEqual( a.child.child.export(Mimetypes.XML.TEI), """<tei:cRefPattern n="line" matchPattern="(\\w+)\.(\\w+)\.(\\w+)" replacementPattern="#xpath(/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n=\'$1\' and @type=\'section\']/tei:div[@n=\'$2\']/tei:l[@n=\'$3\'])"><tei:p>This pointer pattern extracts line</tei:p></tei:cRefPattern>""" ) self.assertEqual( a.child.child.fill(CtsReference("1.2.3")), "/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n=\'1\' and @type=\'section\']/tei:div[@n=\'2\']/tei:l[@n=\'3\']" )
def test_ingest_none(self): """ When list of node is empty or when not a list nor a node """ a = Citation.ingest([]) self.assertEqual(a, None) a = Citation.ingest({}) self.assertEqual(a, None)