def add_word(self, word_name): """add a word""" try: word_info = get_word_info(word_name) mp3_path = utills.download_mp3(word_info['mp3_url'], word_name) word_store.create( word_info['word_name'], word_info['ph'], word_info['tran_means'], word_info['mp3_url'], mp3_path, ) errno = 0 errmsg = 'success' data = {} except IcibaInvalidWordException: errno = 1 errmsg = "The '{}' cannot found in Iciba.".format(word_name) data = {} except WordRepeatAddException: errno = 1 errmsg = "The '{}' is already in memory store!".format(word_name) data = {} return errno, errmsg, data
def test_review_a_word(self): # TODO I don't know how to test it. # SO, smoke testing. with session_scope() as session: session.query(Word).filter_by(word_name=mock_info.word_info['word_name']).delete() word_id = word_store.create( mock_info.word_info['word_name'], mock_info.word_info['ph'], mock_info.word_info['tran_means'], mock_info.word_info['mp3_url'], '', ) review_hander.review_a_word(word_id, 2) for i in range(3): review_hander.review_a_word(word_id, 5) with session_scope() as session: assert session.query(ReviewList).filter_by(word_id=word_id).first() is None review_list_store.add_word_in_list(word_id) review_hander.review_a_word(word_id, 5) with session_scope() as session: session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.query(Word).filter_by(id=word_id).delete()
def test_create(self): mock_word_info = mock_info.word_info with session_scope() as session: session.query(Word).filter_by( word_name=mock_word_info['word_name']).delete() session.commit() word_id = word_store.create( mock_word_info['word_name'], mock_word_info['ph'], mock_word_info['tran_means'], mock_word_info['mp3_url'], '', ) word_obj = session.query(Word).filter_by(id=word_id).first() assert word_obj.word_name == mock_word_info['word_name'] assert word_obj.ph == mock_word_info['ph'] tran_mean = word_obj.tran_means[0] assert { 'part': tran_mean.part, 'means': json.loads(tran_mean.means) } == mock_word_info['tran_means'][0] assert word_obj.mp3.url == mock_word_info['mp3_url'] assert isinstance(word_obj.word_factor, WordFactor) session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.delete(word_obj) session.query(OptimumFactorMatrix).delete()
def test_get_OF_matrix(self): mock_word_info = mock_info.word_info mock_OF_matrix = mock_info.OF_matrix with session_scope() as session: session.query(Word).filter_by( word_name=mock_word_info['word_name']).delete() word_id = word_store.create( mock_word_info['word_name'], mock_word_info['ph'], mock_word_info['tran_means'], mock_word_info['mp3_url'], '', ) with session_scope() as session: word_factor_id = session.query(WordFactor).filter_by( word_id=word_id).first().id OF_objs = [ OptimumFactorMatrix(word_factor_id=word_factor_id, number=item[0], OF=item[1]) for item in mock_OF_matrix ] session.add_all(OF_objs) assert word_factor_store.get_OF_matrix(word_id) == mock_OF_matrix with session_scope() as session: session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.query(Word).filter_by(id=word_id).delete() session.query(OptimumFactorMatrix).delete()
def test_update_mp3(self): mock_word_info = mock_info.word_info with session_scope() as session: session.query(Word).filter_by( word_name=mock_word_info['word_name']).delete() word_id = word_store.create( mock_word_info['word_name'], mock_word_info['ph'], mock_word_info['tran_means'], mock_word_info['mp3_url'], '', ) mock_path = '/data/mp3/mock.mp3' mock_url = mock_word_info['mp3_url'] + 'mock' word_store.update_mp3(id=word_id, path=mock_path, url=mock_url) assert word_store.get_word(id=word_id)['mp3']['path'] == mock_path assert word_store.get_word(id=word_id)['mp3']['url'] == mock_url with session_scope() as session: session.query(Mp3).delete() session.query(ReviewList).delete() session.query(Word).delete() session.query(OptimumFactorMatrix).delete()
def test_get_words_count(self): with session_scope() as session: session.query(Word).delete() word_store.create( mock_info.word_info['word_name'], mock_info.word_info['ph'], mock_info.word_info['tran_means'], mock_info.word_info['mp3_url'], '', ) assert word_store.get_words_count() == 1 with session_scope() as session: session.query(Mp3).delete() session.query(TranMean).delete() session.query(ReviewList).delete() session.query(Word).delete() session.query(WordFactor).delete() session.query(OptimumFactorMatrix).delete()
def test_get_a_word_id(self): word_id = word_store.create( mock_info.word_info['word_name'], mock_info.word_info['ph'], mock_info.word_info['tran_means'], mock_info.word_info['mp3_url'], '', ) assert isinstance(review_list_store.get_a_word_id(), int) with session_scope() as session: session.query(Mp3).delete() session.query(ReviewList).delete() session.query(Word).delete() session.query(TranMean).delete() session.query(OptimumFactorMatrix).delete()
def test_get_EF(self): mock_word_info = mock_info.word_info with session_scope() as session: session.query(Word).filter_by( word_name=mock_word_info['word_name']).delete() word_id = word_store.create( mock_word_info['word_name'], mock_word_info['ph'], mock_word_info['tran_means'], mock_word_info['mp3_url'], '', ) assert word_factor_store.get_EF(word_id) == 1.3 with session_scope() as session: session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.query(Word).filter_by(id=word_id).delete()
def test_get_factors(self): with session_scope() as session: session.query(Word).filter_by(word_name=mock_info.word_info['word_name']).delete() word_id = word_store.create( mock_info.word_info['word_name'], mock_info.word_info['ph'], mock_info.word_info['tran_means'], mock_info.word_info['mp3_url'], '', ) IF, EF, OF_matrix = review_hander.get_factors(word_id, 0) assert IF == 1 assert EF == MAX_EF assert OF_matrix == [(0, MIN_EF)] # TODO Here need 'else' test with session_scope() as session: session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.query(Word).filter_by(id=word_id).delete()
def test_set_OF_matrix(self): mock_word_info = mock_info.word_info with session_scope() as session: session.query(Word).filter_by( word_name=mock_word_info['word_name']).delete() word_id = word_store.create( mock_word_info['word_name'], mock_word_info['ph'], mock_word_info['tran_means'], mock_word_info['mp3_url'], '', ) word_factor_store.set_OF_matrix(word_id, mock_info.OF_matrix) assert word_factor_store.get_OF_matrix(word_id) == mock_info.OF_matrix with session_scope() as session: session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.query(Word).filter_by(id=word_id).delete() session.query(OptimumFactorMatrix).delete()
def test_set_next_review_time(self): with session_scope() as session: session.query(Word).filter_by( word_name=mock_info.word_info['word_name']).delete() word_id = word_store.create( mock_info.word_info['word_name'], mock_info.word_info['ph'], mock_info.word_info['tran_means'], mock_info.word_info['mp3_url'], '', ) word_factor_store.set_next_review_time( word_id=word_id, next_review_time=mock_info.next_review_time) with session_scope() as session: assert session.query(WordFactor).filter_by(word_id=word_id).first( ).next_review_time == mock_info.next_review_time session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.query(Word).filter_by(id=word_id).delete()
def test_get_words(self): with session_scope() as session: session.query(Word).filter_by( word_name=mock_info.word_info['word_name']).delete() test_word_ids = [] for i in range(10): word_id = word_store.create( mock_info.word_info['word_name'] + str(i), mock_info.word_info['ph'], mock_info.word_info['tran_means'], mock_info.word_info['mp3_url'], '', ) test_word_ids.append(word_id) word_infos = word_store.get_words(ids=test_word_ids, start=2, end=6) assert len(word_infos) == 4 with session_scope() as session: session.query(Mp3).delete() session.query(ReviewList).delete() session.query(Word).delete() session.query(OptimumFactorMatrix).delete()
def test_get_today_word_ids(self): with session_scope() as session: session.query(Word).filter_by( word_name=mock_info.word_info['word_name']).delete() word_id = word_store.create( mock_info.word_info['word_name'], mock_info.word_info['ph'], mock_info.word_info['tran_means'], mock_info.word_info['mp3_url'], '', session=session, ) word_factor = session.query(WordFactor).filter_by( word_id=word_id).first() word_factor.next_review_time = datetime.datetime.now() assert word_factor_store.get_today_word_ids() == [word_id] with session_scope() as session: session.query(Mp3).filter_by(word_id=word_id).delete() session.query(ReviewList).filter_by(word_id=word_id).delete() session.query(WordFactor).filter_by(word_id=word_id).delete() session.query(Word).filter_by(id=word_id).delete()