From: Vincent F. <svn...@pl...> - 2013-10-04 20:22:16
|
Author: vincentfretin Date: Fri Oct 4 20:22:06 2013 New Revision: 252620 Added: Products.rendezvous/trunk/Products/rendezvous/testing.py Removed: Products.rendezvous/trunk/Products/rendezvous/tests/framework.py Products.rendezvous/trunk/Products/rendezvous/tests/runalltests.py Products.rendezvous/trunk/Products/rendezvous/tests/testPlone.py Modified: Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousUtility.py Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousView.py Products.rendezvous/trunk/Products/rendezvous/tests/__init__.py Products.rendezvous/trunk/Products/rendezvous/tests/testRDV_RendezVous.py Products.rendezvous/trunk/docs/HISTORY.txt Products.rendezvous/trunk/setup.py Log: migrate tests to plone.app.testing Modified: Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousUtility.py ============================================================================== --- Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousUtility.py (original) +++ Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousUtility.py Fri Oct 4 20:22:06 2013 @@ -17,10 +17,6 @@ import copy ##/code-section module-header -from zope.interface import implements - -from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin - class RDV_RendezVousUtility: """ @@ -45,9 +41,6 @@ def toggleSelectedDate(view, selected_date): """Toogle selected date """ - context = aq_inner(view.context) - request = view.request - uid = context.UID() selected_dates = RDV_RendezVousUtility.getPropositionsByDates(view) if not selected_date in selected_dates: selected_dates[selected_date] = [] Modified: Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousView.py ============================================================================== --- Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousView.py (original) +++ Products.rendezvous/trunk/Products/rendezvous/browser/RDV_RendezVousView.py Fri Oct 4 20:22:06 2013 @@ -134,7 +134,8 @@ def addParticipation(self): context = self.context.aq_inner - actor = self.request.AUTHENTICATED_USER + mtool = getToolByName(context, "portal_membership") + actor = mtool.getAuthenticatedMember() participant = actor.getId() try: selected_propositions = self.request.form['propositions'] Added: Products.rendezvous/trunk/Products/rendezvous/testing.py ============================================================================== --- (empty file) +++ Products.rendezvous/trunk/Products/rendezvous/testing.py Fri Oct 4 20:22:06 2013 @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +"""Base module for unittesting.""" + +from plone.app.robotframework.testing import AUTOLOGIN_LIBRARY_FIXTURE +from plone.app.testing import applyProfile +from plone.app.testing import FunctionalTesting +from plone.app.testing import IntegrationTesting +from plone.app.testing import login +from plone.app.testing import PLONE_FIXTURE +from plone.app.testing import PloneSandboxLayer +from plone.app.testing import setRoles +from plone.app.testing import TEST_USER_ID +from plone.app.testing import TEST_USER_NAME +from plone.testing import z2 + +import unittest2 as unittest + +import Products.rendezvous + + +class ProductsRendezvousLayer(PloneSandboxLayer): + + defaultBases = (PLONE_FIXTURE,) + products = ('Products.rendezvous', + ) + + def setUpZope(self, app, configurationContext): + """Set up Zope.""" + # Load ZCML + self.loadZCML(package=Products.rendezvous, + name='configure.zcml') + for p in self.products: + z2.installProduct(app, p) + + def setUpPloneSite(self, portal): + """Set up Plone.""" + # Install into Plone site using portal_setup + applyProfile(portal, 'Products.rendezvous:default') + + # Login and create some test content + setRoles(portal, TEST_USER_ID, ['Manager']) + login(portal, TEST_USER_NAME) + + # Commit so that the test browser sees these objects + import transaction + transaction.commit() + + def tearDownZope(self, app): + """Tear down Zope.""" + for p in reversed(self.products): + z2.uninstallProduct(app, p) + + +FIXTURE = ProductsRendezvousLayer( + name="FIXTURE" + ) + + +INTEGRATION = IntegrationTesting( + bases=(FIXTURE,), + name="INTEGRATION" + ) + + +FUNCTIONAL = FunctionalTesting( + bases=(FIXTURE,), + name="FUNCTIONAL" + ) + + +ACCEPTANCE = FunctionalTesting(bases=(FIXTURE, + AUTOLOGIN_LIBRARY_FIXTURE, + z2.ZSERVER_FIXTURE), + name="ACCEPTANCE") + + +class IntegrationTestCase(unittest.TestCase): + """Base class for integration tests.""" + + layer = INTEGRATION + + def setUp(self): + super(IntegrationTestCase, self).setUp() + self.portal = self.layer['portal'] + + def login(self, username): + login(self.layer['portal'], username) + + +class FunctionalTestCase(unittest.TestCase): + """Base class for functional tests.""" + + layer = FUNCTIONAL Modified: Products.rendezvous/trunk/Products/rendezvous/tests/__init__.py ============================================================================== --- Products.rendezvous/trunk/Products/rendezvous/tests/__init__.py (original) +++ Products.rendezvous/trunk/Products/rendezvous/tests/__init__.py Fri Oct 4 20:22:06 2013 @@ -1,42 +1 @@ -# -*- coding: utf-8 -*- # -# File: tests.py -# -# Copyright (c) 2008 by Ecreall -# Generator: ArchGenXML Version 2.2 (svn) -# http://plone.org/products/archgenxml -# -# GNU General Public License (GPL) -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. -# - -__author__ = """Vincent Fretin <vin...@ec...>""" -__docformat__ = 'plaintext' - - -##code-section init-module-header #fill in your manual code here -##/code-section init-module-header - - -# Subpackages -# Additional - -# Classes - -##code-section init-module-footer #fill in your manual code here -##/code-section init-module-footer - Modified: Products.rendezvous/trunk/Products/rendezvous/tests/testRDV_RendezVous.py ============================================================================== --- Products.rendezvous/trunk/Products/rendezvous/tests/testRDV_RendezVous.py (original) +++ Products.rendezvous/trunk/Products/rendezvous/tests/testRDV_RendezVous.py Fri Oct 4 20:22:06 2013 @@ -1,59 +1,20 @@ # -*- coding: utf-8 -*- -# -# File: testRDV_RendezVous.py -# -# Copyright (c) 2008 by Ecreall -# Generator: ArchGenXML Version 2.2 (svn) -# http://plone.org/products/archgenxml -# -# GNU General Public License (GPL) -# - -__author__ = """Vincent Fretin <vin...@ec...>""" -__docformat__ = 'plaintext' - -import os, sys -if __name__ == '__main__': - execfile(os.path.join(sys.path[0], 'framework.py')) - -##code-section module-header #fill in your manual code here -##/code-section module-header - -# -# Test-cases for class(es) -# - -from Testing import ZopeTestCase -from Products.rendezvous.config import * -from Products.rendezvous.tests.testPlone import testPlone - -# Import the tested classes -from Products.rendezvous.content.RDV_RendezVous import RDV_RendezVous - -##code-section module-beforeclass #fill in your manual code here from Products.rendezvous.browser.RDV_RendezVousEdit import RDV_RendezVousEdit -from Products.rendezvous.browser.RDV_PropositionsEdit import RDV_PropositionsEdit -from zope.publisher.browser import TestRequest -from zope.component import getMultiAdapter -##/code-section module-beforeclass +from Products.rendezvous.browser.RDV_RendezVousView import RDV_RendezVousView +from ..testing import IntegrationTestCase -class testRDV_RendezVous(testPlone): - """Test-cases for class(es) .""" - ##code-section class-header_testRDV_RendezVous #fill in your manual code here - ##/code-section class-header_testRDV_RendezVous +class testRDV_RendezVous(IntegrationTestCase): - def afterSetUp(self): - self.app.REQUEST.SESSION = {} - self.setRoles('Manager') + def setUp(self): + super(testRDV_RendezVous, self).setUp() + self.portal.REQUEST.SESSION = {} rdv_id = self.portal.invokeFactory('RDV_RendezVous', 'rdv1') self.rdv = getattr(self.portal, rdv_id) self.portal.portal_membership.addMember("johndoe", "passwd", ['Member'], [], properties={'name': 'John Doe', 'email': 'jo...@ex...'}) self.johndoe = self.portal.portal_membership.getMemberById('johndoe') - # Manually created methods - def test_DelDateWithPropositions(self): propositions = self._create_propositions() # remove one date @@ -61,42 +22,42 @@ '2008-11-29':[''], } self.rdv.setPropositionsByDates(expected_propositions) - self.assertEquals(expected_propositions, self.rdv.getPropositionsByDates()) + self.assertEqual(expected_propositions, self.rdv.getPropositionsByDates()) def test_AddDate(self): - request = self.app.REQUEST + request = self.portal.REQUEST view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals([], view.getSelectedDates()) - request.set('rdvdate', '2008-11-27') + self.assertEqual([], view.getSelectedDates()) + request.form['rdvdate'] = '2008-11-27' view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals(['2008-11-27'], view.getSelectedDates()) - request.set('rdvdate', '2008-11-28') + self.assertEqual(['2008-11-27'], view.getSelectedDates()) + request.form['rdvdate'] = '2008-11-28' view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals(['2008-11-27', '2008-11-28'], view.getSelectedDates()) - request.set('rdvdate', '2008-11-29') + self.assertEqual(['2008-11-27', '2008-11-28'], view.getSelectedDates()) + request.form['rdvdate'] = '2008-11-29' view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals(['2008-11-27', '2008-11-28', '2008-11-29'], view.getSelectedDates()) + self.assertEqual(['2008-11-27', '2008-11-28', '2008-11-29'], view.getSelectedDates()) def test_manage_participants_in_proposition(self): prop_id = self.rdv.invokeFactory('RDV_Proposition', 'prop') prop = getattr(self.rdv, prop_id) prop.manageParticipant('johndoe', checked=True) - self.assertEquals(('johndoe',), prop.getAvailable()) + self.assertEqual(('johndoe',), prop.getAvailable()) prop.manageParticipant('johnsmith', True) - self.assertEquals(('johndoe', 'johnsmith'), prop.getAvailable()) + self.assertEqual(('johndoe', 'johnsmith'), prop.getAvailable()) prop.manageParticipant('johndoe', False) - self.assertEquals(('johnsmith',), prop.getAvailable()) + self.assertEqual(('johnsmith',), prop.getAvailable()) def test_SaveChanges(self): - request = self.app.REQUEST - view = RDV_PropositionsEdit(self.rdv, request) + request = self.portal.REQUEST + view = RDV_RendezVousEdit(self.rdv, request) props = {'2008-12-25': ['12:00', 'minuit', 'midi', '', ''], '2008-12-19': ['13:00', '14:00', '', '', ''], '2008-12-31': ['', '', '', '', ''] } request.form = props request.form['finish'] = 'Finish' view.saveChanges() - self.assertEquals({'2008-12-25': ['12:00', 'minuit', 'midi'], + self.assertEqual({'2008-12-25': ['12:00', 'minuit', 'midi'], '2008-12-19': ['13:00', '14:00'], '2008-12-31': ['']}, self.rdv.getPropositionsByDates()) @@ -111,86 +72,71 @@ def test_SetPropositions(self): propositions = self._create_propositions() - self.assertEquals(propositions, self.rdv.getPropositionsByDates()) + self.assertEqual(propositions, self.rdv.getPropositionsByDates()) def test_reedit_rendezvous(self): propositions = self._create_propositions() - request = self.app.REQUEST + request = self.portal.REQUEST view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals(propositions.keys(), view.getSelectedDates()) + self.assertEqual(propositions.keys(), view.getSelectedDates()) def test_NbColumns(self): - request = self.app.REQUEST - view = RDV_PropositionsEdit(self.rdv, request) - self.assertEquals(view.NB_COLUMNS, view.getNbColumns()) + request = self.portal.REQUEST + view = RDV_RendezVousEdit(self.rdv, request) + self.assertEqual(view.NB_COLUMNS, view.getNbColumns()) def test_incColumns(self): - request = self.app.REQUEST + request = self.portal.REQUEST request.form['extend'] = 'Extends columns' - view = RDV_PropositionsEdit(self.rdv, request) - self.assertEquals(view.NB_COLUMNS, view.getNbColumns()) + view = RDV_RendezVousEdit(self.rdv, request) + self.assertEqual(view.NB_COLUMNS, view.getNbColumns()) view.saveChanges() # view.incNbColumns() - self.assertEquals(view.NB_COLUMNS*2, view.getNbColumns()) + self.assertEqual(view.NB_COLUMNS*2, view.getNbColumns()) def test_DelDate(self): - request = self.app.REQUEST + request = self.portal.REQUEST # add two dates - request.set('rdvdate', '2008-11-27') + request.form['rdvdate'] = '2008-11-27' view = RDV_RendezVousEdit(self.rdv, request) - request.set('rdvdate', '2008-11-28') + request.form['rdvdate'] = '2008-11-28' view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals(['2008-11-27', '2008-11-28'], view.getSelectedDates()) + self.assertEqual(['2008-11-27', '2008-11-28'], view.getSelectedDates()) # remove one date - request.set('rdvdate', '2008-11-27') + request.form['rdvdate'] = '2008-11-27' view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals(['2008-11-28'], view.getSelectedDates()) + self.assertEqual(['2008-11-28'], view.getSelectedDates()) def test_add_other_dates(self): propositions = self._create_propositions() - request = self.app.REQUEST - request.set('rdvdate', '2008-11-30') + request = self.portal.REQUEST + request.form['rdvdate'] = '2008-11-30' view = RDV_RendezVousEdit(self.rdv, request) - self.assertEquals(sorted(list(propositions.keys()) + ['2008-11-30']), sorted(view.getSelectedDates())) + self.assertEqual(sorted(list(propositions.keys()) + ['2008-11-30']), sorted(view.getSelectedDates())) def test_add_participant(self): self.rdv.addParticipant('johndoe') - self.assertEquals(('johndoe',), self.rdv.getParticipants()) + self.assertEqual(('johndoe',), self.rdv.getParticipants()) def test_add_participant_twice(self): self.rdv.addParticipant('johndoe') self.rdv.addParticipant('johndoe') - self.assertEquals(('johndoe',), self.rdv.getParticipants()) + self.assertEqual(('johndoe',), self.rdv.getParticipants()) def test_addParticipant(self): - request = self.app.REQUEST - view = RDV_PropositionsEdit(self.rdv, request) + request = self.portal.REQUEST + view = RDV_RendezVousEdit(self.rdv, request) props = {'2008-12-25': ['12:00', 'minuit', 'midi', '', ''], '2008-12-19': ['13:00', '14:00', '', '', ''], '2008-12-31': ['', '', '', '', ''] } request.form = props request.form['finish'] = 'Finish' view.saveChanges() - request = TestRequest() - request.AUTHENTICATED_USER = self.johndoe + request = self.portal.REQUEST + self.login('johndoe') propositions = self.rdv.getPropositionObjectsByDates() request.form = {'propositions': (propositions['2008-12-25'][0][1],)} - view = getMultiAdapter((self.rdv, request), name='add-participation') - view() + view = RDV_RendezVousView(self.rdv, request).addParticipation() prop = getattr(self.rdv, propositions['2008-12-25'][0][1]) - self.assertEquals(prop.getAvailable(), ('johndoe',)) - self.assertEquals(prop.getUnavailable(), ()) - -def test_suite(): - from unittest import TestSuite, makeSuite - suite = TestSuite() - suite.addTest(makeSuite(testRDV_RendezVous)) - return suite - -##code-section module-footer #fill in your manual code here -##/code-section module-footer - -if __name__ == '__main__': - framework() - - + self.assertEqual(prop.getAvailable(), ('johndoe',)) + self.assertEqual(prop.getUnavailable(), ()) Modified: Products.rendezvous/trunk/docs/HISTORY.txt ============================================================================== --- Products.rendezvous/trunk/docs/HISTORY.txt (original) +++ Products.rendezvous/trunk/docs/HISTORY.txt Fri Oct 4 20:22:06 2013 @@ -4,7 +4,8 @@ 1.4.1 (unreleased) ------------------ -- Nothing changed yet. +- Migrate tests to plone.app.testing. + [vincentfretin] 1.4 (2011-12-22) Modified: Products.rendezvous/trunk/setup.py ============================================================================== --- Products.rendezvous/trunk/setup.py (original) +++ Products.rendezvous/trunk/setup.py Fri Oct 4 20:22:06 2013 @@ -40,6 +40,12 @@ 'setuptools', # -*- Extra requirements: -*- ], + extras_require={ + 'test': [ + 'plone.app.testing', + 'plone.app.robotframework', + ], + }, entry_points=""" # -*- Entry points: -*- """, |