def test_get_exclusion_words(self): for i in range(10): text, ws = utils.generate_random_text() exclusion_words = utils.get_exclusion_words(text) self.assertTrue( len(exclusion_words) < len(text.split()) and len(exclusion_words) > 0)
def test_validate_word_count(self): # test 10 randomly generated text for i in range(10): text, words = utils.generate_random_text() cnt = Counter() for word in text.split(): if word not in words.split(): cnt[word] += 1 self.assertTrue(utils.validate_word_count(text, words, dict(cnt)))
def main(): if request.method == "GET": if request.args.get("random"): token = utils.generate_token() text, words = utils.generate_random_text() db_add_text(text, words, token) else: text_model = db_get_random_text() if not text_model: # if nothing in DB, generate random text redirect("/?random=true") text, words, token = text_model resp = { "text": text, "words": words.split(), "token" : token } return jsonify(resp) else: if not request.json or not request.json.get("token") or \ not request.json.get('text') or not request.json.get('words'): abort(400) data = request.json text_model = db_fetch_text(data.get('token')) if not text_model or text_model[0] != data.get('text') or \ not utils.validate_word_count(text_model[0], text_model[1], data.get('words')): abort(400) return jsonify({"status": "success"})
def test_generate_random_text(self): text, words = utils.generate_random_text() for word in words.split(): self.assertTrue(word in text)
def test_get_exclusion_words(self): for i in range(10): text, ws = utils.generate_random_text() exclusion_words = utils.get_exclusion_words(text) self.assertTrue(len(exclusion_words) < len(text.split()) and len(exclusion_words) > 0)