class TestAnswersFactory(object): @classmethod def setup_class(self): self.question = Question(query="pourquoi les francais") lorem_ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.\ Donec a blandit sem. Phasellus porttitor nunc tortor, sit amet \ consectetur nisi vulputate id." self.raw_answers = [ Answer(phrase="sont nuls en anglais"), Answer(phrase="sont mauvais en anglais"), Answer(phrase="parlent mal anglais"), Answer(phrase="quittent la france"), Answer(phrase="partent de france"), Answer(phrase="sont les meilleurs"), Answer(phrase="mangent de la baguette"), Answer(phrase="boivent du vin"), ] for ra in self.raw_answers: ra.search_results = [lorem_ipsum]*6 ra.question = self.question self.question.raw_answers = self.raw_answers self.answers_factory = AnswersFactory() @property def answers(self): return self.answers_factory.get(self.question) def test_got_some_answers(self): assert self.answers def test_got_as_many_answers_as_initial_raw_answers(self): assert len(self.answers) == len(self.raw_answers) def test_each_answer_has_correct_phrase(self): assert set(a.phrase for a in self.answers) == \ set(ra.phrase for ra in self.raw_answers) def test_each_answer_has_correct_question(self): assert set(a.question for a in self.answers) == \ set(ra.question for ra in self.raw_answers) def test_each_answer_has_nonnegative_meta_answer_id(self): assert all(a.meta_answer_id >= 0 for a in self.answers) def test_each_answer_has_keywords_with_nonnegative_weights(self): assert all( all(isinstance(k[0], basestring) and k[1] >= 0 for k in a.keywords.iteritems()) for a in self.answers)
def setup_class(self): self.question = Question(query="pourquoi les francais") lorem_ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.\ Donec a blandit sem. Phasellus porttitor nunc tortor, sit amet \ consectetur nisi vulputate id." self.raw_answers = [ Answer(phrase="sont nuls en anglais"), Answer(phrase="sont mauvais en anglais"), Answer(phrase="parlent mal anglais"), Answer(phrase="quittent la france"), Answer(phrase="partent de france"), Answer(phrase="sont les meilleurs"), Answer(phrase="mangent de la baguette"), Answer(phrase="boivent du vin"), ] for ra in self.raw_answers: ra.search_results = [lorem_ipsum]*6 ra.question = self.question self.question.raw_answers = self.raw_answers self.answers_factory = AnswersFactory()
class Builder(object): def __init__(self): self.answers_factory = AnswersFactory() def run(self): while True: try: question = Question.select().where(Question.processed == False).get() question.mark_as_processed() logging.info("Processing question '%s'" % question) except Question.DoesNotExist as e: break answers = self.answers_factory.get(question) if not answers: logging.error("No answers found for question '%s'" % question) continue for answer in answers: answer.save() logging.info("Question '%s' processed." % question) logging.info("All questions processed.")
def __init__(self): self.answers_factory = AnswersFactory()