def test_get_measures_with_profile_questions(self): """ Test for #7322 and #8850 """ session = self.createSurveySession() question = model.Module( depth=1, title=u'(Repeatable Module) Do you have multiple shops?', module_id='1', zodb_path='1', skip_children=False, profile_index=-1, ) session.addChild(question) i = 0 for module_title in [ u'(Repeating instance) Somerset West', u'(Repeating instance) Stellenbosch']: answer = model.Module( depth=2, title=module_title, module_id='2', zodb_path='1', skip_children=False, profile_index=i, ) question.addChild(answer) answer.addChild( model.Risk( depth=3, title=u'Hands are washed', risk_id='1', zodb_path='1/2', type='risk', priority=u'low', identification='no', action_plans=[ model.ActionPlan( action_plan=u"Do something awesome", planning_start=datetime.date(2013, 3, 4)) ] ) ) i += 1 view = self.ActionPlanTimeline(None, None) view.session = self.session measures = view.get_measures() self.assertEqual(len(measures), 2) self.assertEqual( measures[0][0].title, u'(Repeating instance) Somerset West', ) self.assertEqual( measures[1][0].title, u'(Repeating instance) Stellenbosch', )
def testShowModuleWithTop5RiskEvenIfNotPresent(self): (session, survey) = createSurvey() mod1 = model.Module(title="Module 1", module_id="1", zodb_path="1", skip_children=False) survey.addChild(mod1) mod11 = model.Module( title="Module 1.1", module_id="11", zodb_path="1/1", skip_children=False, has_description=True, ) mod1.addChild(mod11) q111 = model.Risk( title="Risk 1.1.1", risk_id="1", zodb_path="1/1/1", identification="yes", risk_type="top5", ) mod11.addChild(q111) self.assertTrue( navigation.FindNextQuestion(mod1, survey, self.filter()) is mod11)
def testAddChild(self): (ses, survey) = createSurvey() root = survey.addChild(model.Module(title="Root", module_id="1", zodb_path="1")) ses.add(root) root.addChild(model.Module(title="Module", module_id="1", zodb_path="1/1")) ses.flush() self.assertEqual(root.children().count(), 1)
def test_get_measures_with_correct_module(self): view = self._get_timeline() session = view.context.session # This first module should be ignored, it doesn't contain any risks session.addChild(model.Module( zodb_path="1", module_id="1", )) # Between the next two modules, the first one (root-level) must be # returned. module = session.addChild(model.Module( zodb_path="2", module_id="2", )) module = module.addChild(model.Module( zodb_path="2/3", module_id="3", )) module.addChild( model.Risk(zodb_path="2/3/4", risk_id="1", identification="no")) survey = view.context.aq_parent survey.restrictedTraverse = lambda x: object survey.ProfileQuestions = lambda: [] measures = view.get_measures() self.assertEqual(len(measures), 1) self.assertEqual(measures[0][0].module_id, "2")
def test_get_measures_with_correct_module(self): dbsession = Session() session = self._create_session(dbsession) # This first module should be ignored, it doesn't contain any risks session.addChild(model.Module( zodb_path='1', module_id='1', )) # Between the next two modules, the first one (root-level) must be # returned. module = session.addChild(model.Module( zodb_path='2', module_id='2', )) module = module.addChild(model.Module( zodb_path='2/3', module_id='3', )) module.addChild( model.Risk(zodb_path='2/3/4', risk_id='1', identification='no')) request = testRequest() request.survey = mock.Mock() request.survey.restrictedTraverse = lambda x: object request.survey.ProfileQuestions = lambda: [] view = self.ActionPlanTimeline(None, request) view.session = session measures = view.get_measures() self.assertEqual(len(measures), 1) self.assertEqual(measures[0][0].module_id, u'2')
def test_get_measures_with_nested_modules(self): """ """ session = self.createSurveySession() module = model.Module( depth=1, title="Root Module", module_id="1", zodb_path="1", skip_children=False, profile_index=0, ) session.addChild(module) nested_module1 = model.Module( depth=2, title="Nested Module 1", module_id="2", zodb_path="1/1", skip_children=False, profile_index=1, ) module.addChild(nested_module1) nested_module2 = model.Module( depth=3, title="Nested Module 2", module_id="3", zodb_path="1/1/1", skip_children=False, profile_index=2, ) nested_module1.addChild(nested_module2) risk = model.Risk( depth=4, title="Floors are washed", risk_id="1", zodb_path="1/1/1/1", type="risk", priority="low", identification="no", action_plans=[ model.ActionPlan( action_plan="Do something awesome", planning_start=datetime.date(2013, 3, 4), ) ], ) nested_module2.addChild(risk) view = self.ActionPlanTimeline(None, None) view.session = self.session measures = view.get_measures() self.assertEqual(len(measures), 1) self.assertEqual( measures[0][0].title, "Nested Module 2", )
def testQuestionAtPreviousModule(self): (session, survey) = createSurvey() mod1 = model.Module(title="Module 1", module_id="1", zodb_path="1") survey.addChild(mod1) q1 = model.Risk(title="Risk 1", risk_id="1", zodb_path="1/1") mod1.addChild(q1) mod2 = model.Module(title="Module 2", module_id="2", zodb_path="2") survey.addChild(mod2) self.assertTrue(navigation.FindPreviousQuestion(mod2, survey) is q1)
def test_get_measures_with_nested_modules(self): """ """ session = self.createSurveySession() module = model.Module( depth=1, title=u'Root Module', module_id='1', zodb_path='1', skip_children=False, profile_index=0, ) session.addChild(module) nested_module1 = model.Module( depth=2, title=u'Nested Module 1', module_id='2', zodb_path='1/1', skip_children=False, profile_index=1, ) module.addChild(nested_module1) nested_module2 = model.Module( depth=3, title=u'Nested Module 2', module_id='3', zodb_path='1/1/1', skip_children=False, profile_index=2, ) nested_module1.addChild(nested_module2) risk = model.Risk( depth=4, title=u'Floors are washed', risk_id='1', zodb_path='1/1/1/1', type='risk', priority=u'low', identification='no', action_plans=[ model.ActionPlan( action_plan=u"Do something awesome", planning_start=datetime.date(2013, 3, 4)) ] ) nested_module2.addChild(risk) view = self.ActionPlanTimeline(None, None) view.session = self.session measures = view.get_measures() self.assertEqual(len(measures), 1) self.assertEqual( measures[0][0].title, u'Nested Module 2', )
def testChildOrder(self): (ses, survey) = createSurvey() root = survey.addChild(model.Module(title="Root", module_id="1", zodb_path="1")) ses.add(root) ses.flush() root.addChild(model.Module(title="Profile 5", module_id="5", zodb_path="1/5")) root.addChild(model.Module(title="Profile 1", module_id="1", zodb_path="1/1")) root.addChild(model.Module(title="Profile 3", module_id="3", zodb_path="1/3")) ses.flush() self.assertEqual([c.module_id for c in list(root.children())], ["5", "1", "3"])
def testQuestionIsNextModule(self): (session, survey) = createSurvey() mod1 = model.Module(title="Module 1", module_id="1", zodb_path="1") survey.addChild(mod1) q1 = model.Risk(title="Risk 1", risk_id="1", zodb_path="1/2") mod1.addChild(q1) mod2 = model.Module(title="Module 2", module_id="2", zodb_path="2", has_description=True) survey.addChild(mod2) self.assertTrue(navigation.FindNextQuestion(q1, survey) is mod2)
def testQuestionAtPreviousModuleWithSkippedChildren(self): (session, survey) = createSurvey() mod1 = model.Module(title=u"Module 1", module_id="1", zodb_path="1", has_description=True, skip_children=True) survey.addChild(mod1) q1 = model.Risk(title=u"Risk 1", risk_id="1", zodb_path="1/1") mod1.addChild(q1) mod2 = model.Module(title=u"Module 2", module_id="2", zodb_path="2") survey.addChild(mod2) self.failUnless(navigation.FindPreviousQuestion(mod2, survey) is mod1)
def testSkipModuleWithoutRisks(self): (session, survey) = createSurvey() mod1 = model.Module(title="Module 1", module_id="1", zodb_path="1", skip_children=False) survey.addChild(mod1) mod11 = model.Module(title="Module 1.1", module_id="11", zodb_path="1/1", skip_children=False) mod1.addChild(mod11) self.assertEqual( navigation.FindNextQuestion(mod1, survey, self.filter()), None)
def test_optional_module(self): self.mod1 = self.survey.addChild( model.Module(title="module 1", module_id="1", zodb_path="a")) self.q1 = self.mod1.addChild( model.Risk(title="question 1", risk_id="1", zodb_path="a/b")) self.mod2 = self.survey.addChild( model.Module(title="module 2", module_id="2", zodb_path="k")) self.q2 = self.mod2.addChild( model.Risk(title="question 2", risk_id="2", zodb_path="k/c")) self.q1.postponed = False self.q1.identification = "yes" self.mod2.skip_children = True with self._get_view("webhelpers", self.portal.client) as view: view.update_completion_percentage(self.survey) self.assertEqual(self.survey.completion_percentage, 100)
def test_get_measures_order_by_priority(self): session = self.createSurveySession() module = model.Module( title=u'Root', module_id='1', zodb_path='1', skip_children=False) session.addChild(module) module.addChild(model.Risk( title=u'Risk 1', risk_id='2', zodb_path='1/2', type='risk', priority=u'low', identification='no', action_plans=[model.ActionPlan( action_plan=u"Do something awesome", planning_start=datetime.date(2013, 3, 4))])) module.addChild(model.Risk( title=u'Risk 2', risk_id='3', zodb_path='1/3', type='risk', priority=u'high', identification='no', action_plans=[model.ActionPlan( action_plan=u"Do something awesome", planning_start=datetime.date(2013, 5, 2))])) module.addChild(model.Risk( title=u'Risk 3', risk_id='4', zodb_path='1/4', type='risk', priority=u'medium', identification='no', action_plans=[model.ActionPlan( action_plan=u"Do something awesome", planning_start=datetime.date(2013, 4, 1))])) view = self.ActionPlanTimeline(None, None) view.session = self.session measures = view.get_measures() self.assertEqual( [risk.priority for (m, risk, measure) in measures], [u'high', u'medium', u'low'])
def testNoProfileQuestions(self): survey = self.createClientSurvey() survey.invokeFactory('euphorie.module', '1') session = self.createSurveySession() session.addChild( model.Module(title=u'Root', module_id='1', zodb_path='1')) self.assertEqual(self.extractProfile(survey, session), {})
def test_get_measures_order_by_start_date(self): dbsession = Session() session = self._create_session(dbsession) module = session.addChild( model.Module( session=session, zodb_path='1', module_id='1', )) module.addChild( model.Risk(session=session, zodb_path='1/2', risk_id='1', identification='no', action_plans=[ model.ActionPlan(action_plan=u'Plan 2', planning_start=datetime.date( 2011, 12, 15)), model.ActionPlan(action_plan=u'Plan 1', planning_start=datetime.date( 2011, 11, 15)) ])) request = testRequest() request.survey = mock.Mock() request.survey.restrictedTraverse = lambda x: object request.survey.ProfileQuestions = lambda: [] setRequest(request) view = self.ActionPlanTimeline(None, request) view.session = session measures = view.get_measures() self.assertEqual(len(measures), 2) self.assertEqual([row[2].action_plan for row in measures], [u'Plan 1', u'Plan 2'])
def testQuerying(self): (self.session, self.survey) = createSurvey() self.mod1 = model.Module(title=u"Module 1", module_id="1", zodb_path="1", skip_children=False) self.survey.addChild(self.mod1) self.q1 = model.Risk(title=u"Risk 1", risk_id="1", zodb_path="1/1", type="risk", identification="no") self.mod1.addChild(self.q1) self.assertEqual(self.query().count(), 2) self.q2 = model.Risk(title=u"Risk 2", risk_id="2", zodb_path="1/2", type="risk", identification="no", is_custom_risk="true") self.mod1.addChild(self.q1) self.assertEqual(self.query().count(), 2) self.q2 = model.Risk(title=u"Risk 3", risk_id="2", zodb_path="1/3", type="risk", identification="no", is_custom_risk="false") self.mod1.addChild(self.q1) self.assertEqual(self.query().count(), 2)
def test_get_measures_order_by_start_date(self): view = self._get_timeline() session = view.context.session module = session.addChild( model.Module( session=session, zodb_path="1", module_id="1", )) module.addChild( model.Risk( session=session, zodb_path="1/2", risk_id="1", identification="no", action_plans=[ model.ActionPlan(action="Plan 2", planning_start=datetime.date( 2011, 12, 15)), model.ActionPlan(action="Plan 1", planning_start=datetime.date( 2011, 11, 15)), ], )) survey = view.context.aq_parent survey.restrictedTraverse = lambda x: object survey.ProfileQuestions = lambda: [] measures = view.get_measures() self.assertEqual(len(measures), 2) self.assertEqual([row[2].action for row in measures], ["Plan 1", "Plan 2"])
def test_get_measures_filter_on_session(self): dbsession = Session() sessions = [] for login in ['jane', 'john']: session = self._create_session(dbsession, loginname=login) module = session.addChild( model.Module( session=session, zodb_path='1', module_id='1', )) module.addChild( model.Risk(session=session, zodb_path='1/2', risk_id='1', identification='no', action_plans=[ model.ActionPlan( action_plan=u'Measure 1 for %s' % login) ])) sessions.append(session) request = testRequest() request.survey = mock.Mock() request.survey.restrictedTraverse = lambda x: object request.survey.ProfileQuestions = lambda: [] setRequest(request) view = self.ActionPlanTimeline(None, request) view.session = sessions[0] measures = view.get_measures() self.assertEqual(len(measures), 1) self.assertEqual(measures[0][2].action_plan, 'Measure 1 for jane')
def test_create_workbook_no_problem_description(self): view = self._get_timeline() module = model.Module( zodb_path="1", path="001", title="Top-level Module title", ) risk = model.Risk( zodb_path="1/2/3", risk_id="1", title="Risk title", priority="high", identification="no", path="001002003", comment="Risk comment", ) survey = view.context.aq_parent survey.ProfileQuestions = lambda: [] zodb_node = mock.Mock() zodb_node.title = "Risk title." zodb_node.problem_description = " " survey.restrictedTraverse.return_value = zodb_node view.getRisks = lambda x: [(module, risk)] sheet = view.create_workbook().worksheets[0] self.assertEqual(sheet["I2"].value, "Risk title")
def test_create_workbook_no_problem_description(self): dbsession = Session() session = self._create_session(dbsession) module = model.Module( zodb_path='1', path='001', title=u'Top-level Module title', ) risk = model.Risk(zodb_path='1/2/3', risk_id='1', title=u'Risk title', priority='high', identification='no', path='001002003', comment=u'Risk comment') request = testRequest() request.survey = mock.Mock() request.survey.ProfileQuestions = lambda: [] zodb_node = mock.Mock() zodb_node.title = u'Risk title.' zodb_node.problem_description = u' ' request.survey.restrictedTraverse.return_value = zodb_node setRequest(request) view = self.ActionPlanTimeline(None, request) view.session = session view.getRisks = lambda x: [(module, risk)] sheet = view.create_workbook().worksheets[0] self.assertEqual(sheet.cell('J2').value, u'Risk title')
def test_get_measures_filter_on_session(self): view = self._get_timeline() sessions = [ view.context.session, self._create_session(), ] for session in sessions: module = session.addChild( model.Module( session=session, zodb_path="1", module_id="1", )) module.addChild( model.Risk( session=session, zodb_path="1/2", risk_id="1", identification="no", action_plans=[ model.ActionPlan(action="Measure 1 for %s" % session.account.loginname) ], )) survey = view.context.aq_parent survey.restrictedTraverse = lambda x: object survey.ProfileQuestions = lambda: [] measures = view.get_measures() self.assertEqual(len(measures), 1) self.assertEqual(measures[0][2].action, "Measure 1 for [email protected]")
def setUp(self): super(TestCloningViews, self).setUp() self.loginAsPortalOwner() addSurvey(self.portal, BASIC_SURVEY) self.jane = addAccount("*****@*****.**", password="******") self.john = addAccount("*****@*****.**", password="******") group = model.Group(group_id="1") model.Session.add(group) self.jane.group = group self.john.group = group model.Session.flush() survey_session = model.SurveySession( title="Dummy session", created=datetime(2012, 4, 22, 23, 5, 12), modified=datetime(2012, 4, 23, 11, 50, 30), zodb_path="nl/ict/software-development", account=self.jane, group=group, company=model.Company(country="nl", employees="1-9", referer="other"), ) module = survey_session.addChild( model.Module(title="module 1", module_id="1", zodb_path="a")) risk = module.addChild( model.Risk(title="question 1", risk_id="1", zodb_path="a/b")) model.ActionPlan(action_plan="This is the plan", risk=risk) model.Session.add(survey_session)
def testRemoveModule(self): session = self.createSurveySession() session.addChild( model.Module(title="Root", module_id="1", zodb_path="1")) survey = self.createClientSurvey() changes = update.treeChanges(session, survey) self.assertEqual(changes, set([("1", "module", "remove")]))
def testNoChildren(self): (self.session, self.survey) = createSurvey() self.session.add(self.survey) self.mod1 = model.Module( title="Module 1", module_id="1", zodb_path="1", skip_children=False ) self.survey.addChild(self.mod1) self.assertEqual(self.query().count(), 0)
def test_skip_module_without_description(self): (session, survey) = createSurvey() mod1 = model.Module(title=u"Module 1", module_id="1", zodb_path="1", has_description=True) survey.addChild(mod1) q1 = model.Risk(title=u"Risk 1", risk_id="1", zodb_path="1/1") mod1.addChild(q1) mod2 = model.Module(title=u"Module 2", module_id="2", zodb_path="2", has_description=False) survey.addChild(mod2) mod3 = model.Module(title=u"Module 3", module_id="3", zodb_path="3") survey.addChild(mod3) self.failUnless(navigation.FindPreviousQuestion(mod3, survey) is q1)
def test_ignore_module_without_description(self): (session, survey) = createSurvey() mod1 = model.Module(title="Module 1", module_id="1", zodb_path="1") survey.addChild(mod1) q1 = model.Risk(title="Risk 1", risk_id="1", zodb_path="1/1") mod1.addChild(q1) mod2 = model.Module(title="Module 2", module_id="2", zodb_path="2", has_description=False) survey.addChild(mod2) mod3 = model.Module(title="Module 3", module_id="3", zodb_path="3", has_description=True) survey.addChild(mod3) self.assertTrue(navigation.FindNextQuestion(q1, survey) is mod3)
def testProfileActsAsModule(self): session = self.createSurveySession() session.addChild( model.Module(title="Root", module_id="1", zodb_path="1")) survey = self.createClientSurvey() survey.invokeFactory("euphorie.profilequestion", "1") changes = update.treeChanges(session, survey) self.assertEqual(changes, set([]))
def testOptionalProfileQuestionSelected(self): survey = self.createClientSurvey() survey.invokeFactory("euphorie.profilequestion", "1") pq = survey["1"] pq.use_location_question = False session = self.createSurveySession() session.addChild(model.Module(title="Root", module_id="1", zodb_path="1")) self.assertEqual(self.extractProfile(survey, session), {"1": True})
def testOptionalProfileQuestionSelected(self): survey = self.createClientSurvey() survey.invokeFactory('euphorie.profilequestion', '1') pq = survey['1'] pq.use_location_question = False session = self.createSurveySession() session.addChild( model.Module(title=u'Root', module_id='1', zodb_path='1')) self.assertEqual(self.extractProfile(survey, session), {'1': True})