===============
Testing support
===============

Data Converter for Testing
--------------------------

Sometimes, we want to upload binary files. Particulary in Selenium
tests, it is nearly impossible to correctly input binary data - so we
allow the user to specify base64 encoded data to be uploaded. This
is accomplished by using a hidden input field that holds the value
of the encoding desired.

  >>> import zope.schema
  >>> from z3c.form import widget
  >>> from z3c.form import testing

As in converter.txt, we want to test a file upload widget.

  >>> filedata = zope.schema.Text(
  ...     __name__='data',
  ...     title=u'Some data to upload',)

Lets try passing a simple string, and not specify any encoding.

  >>> dataWidget = widget.Widget(testing.TestRequest(
  ...    form={'data.testing': 'haha'}))
  >>> dataWidget.name = 'data'

  >>> conv = testing.TestingFileUploadDataConverter(filedata, dataWidget)
  >>> conv.toFieldValue('')
  'haha'

And now, specify a encoded string

  >>> encStr = 'hoohoo'.encode('base64')
  >>> dataWidget = widget.Widget(testing.TestRequest(
  ...    form={'data.testing': encStr, 'data.encoding': 'base64'}))
  >>> dataWidget.name = 'data'

  >>> conv = testing.TestingFileUploadDataConverter(filedata, dataWidget)
  >>> conv.toFieldValue('')
  'hoohoo'
