# -*- coding: utf-8 -*-"""unit/functional tests for cubicweb.server.hookhelper:organization: Logilab:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses"""fromlogilab.common.testlibimportunittest_mainfromcubicweb.devtools.testlibimportCubicWebTCfromcubicweb.server.poolimportLateOperation,Operation,SingleLastOperationfromcubicweb.server.hookhelperimport*fromcubicweb.serverimporthooks,schemahooksdefclean_session_ops(func):defwrapper(self,*args,**kwargs):try:returnfunc(self,*args,**kwargs)finally:self.session.pending_operations[:]=[]returnwrapperclassHookHelpersTC(CubicWebTC):defsetUp(self):CubicWebTC.setUp(self)self.hm=self.repo.hm@clean_session_opsdeftest_late_operation(self):session=self.sessionl1=LateOperation(session)l2=LateOperation(session)l3=Operation(session)self.assertEquals(session.pending_operations,[l3,l1,l2])@clean_session_opsdeftest_single_last_operation(self):session=self.sessionl0=SingleLastOperation(session)l1=LateOperation(session)l2=LateOperation(session)l3=Operation(session)self.assertEquals(session.pending_operations,[l3,l1,l2,l0])l4=SingleLastOperation(session)self.assertEquals(session.pending_operations,[l3,l1,l2,l4])@clean_session_opsdeftest_global_operation_order(self):session=self.sessionop1=hooks.DelayedDeleteOp(session)op2=schemahooks.MemSchemaRDefDel(session)# equivalent operation generated by op2 but replace it here by op3 so we# can check the result...op3=schemahooks.MemSchemaNotifyChanges(session)op4=hooks.DelayedDeleteOp(session)op5=hooks.CheckORelationOp(session)self.assertEquals(session.pending_operations,[op1,op2,op4,op5,op3])if__name__=='__main__':unittest_main()