[ Index ]
 

Code source de Kupu-1.3.5

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/plone/tests/ -> test_html2captioned.py (source)

   1  import os, sys
   2  if __name__ == '__main__':
   3      execfile(os.path.join(sys.path[0], 'framework.py'))
   4  
   5  from unittest  import TestCase, TestSuite, main, makeSuite
   6  from Products.CMFPlone.tests import PloneTestCase
   7  from os.path import join, abspath, dirname
   8  
   9  #try:
  10  #    import Zope # Sigh, make product initialization happen
  11  #    HAS_ZOPE = 1
  12  #    Zope.startup()
  13  #except ImportError:
  14  #    HAS_ZOPE = 0
  15  #except AttributeError: # Zope > 2.6
  16  #    pass
  17  
  18  from Products.PortalTransforms.tests.test_transforms import *
  19  from Products.PortalTransforms.tests.utils import normalize_html
  20  
  21  PREFIX = abspath(dirname(__file__))
  22  
  23  def input_file_path(file):
  24      return join(PREFIX, 'input', file)
  25  
  26  def output_file_path(file):
  27      return join(PREFIX, 'output', file)
  28  
  29  tests =(
  30  ('Products.kupu.plone.html2captioned', "minimal.in", "minimal.out", normalize_html, 0),
  31  ('Products.kupu.plone.html2captioned', "simple.in", "simple.out", normalize_html, 0),
  32  ('Products.kupu.plone.html2captioned', "baduid.in", "baduid.out", normalize_html, 0),
  33  ('Products.kupu.plone.html2captioned', "notquoted.in", "notquoted.out", normalize_html, 0),
  34  ('Products.kupu.plone.html2captioned', "notcaptioned.in", "notcaptioned.out", normalize_html, 0),
  35  ('Products.kupu.plone.html2captioned', "linked.in", "linked.out", normalize_html, 0),
  36      )
  37  
  38  class MockImage:
  39      def __init__(self, uid, description):
  40          self.uid, self.description = uid, description
  41      def Description(self):
  42          return self.description
  43      def absolute_url(self):
  44          return '[url for %s]' % self.uid
  45  
  46  class MockCatalogTool:
  47      def lookupObject(self, uid):
  48          dummydata = {
  49              '104ede98d4c7c8eaeaa3b984f7395979': 'Test image caption'
  50          }
  51          if uid not in dummydata:
  52              return None
  53          return MockImage(uid, dummydata[uid])
  54  
  55  class MockArchetypeTool:
  56      reference_catalog = MockCatalogTool()
  57  
  58  class MockPortal:
  59      # Mock portal class: just enough to let me think I can lookup a
  60      # Description for an image from its UID.
  61      archetype_tool = MockArchetypeTool()
  62  
  63  class TransformTest(TestCase):
  64      portal = MockPortal()
  65      
  66      def do_convert(self, filename=None):
  67          if filename is None and exists(self.output + '.nofilename'):
  68              output = self.output + '.nofilename'
  69          else:
  70              output = self.output
  71          input = open(self.input)
  72          orig = input.read()
  73          input.close()
  74          data = datastream(self.transform.name())
  75          res_data = self.transform.convert(orig, data, filename=filename, context=self.portal)
  76          self.assert_(idatastream.isImplementedBy(res_data))
  77          got = res_data.getData()
  78          try:
  79              output = open(output)
  80          except IOError:
  81              import sys
  82              print >>sys.stderr, 'No output file found.'
  83              print >>sys.stderr, 'File %s created, check it !' % self.output
  84              output = open(output, 'w')
  85              output.write(got)
  86              output.close()
  87              self.assert_(0)
  88          expected = output.read()
  89          if self.normalize is not None:
  90              expected = self.normalize(expected)
  91              got = self.normalize(got)
  92          output.close()
  93  
  94          self.assertEquals(got, expected,
  95                            '[%s]\n\n!=\n\n[%s]\n\nIN %s(%s)' % (
  96              got, expected, self.transform.name(), self.input))
  97          self.assertEquals(self.subobjects, len(res_data.getSubObjects()),
  98                            '%s\n\n!=\n\n%s\n\nIN %s(%s)' % (
  99              self.subobjects, len(res_data.getSubObjects()), self.transform.name(), self.input))
 100  
 101      def testSame(self):
 102          self.do_convert(filename=self.input)
 103  
 104      def testSameNoFilename(self):
 105          self.do_convert()
 106  
 107      def __repr__(self):
 108          return self.transform.name()
 109  
 110  TR_NAMES = None
 111  
 112  def make_tests(test_descr):
 113      """generate tests classes from test info
 114  
 115      return the list of generated test classes
 116      """
 117      tests = []
 118      for _transform, tr_input, tr_output, _normalize, _subobjects in test_descr:
 119          # load transform if necessary
 120          if type(_transform) is type(''):
 121              try:
 122                  _transform = load(_transform).register()
 123              except:
 124                  import traceback
 125                  traceback.print_exc()
 126                  continue
 127          #
 128          if TR_NAMES is not None and not _transform.name() in TR_NAMES:
 129              print 'skip test for', _transform.name()
 130              continue
 131  
 132          class TransformTestSubclass(TransformTest):
 133              input = input_file_path(tr_input)
 134              output = output_file_path(tr_output)
 135              transform = _transform
 136              normalize = lambda x, y: _normalize(y)
 137              subobjects = _subobjects
 138  
 139          tests.append(TransformTestSubclass)
 140  
 141      return tests
 142  
 143  def test_suite():
 144      t = [ (_transform,
 145          input_file_path(tr_input),
 146          output_file_path(tr_output),
 147          _normalize,
 148          _subobjects)
 149          for _transform, tr_input, tr_output, _normalize, _subobjects in tests ]
 150          
 151      return TestSuite([makeSuite(test) for test in make_tests(t)])
 152  
 153  if __name__=='__main__': 
 154      main(defaultTest='test_suite') 


Généré le : Sun Feb 25 15:30:41 2007 par Balluche grâce à PHPXref 0.7