-*- coding: utf-8 -*-

==============================================================================
Test the generated RSS
==============================================================================

Create the browser object we'll be using.

    >>> from Products.Five.testbrowser import Browser
    >>> browser = Browser()
    >>> portal_url = self.portal.absolute_url()
    >>> browser.handleErrors = False
    >>> self.portal.error_log._ignored_exceptions = ()

Log in into the site as manager.

    >>> from Products.PloneTestCase.setup import portal_owner, default_user, default_password
    >>> login_url = portal_url + '/login_form'
    >>> logout_url = portal_url + '/logout'
    >>> browser.open(login_url)

We have the login portlet, so let's use that.

    >>> browser.getControl(name='__ac_name').value = portal_owner
    >>> browser.getControl(name='__ac_password').value = default_password
    >>> browser.getControl(name='submit').click()
    >>> browser.open(portal_url)
    >>> browser.url == portal_url
    True

We are adding a Page object to serve as source to parse.

    >>> import os
    >>> from icnews.acquire.tests.base import test_home
    >>> input_dir = os.path.join(test_home, 'input')
    >>> input = open(os.path.join(input_dir, 'document1.html'), 'rb')
    >>> browser.getLink('Add to folder').click()
    >>> browser.getControl('Page').click()
    >>> browser.getControl(name='title').value = 'Simple'
    >>> browser.getControl(name='description').value = 'Page description'
    >>> browser.getControl(name='text').value = input.read()
    >>> browser.getControl('Save').click()
    >>> 'Changes saved' in browser.contents
    True

We are adding a Adqnews object to the site root and configure it to parse the
page we've just added.

    >>> browser.open(portal_url)
    >>> browser.getLink('Add to folder').click()
    >>> browser.getControl('Adqnews').click()
    >>> browser.getControl(name='title').value = 'Simple RSS'
    >>> browser.getControl(name='description').value = 'This is a description'
    >>> browser.getControl(name='re:lines').value = ''
    >>> browser.getControl(name='encoding').value = ('latin_1',)
    >>> browser.getControl(name='source').value = portal_url+'/simple'
    >>> browser.getControl('Save').click()
    >>> 'Changes saved' in browser.contents
    True

Now let's download the generated XML and compare it with the expected one.
Actually, I found no way to do that. The problem was urllib raising an error
when the Plone site URL was passed.mi

    >>> # Not sure why next two lines are not working
    >>> #browser.open(portal_url+'/simple-rss/rss')
    >>> #genrss = browser.contents
    >>> #from icnews.acquire.interfaces import IRSS2Feed
    >>> #genrss = IRSS2Feed(getattr(self.portal, 'simple-rss'))
    >>> #from xml.dom import minidom
    >>> #parsed_genrss = minidom.parseString(genrss)
    >>> #output_dir = os.path.join(test_home, 'output')
    >>> #parsed_output = minidom.parse(os.path.join(output_dir, 'document1.xml'))
    >>> #parsed_output.getElementsByTagName('description')[0].childNodes[0].toxml() == parsed_genrss.getElementsByTagName('description')[0].childNodes[0].toxml()
    True