コード例 #1
0
class TestViewsFunctional(unittest.TestCase):

    layer = COLLECTIVE_REVISIONMANAGER_FUNCTIONAL_TESTING

    def setUp(self):
        self.portal = self.layer['portal']
        self.request = self.layer['request']
        self.portal_url = self.portal.absolute_url()
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        self.doc1 = api.content.create(
            container=self.portal,
            type='Document',
            title=u'Some Document',
        )
        self.doc1.text = RichTextValue(u'One two', 'text/plain', 'text/html')
        self.browser = Browser(self.layer['app'])
        self.browser.handleErrors = False
        modified(self.doc1)
        self.statscache = getUtility(IHistoryStatsCache)
        self.statscache.refresh()
        import transaction
        transaction.commit()
        # Set up browser
        self.browser = Browser(self.layer['app'])
        self.browser.handleErrors = False
        self.browser.addHeader(
            'Authorization',
            'Basic {}:{}'.format(SITE_OWNER_NAME, SITE_OWNER_PASSWORD,)  # noqa: P101
        )

    def test_views_functional(self):
        self.browser.open(self.portal_url + '/@@revisions-controlpanel')
        self.browser.getControl(name='form.buttons.recalculate').click()
        self.browser.open(self.portal_url + '/@@histories')
        self.assertIn('<td>2 (0)</td>', self.browser.contents)
        self.assertIn('<td align="right">3 kB</td>', self.browser.contents)
        self.doc1.text = RichTextValue(u'Changed!', 'text/plain', 'text/html')
        modified(self.doc1)
        self.statscache.refresh()
        transaction.commit()
        self.browser.reload()
        # We have a item with 3 revisions
        self.assertIn('<td>3 (0)</td>', self.browser.contents)
        self.assertIn('<td align="right">5 kB</td>', self.browser.contents)

        checkbox = self.browser.getControl(name='delete:list')
        self.assertEqual(checkbox.options, ['check1'])
        checkbox.value = ['checked']
        # we keep a revision
        self.browser.getControl(name='keepnum').value = '2'
        self.browser.getControl(name='del_histories').click()
        self.statscache.refresh()
        transaction.commit()
        self.browser.reload()

        # The number of revisions is kept but the payload is purged
        self.assertIn('<td>3 (1)</td>', self.browser.contents)
        # The size is not recalucated
        self.assertIn('<td align="right">???</td>', self.browser.contents)
        self.browser.getControl(name='keepnum').value = '0'
        self.browser.getControl(name='delete:list').value = ['checked']
        self.browser.getControl(name='del_histories').click()
        # No more items with revisions
        self.assertNotIn('name="delete:list"', self.browser.contents)

        # at least click the button even though there are no orphans
        self.browser.getControl(name='del_orphans').click()