Example #1
0
    def test_reporter_logs_in_after_he_clicked_on_his_department(self):
        rep1 = create_role(Reporter, 'rep1')
        rep2 = create_role(Reporter, 'rep2')
        # there are two departments with several published incidents
        dept1 = mommy.make_recipe('cirs.department', reporter=rep1)
        dept2 = mommy.make_recipe('cirs.department', reporter=rep2)
        for dept in (dept1, dept2):
            pis = mommy.make_recipe('cirs.published_incident', critical_incident__department=dept,
                              _quantity=5)
            for pi in pis:
                mommy.make_recipe('cirs.translated_pi', master=pi)

        # user goes to the incidents list for his department
        self.browser.get(self.live_server_url + dept1.get_absolute_url())

        # he logs in
        self.find_input_and_enter_text('username', rep1.user.username, By.NAME)
        self.find_input_and_enter_text('password', rep1.user.username, By.NAME)
        self.find_input_and_enter_text('password', Keys.RETURN, By.NAME)
        
        incidents = self.get_column_from_table_as_list('tableIncidents')
    
        # and sees table with published incident from his department, but not from another
        for pi in PublishableIncident.objects.filter(critical_incident__department=dept1):
            self.assertIn(pi.incident, incidents)
        for pi in PublishableIncident.objects.exclude(critical_incident__department=dept1):
            self.assertNotIn(pi.incident, incidents)
Example #2
0
    def test_reviewer_can_comment_on_incident(self):
        # reporter entered his comment already
        comment_text = "I have some remarks on this incident!"
        Comment.objects.create(critical_incident=self.incident,
                               author=self.reporter,
                               text=comment_text)
        # reviewer logs in and goes to the incident page
        # he needs a reviewer role
        # and has belong to the department
        create_role(Reviewer, self.reviewer)
        self.incident.department.reviewers.add(self.reviewer.reviewer)
        self.quick_backend_login(self.reviewer,
                                 self.incident.get_absolute_url())

        # and sees the coment made by the reporter
        self.check_if_comment_in_the_last_row(comment_text)

        # now he can comment himself
        comment_text = "I still have some questions:"
        self.create_comment(comment_text)

        # check if the new comment is the last one
        self.check_if_comment_in_the_last_row(comment_text)

        # but now there is no email as reviewer made a comment himself
        self.assertEqual(len(mail.outbox), 0)  # @UndefinedVariable
Example #3
0
 def setUp(self):
     super(CriticalIncidentListTest, self).setUp()
     create_role(Reporter, self.reporter)
     self.dept = mommy.make_recipe('cirs.department',
                                   reporter=self.reporter.reporter)
     self.dept.labcirsconfig.mandatory_languages = ['en']
     self.dept.labcirsconfig.save()
Example #4
0
 def test_reviewer_can_access_incident_without_code(self):
     # he has to have reviewer role and belong to the department
     create_role(Reviewer, self.reviewer)
     self.incident.department.reviewers.add(self.reviewer.reviewer)
     self.quick_backend_login(self.reviewer)
     self.browser.get(self.absolute_incident_url)
     time.sleep(1)  # TODO: chang to location of item!
     self.assertEqual(self.browser.current_url, self.absolute_incident_url)
Example #5
0
 def test_reviewer_can_access_incident_without_code(self):
     # he has to have reviewer role and belong to the department
     create_role(Reviewer, self.reviewer)
     self.incident.department.reviewers.add(self.reviewer.reviewer)
     self.quick_backend_login(self.reviewer)
     self.browser.get(self.absolute_incident_url)
     time.sleep(1) # TODO: chang to location of item!
     self.assertEqual(self.browser.current_url, self.absolute_incident_url)
 def test_reviewer_with_department_is_redirected_to_admin(self):
     reviewer = create_role(Reviewer, 'rev')
     self.dept.reviewers.add(reviewer)
     self.login_to_department(reviewer.user)
     time.sleep(10)
     redirect_url = '{}{}'.format(self.live_server_url, reverse('admin:index'))
     self.assertEqual(self.browser.current_url, redirect_url)
 def setUp(self):
     super(AccessDataWithMultipleDepts, self).setUp()
     self.rep = create_role(Reporter, 'rep')
     self.rep2 = create_role(Reporter, 'rep2')
     self.rev = create_role(Reviewer, 'rev')
     self.rev2 = create_role(Reviewer, 'rev2')
     self.dept = mommy.make(Department, reporter=self.rep)
     self.dept.reviewers.add(self.rev)
     self.dept2 = mommy.make(Department, reporter=self.rep2)
     self.dept2.reviewers.add(self.rev2)
     self.ci = mommy.make_recipe('cirs.public_ci', department=self.dept)
     self.ci2 = mommy.make_recipe('cirs.public_ci', department=self.dept2)
     self.pi = mommy.make_recipe('cirs.published_incident', critical_incident=self.ci)
     mommy.make_recipe('cirs.translated_pi', master=self.pi)
     self.pi2 = mommy.make_recipe('cirs.published_incident', critical_incident=self.ci2)
     mommy.make_recipe('cirs.translated_pi', master=self.pi2)
 def test_redirect_reviewer_from_create_incident_view_to_list(self):
     user = create_role(Reviewer, 'rev').user
     self.dept.reviewers.add(user.reviewer)
     self.quick_login(user, self.create_url)
     target_url = '{}{}'.format(self.live_server_url,
                                self.dept.get_absolute_url())
     self.assertEqual(self.browser.current_url, target_url)
 def test_reviewer_sees_only_config_of_own_department(self):
     dept1, dept2 = mommy.make_recipe('cirs.department', _quantity=2)
     reviewer = create_role(Reviewer, 'rev')
     dept1.reviewers.add(reviewer)
     self.check_admin_table_for_items(reviewer.user, LabCIRSConfig,
                                      str(dept1.labcirsconfig),
                                      str(dept2.labcirsconfig))
Example #10
0
 def go_to_test_incident_as_reviewer(self):
     self.dept.reviewers.add(create_role(Reviewer, self.reviewer))
     self.browser.get(self.live_server_url + reverse('admin:index'))
     self.login_user(username=self.REVIEWER, password=self.REVIEWER_PASSWORD)
     self.wait.until(EC.presence_of_element_located((By.ID, 'site-name')))
     self.assertIn("/admin/", self.browser.current_url)
     self.click_link_with_text('Critical incidents')
     self.click_link_with_text(test_incident['incident'])
 def test_reviewer_with_department_is_redirected_to_admin(self):
     reviewer = create_role(Reviewer, 'rev')
     self.dept.reviewers.add(reviewer)
     self.login_to_department(reviewer.user)
     time.sleep(10)
     redirect_url = '{}{}'.format(self.live_server_url,
                                  reverse('admin:index'))
     self.assertEqual(self.browser.current_url, redirect_url)
Example #12
0
 def test_reporter_with_department_is_redirected_to_incident_list(self):
     reporter = create_role(Reporter, 'rep')
     self.dept.reporter = reporter
     self.dept.save()
     self.login_to_department(reporter.user)
     time.sleep(10)
     redirect_url = '{}{}'.format(self.live_server_url, self.dept.get_absolute_url())
     self.assertEqual(self.browser.current_url, redirect_url)
 def test_reporter_with_department_is_redirected_to_incident_list(self):
     reporter = create_role(Reporter, 'rep')
     self.dept.reporter = reporter
     self.dept.save()
     self.login_to_department(reporter.user)
     time.sleep(10)
     redirect_url = '{}{}'.format(self.live_server_url,
                                  self.dept.get_absolute_url())
     self.assertEqual(self.browser.current_url, redirect_url)
 def setUp(self):
     super(AccessDataWithMultipleDepts, self).setUp()
     self.rep = create_role(Reporter, 'rep')
     self.rep2 = create_role(Reporter, 'rep2')
     self.rev = create_role(Reviewer, 'rev')
     self.rev2 = create_role(Reviewer, 'rev2')
     self.dept = mommy.make(Department, reporter=self.rep)
     self.dept.reviewers.add(self.rev)
     self.dept2 = mommy.make(Department, reporter=self.rep2)
     self.dept2.reviewers.add(self.rev2)
     self.ci = mommy.make_recipe('cirs.public_ci', department=self.dept)
     self.ci2 = mommy.make_recipe('cirs.public_ci', department=self.dept2)
     self.pi = mommy.make_recipe('cirs.published_incident',
                                 critical_incident=self.ci)
     mommy.make_recipe('cirs.translated_pi', master=self.pi)
     self.pi2 = mommy.make_recipe('cirs.published_incident',
                                  critical_incident=self.ci2)
     mommy.make_recipe('cirs.translated_pi', master=self.pi2)
Example #15
0
 def test_assigned_reporter_not_visible_for_new_dept(self):
     # If a reporter is assigned to an department, he is not visible in
     # the dialog for a new department anymore 
     Department.objects.create(**self.en_dict)
     new_reporter = create_role(Reporter, 'new_reporter')
     self.browser.get(self.live_server_url + '/admin/cirs/department/add/')
     select = Select(self.browser.find_element_by_id('id_reporter'))
     options = [opt.text for opt in select.options]
     expected = [str(new_reporter), '---------']
     self.assertItemsEqual(options, expected,
         'found {} instead {}'.format(', '.join(options), ', '.join(expected)))
Example #16
0
    def test_log_out_and_error_message_for_role_without_department(self, name, role_cls):
        from cirs.views import MISSING_DEPARTMENT_MSG  # necessary only here so far
        role = create_role(role_cls, name)
        self.login_to_department(role.user)

        error_alert = self.wait.until(
            EC.presence_of_element_located((By.CLASS_NAME, 'alert-danger')))
        self.assertEqual(error_alert.text, MISSING_DEPARTMENT_MSG)
        
        with self.assertRaises(NoSuchElementException):
            self.browser.find_element_by_id('navbarMenu')
Example #17
0
 def test_reviewer_can_chose_category_of_incident(self):
     ci = mommy.make_recipe('cirs.public_ci')
     ci.department.reviewers.add(create_role(Reviewer, self.reviewer))
     admin_url = reverse('admin:cirs_criticalincident_change',
                         args=(ci.pk, ))
     self.quick_login(self.reviewer, admin_url)
     # uncollapse the review panel
     self.click_link_with_text('Show')
     Select(self.browser.find_element_by_id('id_status')).select_by_value(
         "in process")
     self.browser.find_element_by_id('id_category')
    def test_log_out_and_error_message_for_role_without_department(
            self, name, role_cls):
        from cirs.views import MISSING_DEPARTMENT_MSG  # necessary only here so far
        role = create_role(role_cls, name)
        self.login_to_department(role.user)

        error_alert = self.wait.until(
            EC.presence_of_element_located((By.CLASS_NAME, 'alert-danger')))
        self.assertEqual(error_alert.text, MISSING_DEPARTMENT_MSG)

        with self.assertRaises(NoSuchElementException):
            self.browser.find_element_by_id('navbarMenu')
Example #19
0
 def test_reviewer_is_redirected_to_his_dept_from_detail_view_of_ci_from_another_dept(self):
     rev = create_role(Reviewer, 'rev')
     dept1, dept2 = mommy.make_recipe('cirs.department', _quantity=2)
     dept1.reviewers.add(rev)
     for dept in (dept1, dept2):
         mommy.make_recipe('cirs.published_incident', critical_incident__department=dept,
                           _quantity=5)
     # he tries to access_detail view of one incident from dept2
     incident = CriticalIncident.objects.filter(department=dept2).first()
     self.quick_login(rev.user, incident.get_absolute_url())
     # but is redirected to his department page
     
     self.assertCurrentUrlIs(dept1.get_absolute_url())
 def test_assigned_reporter_not_visible_for_new_dept(self):
     # If a reporter is assigned to an department, he is not visible in
     # the dialog for a new department anymore
     Department.objects.create(**self.en_dict)
     new_reporter = create_role(Reporter, 'new_reporter')
     self.browser.get(self.live_server_url + '/admin/cirs/department/add/')
     select = Select(self.browser.find_element_by_id('id_reporter'))
     options = [opt.text for opt in select.options]
     expected = [str(new_reporter), '---------']
     self.assertItemsEqual(
         options, expected,
         'found {} instead {}'.format(', '.join(options),
                                      ', '.join(expected)))
Example #21
0
    def test_reviewer_can_comment_on_incident(self):
        # reporter entered his comment already
        comment_text = "I have some remarks on this incident!"
        Comment.objects.create(critical_incident=self.incident,
                               author=self.reporter, text=comment_text)
        # reviewer logs in and goes to the incident page
        # he needs a reviewer role
        # and has belong to the department 
        create_role(Reviewer, self.reviewer)
        self.incident.department.reviewers.add(self.reviewer.reviewer)
        self.quick_backend_login(self.reviewer, self.incident.get_absolute_url())

        # and sees the coment made by the reporter
        self.check_if_comment_in_the_last_row(comment_text)

        # now he can comment himself
        comment_text = "I still have some questions:"
        self.create_comment(comment_text)

        # check if the new comment is the last one
        self.check_if_comment_in_the_last_row(comment_text)
        
        # but now there is no email as reviewer made a comment himself
        self.assertEqual(len(mail.outbox), 0)  # @UndefinedVariable
Example #22
0
    def test_user_can_see_feedback_code(self):
        reporter = create_role(Reporter, self.reporter)
        # create department. In theory I could test if reporter has 
        # an department in the view, but acutally users who are not superuser 
        # and don't have assoziated department cannot efectivly log in
        mommy.make(Department, reporter=reporter)
        self.quick_login_reporter(reverse('create_incident', kwargs={'dept': reporter.department.label}))

        # the reporter enters incident data
        self.enter_test_incident()

        # User sees the success page with code for feedback        
        code_info = self.wait.until(
            EC.presence_of_element_located((By.CLASS_NAME, 'alert-info')))
           
        #there should be only one object in the database
        ci = CriticalIncident.objects.first()
        comment_code = ci.comment_code
        
        self.assertIn(comment_code, code_info.text)
Example #23
0
    def test_reviewer_sees_only_incidents_from_one_department_at_once(self):
        # There is reviewer for two departments
        rev = create_role(Reviewer, 'rev')
        dept1, dept2 = mommy.make_recipe('cirs.department', _quantity=2)
        for dept in (dept1, dept2):
            pis = mommy.make_recipe('cirs.published_incident', critical_incident__department=dept,
                              _quantity=5)
            for pi in pis:
                mommy.make_recipe('cirs.translated_pi', master=pi)
            dept.reviewers.add(rev)
        # he logins and goes to the home page:
        self.quick_login(rev.user, reverse('labcirs_home'))
        # he clicks on first department
        self.click_link_with_text(dept1.label)

        # and sees table with incidents for dept1        
        incidents = self.get_column_from_table_as_list('tableIncidents')
        
        for pi in PublishableIncident.objects.filter(critical_incident__department=dept1):
            self.assertIn(pi.incident, incidents)
        for pi in PublishableIncident.objects.exclude(critical_incident__department=dept1):
            self.assertNotIn(pi.incident, incidents)
Example #24
0
    def test_user_can_see_feedback_code(self):
        reporter = create_role(Reporter, self.reporter)
        # create department. In theory I could test if reporter has
        # an department in the view, but acutally users who are not superuser
        # and don't have assoziated department cannot efectivly log in
        mommy.make(Department, reporter=reporter)
        self.quick_login_reporter(
            reverse('create_incident',
                    kwargs={'dept': reporter.department.label}))

        # the reporter enters incident data
        self.enter_test_incident()

        # User sees the success page with code for feedback
        code_info = self.wait.until(
            EC.presence_of_element_located((By.CLASS_NAME, 'alert-info')))

        #there should be only one object in the database
        ci = CriticalIncident.objects.first()
        comment_code = ci.comment_code

        self.assertIn(comment_code, code_info.text)
 def test_reporter_can_access_create_incident_view(self):
     user = create_role(Reporter, 'rep').user
     self.quick_login(user, self.create_url)
     target_url = '{}{}'.format(self.live_server_url, self.create_url)
     self.assertEqual(self.browser.current_url, target_url)
Example #26
0
 def setUp(self):
     super(CommentTest, self).setUp()
     self.incident = mommy.make(CriticalIncident,
                                public=True,
                                department__reporter=create_role(
                                    Reporter, self.reporter))
Example #27
0
 def setUp(self):
     super(CriticalIncidentListTest, self).setUp()
     create_role(Reporter, self.reporter)
     self.dept = mommy.make_recipe('cirs.department', reporter=self.reporter.reporter)
     self.dept.labcirsconfig.mandatory_languages=['de']
     self.dept.labcirsconfig.save()
Example #28
0
 def test_reviewer_sees_only_config_of_own_department(self):
     dept1, dept2 = mommy.make_recipe('cirs.department', _quantity=2)
     reviewer = create_role(Reviewer, 'rev')
     dept1.reviewers.add(reviewer)
     self.check_admin_table_for_items(
         reviewer.user, LabCIRSConfig, str(dept1.labcirsconfig), str(dept2.labcirsconfig))
Example #29
0
 def setUp(self):
     super(CommentTest, self).setUp()
     self.incident = mommy.make(CriticalIncident, public=True,
         department__reporter=create_role(Reporter, self.reporter))
Example #30
0
 def test_redirect_reviewer_from_create_incident_view_to_list(self):
     user = create_role(Reviewer, 'rev').user
     self.dept.reviewers.add(user.reviewer)
     self.quick_login(user, self.create_url)
     target_url = '{}{}'.format(self.live_server_url, self.dept.get_absolute_url())
     self.assertEqual(self.browser.current_url, target_url)
Example #31
0
 def test_reporter_can_access_create_incident_view(self):
     user = create_role(Reporter, 'rep').user
     self.quick_login(user, self.create_url)
     target_url = '{}{}'.format(self.live_server_url, self.create_url)
     self.assertEqual(self.browser.current_url, target_url)