def test_each_answer_is_validated(self):
     self.assertEqual(
         None,
         CompletedAudit(
             title="Title",
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
             unresolved_count=4,
             answers=[
                 VALID_ANSWER,
                 VALID_ANSWER,
                 VALID_ANSWER,
                 VALID_ANSWER,
             ],
         ).validate())
     self.assertRaises(
         ValidationError,
         CompletedAudit(
             title="Title",
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
             unresolved_count=4,
             answers=[
                 VALID_ANSWER,
                 VALID_ANSWER,
                 OTHER_NO_COMMENT_ANSWER,
                 VALID_ANSWER,
             ],
         ).validate)
 def test_title_min_length(self):
     character_minimum = ""
     for _ in range(0, TITLE_MIN_LENGTH):
         character_minimum += "a"
     too_few_characters = character_minimum[1:]
     self.assertEqual(
         None,
         CompletedAudit(
             title=character_minimum,
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
             unresolved_count=1,
             answers=[VALID_ANSWER],
         ).validate())
     self.assertRaises(
         ValidationError,
         CompletedAudit(
             title=too_few_characters,
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
             unresolved_count=1,
             answers=[VALID_ANSWER],
         ).validate)
 def test_unresolved_count_matches_unresolved_answers(self):
     self.assertEqual(
         None,
         CompletedAudit(
             title="Title",
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
             unresolved_count=4,
             answers=[
                 VALID_ANSWER,
                 VALID_ANSWER,
                 VALID_ANSWER,
                 VALID_ANSWER,
             ],
         ).validate())
     self.assertRaises(
         ValidationError,
         CompletedAudit(
             title="Title",
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
             answers=[
                 VALID_ANSWER,
                 VALID_ANSWER,
                 VALID_ANSWER,
                 VALID_ANSWER,
             ],
         ).validate)
Beispiel #4
0
 def show_audit_list(self, instance):
     show = AuditListPop()
     show.title = "Related completed audits for the question: " + instance.text + " from " + instance.audit_title
     audit_list = list(
         CompletedAudit.objects(title=instance.audit_title,
                                severity=Severity.red()))
     self.populate_audit_list_pop(audit_list, show, instance.text, show)
     show.open()
Beispiel #5
0
    def grab_audits_with_title(self, title):
        audits_with_title = []

        for audit in list(CompletedAudit.objects()):
            if difflib.get_close_matches(title.lower(), [audit.title.lower()]):
                audits_with_title.append(audit)

        return audits_with_title
 def test_answers_are_required(self):
     self.assertEqual(
         None,
         CompletedAudit(
             title="Title",
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
             unresolved_count=1,
             answers=[VALID_ANSWER],
         ).validate())
     self.assertRaises(
         ValidationError,
         CompletedAudit(
             title="Title",
             datetime=datetime.now(),
             auditor="Auditor",
             severity=Severity.green(),
         ).validate)
 def resolve_submit(self):
     audit_to_resolve = CompletedAudit.objects() \
         .filter(title=self.resolve_button.title,
                 auditor=self.resolve_button.auditor,
                 datetime=self.resolve_button.datetime) \
         .get(title=self.resolve_button.title,
              auditor=self.resolve_button.auditor,
              datetime=self.resolve_button.datetime)
     # Remove string label, which has 17 chars as defined in CompletedAuditPage.add_question_answer
     audit_answer_to_resolve = audit_to_resolve.answers.filter(text=self.question_text[17:]) \
         .get(text=self.question_text[17:])
     audit_answer_to_resolve.resolved = True
     audit_to_resolve.unresolved_count -= 1
     audit_to_resolve.save()
     self.remove_widget(self.resolve_button)
Beispiel #8
0
    def retrieve_flagged_answers(self):
        self.unique_entry_rows = []
        completed_audits = list(
            CompletedAudit.objects(severity=Severity.red()))

        # Go over each flagged answer and append them to a local 3d-array while counting the number of repeated flags
        for audit in completed_audits:
            for answer in audit.answers:
                if answer.severity == Severity.red():
                    is_unique_row = True
                    for entry_row in self.unique_entry_rows:
                        if entry_row[0] == audit.title and entry_row[
                                1] == answer.text:
                            entry_row[2] += 1
                            is_unique_row = False
                            break
                    if is_unique_row:
                        self.unique_entry_rows.append(
                            [audit.title, answer.text, 1])

        # Default Sort
        self.sort_by_times_flagged()
Beispiel #9
0
    def test_storage_and_retrieval(self):
        title = "Boiler Room Shenanigans"
        auditor = "Erik The Auditor"

        a0_text = "Did you stick your head in the boiler?"
        a0_severity = Severity.red()
        a0_response = Response.yes()

        a1_text = "Was there dust on the machine?"
        a1_severity = Severity.yellow()
        a1_response = Response.no()

        a2_text = "Did you clean the machine?"
        a2_severity = Severity.green()
        a2_response = Response.other()
        a2_comment = "There was no dust on the machine to clean."

        CompletedAuditBuilder() \
            .with_title(title) \
            .with_auditor(auditor) \
            .with_answer(
            Answer(
                text=a0_text,
                severity=a0_severity,
                response=a0_response,
            )
        ).with_answer(
            Answer(
                text=a1_text,
                severity=a1_severity,
                response=a1_response,
            )
        ).with_answer(
            Answer(
                text=a2_text,
                severity=a2_severity,
                response=a2_response,
                comment=a2_comment,
            )
        ).build().save()

        audits = CompletedAudit.objects(title=title)

        self.assertEqual(title, audits[0].title)
        self.assertEqual(1, len(audits))
        self.assertEqual(3, len(audits[0].answers))

        audit = audits[0]

        a0_text = "Did you stick your head in the boiler?"
        a0_severity = Severity.red()
        a0_response = Response.yes()

        a1_text = "Was there dust on the machine?"
        a1_severity = Severity.yellow()
        a1_response = Response.no()

        a2_text = "Did you clean the machine?"
        a2_severity = Severity.green()
        a2_response = Response.other()
        a2_comment = "There was no dust on the machine to clean."

        self.assertEqual(a0_text, audit.answers[0].text)
        self.assertEqual(a0_severity, audit.answers[0].severity)
        self.assertEqual(a0_response, audit.answers[0].response)
        self.assertEqual(None, audit.answers[0].comment)

        self.assertEqual(a1_text, audit.answers[1].text)
        self.assertEqual(a1_severity, audit.answers[1].severity)
        self.assertEqual(a1_response, audit.answers[1].response)
        self.assertEqual(None, audit.answers[1].comment)

        self.assertEqual(a2_text, audit.answers[2].text)
        self.assertEqual(a2_severity, audit.answers[2].severity)
        self.assertEqual(a2_response, audit.answers[2].response)
        self.assertEqual(a2_comment, audit.answers[2].comment)

        self.assertGreaterEqual(datetime.utcnow(), audit.datetime)
Beispiel #10
0
    def load_audit_template_and_completed_audit_with_title_and_datetime(self, dt):
        ca = list(CompletedAudit.objects(datetime=dt))

        return ca[0]
Beispiel #11
0
 def get_completed_audit(self):
     ca_list = list(CompletedAudit.objects(datetime=self.dt_obj))
     return ca_list[0]
Beispiel #12
0
 def load_completed_audits(self):
     self.audits = list(CompletedAudit.objects().only(
         "title", "datetime", "auditor", "severity", "unresolved_count"))
     self.sort_by_severity()
     self.refresh_completed_audits()
Beispiel #13
0
 def load_completed_audits(self):
     self.audits = list(CompletedAudit.objects().only(
         "title", "datetime", "auditor"))
     self.sort_by_date()
     self.refresh_completed_audits()