#$Header: /var/local/cvsroot/4Suite/test/Server/Common/test_documentreference.py,v 1.6 2004/11/15 18:29:58 lmorillas Exp $ import tempfile, os, time from Ft.Server import FTSS_URI_SCHEME from Ft.Lib.Uri import OsPathToUri, BASIC_RESOLVER from Ft.Server.Common import DocumentReference from Ft.Xml.Xslt import Stylesheet from Server.Server.SCore import test_helper def test_internal(tester): tester.startTest("Internal Document Reference to Dom") repo = test_helper.GetRepo(tester) dr = DocumentReference.InternalDocumentReference("/test/doc1") dom = dr.toDom(repo) tester.compare('docelem', dom.documentElement.localName) repo.txRollback() tester.testDone() tester.startTest("Internal Document Reference to Stylesheet") repo = test_helper.GetRepo(tester) dr = DocumentReference.InternalDocumentReference("/test/sheet1") dom = dr.toStylesheet(repo) tester.compare(1, isinstance(dom, Stylesheet.StylesheetElement)) repo.txRollback() tester.testDone() tester.startTest("Internal Document Reference to Schematron") repo = test_helper.GetRepo(tester) dr = DocumentReference.InternalDocumentReference("/test/schema1") dom = dr.toSchematron(repo) tester.compare(1, isinstance(dom, Stylesheet.StylesheetElement)) repo.txRollback() tester.testDone() def test_external(tester): fileName = tempfile.mktemp() file = open(fileName, 'w') file.write(DOC1) file.close() try: tester.startTest("External Document Reference to Dom") repo = test_helper.GetRepo(tester) dr = DocumentReference.ExternalDocumentReference(OsPathToUri(fileName)) dom = dr.toDom(repo) tester.compare('docelem', dom.documentElement.localName) repo.txRollback() tester.testDone() finally: os.unlink(fileName) fileName = tempfile.mktemp() file = open(fileName, 'w') file.write(SHEET1) file.close() try: tester.startTest("External Document Reference to Stylesheet") repo = test_helper.GetRepo(tester) dr = DocumentReference.ExternalDocumentReference(OsPathToUri(fileName)) dom = dr.toStylesheet(repo) tester.compare(1, isinstance(dom, Stylesheet.StylesheetElement)) repo.txRollback() tester.testDone() finally: os.unlink(fileName) fileName = tempfile.mktemp() file = open(fileName, 'w') file.write(SCHEMA1) file.close() try: tester.startTest("External Document Reference to Schematron") repo = test_helper.GetRepo(tester) dr = DocumentReference.ExternalDocumentReference(OsPathToUri(fileName)) dom = dr.toSchematron(repo) tester.compare(1, isinstance(dom, Stylesheet.StylesheetElement)) repo.txRollback() tester.testDone() finally: os.unlink(fileName) def test_string(tester): tester.startTest("String Document Reference to Dom") repo = test_helper.GetRepo(tester) uri = FTSS_URI_SCHEME + ':///string-from-var-DOC1' dr = DocumentReference.StringDocumentReference(DOC1, uri) dom = dr.toDom(repo) tester.compare('docelem', dom.documentElement.localName) repo.txRollback() tester.testDone() tester.startTest("String Document Reference to Stylesheet") repo = test_helper.GetRepo(tester) uri = FTSS_URI_SCHEME + ':///string-from-var-SHEET1' dr = DocumentReference.StringDocumentReference(SHEET1, uri) dom = dr.toStylesheet(repo) tester.compare(1, isinstance(dom, Stylesheet.StylesheetElement)) repo.txRollback() tester.testDone() tester.startTest("String Document Reference to Schematron") repo = test_helper.GetRepo(tester) uri = FTSS_URI_SCHEME + ':///string-from-var-SCHEMA1' dr = DocumentReference.StringDocumentReference(SCHEMA1, uri) dom = dr.toSchematron(repo) tester.compare(1, isinstance(dom, Stylesheet.StylesheetElement)) repo.txRollback() tester.testDone() def init(tester): tester.startTest("Init") repo = test_helper.GetRepo(tester) if repo.hasResource('/test'): t = repo.fetchResource('/test') t.delete() repo.createContainer("/test", 1) repo.createDocument('/test/doc1', DOC1) repo.createDocument('/test/sheet1', SHEET1) repo.createDocument('/test/schema1', SCHEMA1) repo.txCommit() tester.testDone() DOC1="""""" SHEET1 = """ Sheet 1 """ SCHEMA1=""" VALIDATION ERROR: The root element must have a v attribute """ def Test(tester): tester.startGroup("Document Reference") init(tester) test_internal(tester) test_external(tester) test_string(tester) tester.groupDone()