Integration test
================
    
    >>> from sc.social.viewcounter.browser import portlet as vcPortlet
    >>> from zope.component import getUtility, getMultiAdapter
    >>> from plone.portlets.interfaces import IPortletType
    >>> from plone.portlets.interfaces import IPortletManager
    >>> from plone.portlets.interfaces import IPortletRenderer
    >>> self.loginAsPortalOwner()
    >>> portal = self.portal

Portlet
-------

First we assign a portlet to the portal root object:

    >>> view = portal.restrictedTraverse('@@plone')
    >>> manager = getUtility(IPortletManager, name='plone.leftcolumn', context=portal)
    >>> assignment = vcPortlet.Assignment()
    >>> renderer = getMultiAdapter((portal, portal.REQUEST, view, manager, assignment), IPortletRenderer)
    >>> self.failUnless(isinstance(renderer, vcPortlet.Renderer))
    
Then we select all available reports to be show::
    
    >>> assignment.showLastHour = True
    >>> assignment.showLastDay = True
    >>> assignment.showLastWeek = True
    >>> assignment.showLastMonth = True

Now we render the portlet::

    >>> renderer = getMultiAdapter((portal, portal.REQUEST, view, manager, assignment), IPortletRenderer)
    
    >>> dados = renderer._data()

As we just accessed this content, there is no historical rankings:

    >>> self.failUnless(dados['lastHour']==())
    >>> self.failUnless(dados['lastDay']==())
    >>> self.failUnless(dados['lastWeek']==())
    >>> self.failUnless(dados['lastMonth']==())
    
We cheat a little bit, populating this database with historical accesses:

    >>> self.populateViewCounter()

Invalidate the memoize:

Access the portlet, and check:

    >>> renderer = getMultiAdapter((portal, portal.REQUEST, view, manager, assignment), IPortletRenderer)
    
    >>> dados = renderer._data()

* Last Hour:
    
    >>> self.failUnless(len(dados['lastHour']),45)
    >>> self.failUnless(dados['lastHour'][0][1] == 'News Item_0000')
    >>> self.failUnless(dados['lastHour'][1][1] == 'News Item_0001')
    >>> self.failUnless(dados['lastHour'][2][1] == 'News Item_0002')
    >>> self.failUnless(dados['lastHour'][3][1] == 'News Item_0003')

* Last Day:

    >>> self.failUnless(len(dados['lastDay']),45)
    >>> self.failUnless(dados['lastDay'][0][1] == 'News Item_0000')
    >>> self.failUnless(dados['lastDay'][1][1] == 'News Item_0001')
    >>> self.failUnless(dados['lastDay'][2][1] == 'News Item_0002')
    >>> self.failUnless(dados['lastDay'][3][1] == 'News Item_0003')

* Last Week:

    >>> self.failUnless(len(dados['lastWeek']),45)
    >>> self.failUnless(dados['lastWeek'][0][1] == 'News Item_0000')
    >>> self.failUnless(dados['lastWeek'][1][1] == 'News Item_0001')
    >>> self.failUnless(dados['lastWeek'][2][1] == 'News Item_0002')
    >>> self.failUnless(dados['lastWeek'][3][1] == 'News Item_0003')

* Last Month:

    >>> self.failUnless(len(dados['lastMonth']),45)
    >>> self.failUnless(dados['lastMonth'][0][1] == 'News Item_0000')
    >>> self.failUnless(dados['lastMonth'][1][1] == 'News Item_0001')
    >>> self.failUnless(dados['lastMonth'][2][1] == 'News Item_0002')
    >>> self.failUnless(dados['lastMonth'][3][1] == 'News Item_0003')