コード例 #1
0
    def test_fill_empty_success(self):
        # User answer successfully
        original = ['bago_', 'va_as']
        answers = ['ly', 'j']

        value = check_answers(original, answers, self.words)
        self.assertEqual(2, sum(value))
コード例 #2
0
    def test_is_correct_valid_failed(self):
        # Right spelling, user answer unsuccessfully
        original = ['bagoly', 'vajas']
        answers = ['n', 'n']

        value = check_answers(original, answers, self.words)
        self.assertEqual(0, sum(value))
コード例 #3
0
    def test_is_correct_invalid_failed(self):
        # Wrong spelling, user answer unsuccessfully
        original = ['bagoj', 'valyas']
        answers = ['y', 'y']

        value = check_answers(original, answers, self.words)
        self.assertEqual(0, sum(value))
コード例 #4
0
def check_quiz(exam_id):
    # Invalid request
    if "answers" not in request.json:
        abort(400)

    exam_data = ExamData.query.get(exam_id)
    # Exam not exists
    if not exam_data:
        abort(404)

    # Questions already answered
    if exam_data.closed:
        abort(400)

    questions = exam_data.questions.split(",")
    answers = request.json['answers']
    # Not enough answers
    if len(questions) != len(answers):
        abort(400)

    # FYI: It can be a problem if words are deleted from the db
    # between the GET exam and PUT exam...
    words = [word.value for word in Word.query.all()]
    result = check_answers(questions, answers, words)

    exam_data.answers = ",".join(answers)
    exam_data.score = sum(result)
    exam_data.closed = True
    db.session.commit()

    return exam_data_schema.dump(exam_data), 200