============================================
Functional doctest
author: Juan Pablo Gimenez <jpg@rcom.com.ar>
============================================

First some useful defines and includes...

    >>> from Products.Five.testbrowser import Browser
    >>> from Products.CMFCore.utils import getToolByName
    >>> from Products.PloneTestCase.setup import portal_owner, \
    ...                                          default_user, \
    ...                                          default_password

    >>> portal = self.portal
    >>> portal
    <PloneSite at /plone>

    >>> browser = Browser()
    >>> portal_url = portal.absolute_url()
    >>> folder_url = self.folder.absolute_url()
    >>> login_url = portal_url + '/login_form'
    >>> logout_url = portal_url + '/logout'
    >>> prefs_languages_url = portal_url + '/portal_languages/prefs_languages'
	>>> portal.error_log._ignored_exceptions = ()
    >>> browser.handleErrors = False

Now, we must login...
    >>> browser.open(login_url)

    >>> browser.getControl(name='__ac_name').value = portal_owner
    >>> browser.getControl(name='__ac_password').value = default_password
    >>> browser.getControl(name='submit').click()
	>>> browser.getLink('Site Setup').click()
	>>> browser.getLink('Language Settings').click()

    >>> # browser.open(prefs_languages_url)
    >>> browser.getControl(name='supportedLanguages:list').getControl(value='en').selected = True
    >>> browser.getControl(name='supportedLanguages:list').getControl(value='es').selected = True
    >>> browser.getControl(name='supportedLanguages:list').getControl(value='it').selected = True
	>>> browser.getControl('Save').click()

    >>> browser.open(prefs_languages_url)
    >>> browser.getControl(name='defaultLanguage').value = ('es',)
	>>> browser.getControl('Save').click()

Vamos a configurar langview...
	>>> browser.getLink('Site Setup').click()
	>>> browser.getLink('icSemantic').click()
	>>> browser.getLink('Content Types').click()
	>>> browser.open(browser.url + '?debug=1') # vamos a testear en modo debug
	>>> browser.getControl(name='form.fallback_types:list').value = ['ATDocument',]
	>>> browser.getControl("Apply").click()

Y el content type queda patcheado...
	>>> from Products.ATContentTypes.content.document import ATDocument
    >>> from icsemantic.core.interfaces import IMultilingualContentMarker, \
    ...										  IMultilingualGettersMarker

    >>> IMultilingualContentMarker.implementedBy(ATDocument)
    True
    >>> IMultilingualGettersMarker.implementedBy(ATDocument)
    True

Entonces podemos seguir...

1) Crear tres usuario con la propiedad "prefered_languages" modificada:

    usuario:    prefered_languages:
    test1        en;es;it
    test2        es;en
    test3        it

	>>> member1 = portal.portal_registration.addMember('test1', 'test1')
	>>> member1
	<MemberData at /plone/portal_memberdata/test1 used for /plone/acl_users>

	>>> member1.setMemberProperties({'icsemantic.preferred_languages': ('en', 'es', 'it')})
	>>> member1.getProperty('icsemantic.preferred_languages')
	('en', 'es', 'it')

	>>> member2 = portal.portal_registration.addMember('test2', 'test2')
	>>> member2
	<MemberData at /plone/portal_memberdata/test2 used for /plone/acl_users>

	>>> member2.setMemberProperties({'icsemantic.preferred_languages': ('es', 'en')})
	>>> member2.getProperty('icsemantic.preferred_languages')
	('es', 'en')

	>>> member3 = portal.portal_registration.addMember('test3', 'test3')
	>>> member3
	<MemberData at /plone/portal_memberdata/test3 used for /plone/acl_users>

	>>> member3.setMemberProperties({'icsemantic.preferred_languages': ('it',)})
	>>> member3.getProperty('icsemantic.preferred_languages')
	('it',)

2) Crear un documento en tres idiomas usando LinguaPlone: Castellano, Inglés, Italiano

Castellano:
    Título: Esta es una prueba.
    Descripción: Una simple prueba para verificar el funcionamiento de LinguaView.
    Texto: La prueba tiene que mostrar el mismo documento en diferentes idiomas.

	>>> browser.open(folder_url)
    >>> browser.getLink('Page').click()
    >>> browser.getControl('Title').value = 'Esta es una prueba.'
    >>> browser.getControl('Description').value = 'Una simple prueba para verificar el funcionamiento de LinguaView.'
    >>> browser.getControl('Body Text').value = 'La prueba tiene que mostrar el mismo documento en diferentes idiomas.'
    >>> browser.getControl('Save').click()
    >>> 'Changes saved.' in browser.contents
    True

Inglés:
    Título: Just a test
    Description: A simple test to check how works LinguaView.

    >>> # browser.getLink('Translate into').click()
    >>> browser.getLink('English').click()
    >>> browser.getControl('Title').value = 'Just a test'
    >>> browser.getControl('Description').value = 'A simple test to check how works LinguaView.'
    >>> browser.getControl('Save').click()
    >>> 'Your changes have been saved.' in browser.contents
    True

Italiano:
    Título: Questo e una prova.

    >>> # browser.getLink('Translate into').click()
    >>> browser.getLink('Italiano').click()
    >>> browser.getControl('Title').value = 'Questo e una prova.'
    >>> browser.getControl('Save').click()
    >>> 'Your changes have been saved.' in browser.contents
    True

	>>> doc_url = folder_url + '/esta-es-una-prueba'

3) Entrar como usuario test1, chequear el resultado del documento:

    Título: Just a test
    Descripción: A simple test to check how works LinguaView.
    Texto: La prueba tiene que mostrar el mismo documento en diferentes idiomas.

    >>> browser.open(logout_url)
    >>> browser.open(login_url)
    >>> browser.getControl(name='__ac_name').value = 'test1'
    >>> browser.getControl(name='__ac_password').value = 'test1'
    >>> browser.getControl(name='submit').click()

	>>> browser.open(doc_url)
    >>> 'Just a test' in browser.contents
    True
    >>> 'A simple test to check how works LinguaView.' in browser.contents
    True
    >>> 'La prueba tiene que mostrar el mismo documento en diferentes idiomas.' in browser.contents
	True

4) Entrar como usuario test2, chequear el resultado del documento:

    Título: Esta es una prueba.
    Descripción: Una simple prueba para verificar el funcionamiento de LinguaView.
    Texto: La prueba tiene que mostrar el mismo documento en diferentes idiomas.

    >>> browser.open(logout_url)
    >>> browser.open(login_url)
    >>> browser.getControl(name='__ac_name').value = 'test2'
    >>> browser.getControl(name='__ac_password').value = 'test2'
    >>> browser.getControl(name='submit').click()

	>>> browser.open(doc_url)
    >>> 'Esta es una prueba' in browser.contents
    True
    >>> 'Una simple prueba para verificar el funcionamiento de LinguaView.' in browser.contents
    True
    >>> 'La prueba tiene que mostrar el mismo documento en diferentes idiomas.' in browser.contents
	True

5) Entrar como usuario test3, chequear el resultado del documento:

    Título: Questo e una prova.
    Descripción: -
    Texto: -

    >>> browser.open(logout_url)
    >>> browser.open(login_url)
    >>> browser.getControl(name='__ac_name').value = 'test3'
    >>> browser.getControl(name='__ac_password').value = 'test3'
    >>> browser.getControl(name='submit').click()

	>>> browser.open(doc_url)
    >>> 'Questo e una prova' in browser.contents
    True

6) Crear un documento en dos idiomas usando LinguaPlone: Castellano, Inglés

Castellano:
    Título: Esta es una prueba.
    Texto: La prueba tiene que mostrar el mismo documento en diferentes idiomas.

    >>> browser.open(logout_url)
    >>> browser.open(login_url)
    >>> browser.getControl(name='__ac_name').value = portal_owner
    >>> browser.getControl(name='__ac_password').value = default_password
    >>> browser.getControl(name='submit').click()

	>>> browser.open(folder_url)
    >>> browser.getLink('Page').click()
    >>> browser.getControl('Title').value = 'Esta es una prueba.'
    >>> browser.getControl('Body Text').value = 'La prueba tiene que mostrar el mismo documento en diferentes idiomas.'
    >>> browser.getControl('Save').click()
    >>> 'Changes saved.' in browser.contents
    True

	>>> doc_url = browser.url

Inglés:
    Título: Just a test
    Description: A simple test to check how works LinguaView.

    >>> # browser.getLink('Translate into').click()
    >>> browser.getLink('English').click()
    >>> browser.getControl('Title').value = 'Just a test'
    >>> browser.getControl('Description').value = 'A simple test to check how works LinguaView.'
    >>> browser.getControl('Save').click()
    >>> 'Your changes have been saved.' in browser.contents
    True

7) Entrar como usuario test2, chequear el resultado del documento:

    Título: Esta es una prueba.
    Descripción: A simple test to check how works LinguaView.
    Texto: La prueba tiene que mostrar el mismo documento en diferentes idiomas.

    >>> browser.open(logout_url)
    >>> browser.open(login_url)
    >>> browser.getControl(name='__ac_name').value = 'test2'
    >>> browser.getControl(name='__ac_password').value = 'test2'
    >>> browser.getControl(name='submit').click()

	>>> browser.open(doc_url)
    >>> 'Esta es una prueba' in browser.contents
    True
    >>> 'A simple test to check how works LinguaView.' in browser.contents
    True
    >>> 'La prueba tiene que mostrar el mismo documento en diferentes idiomas.' in browser.contents
	True
