示例#1
0
    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',
        )
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
    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")
示例#5
0
 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')
示例#6
0
    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",
        )
示例#7
0
 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)
示例#8
0
    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',
        )
示例#9
0
 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"])
示例#10
0
 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)
示例#11
0
 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)
示例#12
0
 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)
示例#13
0
    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)
示例#14
0
    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'])
示例#15
0
 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), {})
示例#16
0
    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'])
示例#17
0
    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)
示例#18
0
    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"])
示例#19
0
    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')
示例#20
0
 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")
示例#21
0
 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')
示例#22
0
    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]")
示例#23
0
    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)
示例#24
0
 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")]))
示例#25
0
 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)
示例#26
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)
示例#27
0
 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)
示例#28
0
 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([]))
示例#29
0
 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})
示例#30
0
 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})