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))
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))
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))
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