def test_load_course_output_matches_value(fs): fixture_path = os.path.join(os.path.dirname( __file__), 'fixtures', "fake_course") fs.add_real_directory(fixture_path) result = load_course(fixture_path) assert result.target_language == Language( name="French", code="fr" ) assert result.source_language == Language( name="English", code="en") assert result.license == License(name='CC BY 3.0', full_name='CC BY 3.0', link='https://www.example.com/license') assert result.dictionary == [ DictionaryItem("the man", ["l'homme"], False), DictionaryItem("l'homme", ["the man"], True), DictionaryItem("the woman", ["la femme"], False), DictionaryItem("la femme", ["the woman"], True), ] assert len(result.modules) == 1 assert result.modules[0].title == "Basics" assert len(result.modules[0].skills) == 1 assert result.modules[0].skills[0] == Skill( name="Hello", id=4, image_set=["people1", "woman1", "man1"], phrases=result.modules[0].skills[0].phrases, words=result.modules[0].skills[0].words, ) assert result.modules[0].skills[0].phrases == [ Phrase( in_target_language=['La femme dit bonjour', 'la femme dit salut'], in_source_language=['The woman says hello', 'The woman says hi']), Phrase( in_target_language=["L'homme dit bonjour", "L'homme dit salut"], in_source_language=['The man says hello', 'The man says hi'])] assert result.modules[0].skills[0].words == [ Word( in_target_language=["l'homme"], in_source_language=['the man'], pictures=['man1', 'man2', 'man3'] ), Word( in_target_language=['la femme', 'la dame'], in_source_language=['the woman', 'the female'], pictures=None ) ] assert result.special_characters == [ 'Ç', 'é', 'â', 'ê', 'î', 'ô', 'û', 'à', 'è', 'ù', 'ë', 'ï', 'ü' ]
def test_load_dictionary_includes_reverse_word_from_new_word(module_with_word): _, in_source_language, in_target_language = module_with_word dict_item = DictionaryItem( word=in_target_language[0], definition=in_source_language, reverse=True ) assert dict_item in load_dictionary([module_with_word[0]])
def test_load_dictionary_includes_word_from_mini_dictionary(module_with_word): module, _, __ = module_with_word module.skills[0] = Skill( **{ **module.skills[0]._asdict(), "dictionary": [("foo", ("bar", "baz"), False)] }) assert DictionaryItem("foo", "bar\nbaz", False) in load_dictionary([module_with_word[0]])
def load_dictionary(modules): items = [] for key, definition in get_merged_dictionary_items(modules): word, reverse = key items.append(DictionaryItem( word=word, definition=list(sorted(definition)), reverse=reverse, )) return items
def test_skips_non_matching_definitions(self): word = fakes.fake_value() meaning = fakes.fake_value() is_in_target_language = fakes.fake_value() my_course = fakes.customize(fakes.course1, dictionary=[ DictionaryItem( word=None, definition=None, is_in_target_language=None ), DictionaryItem( word=word, definition=meaning, is_in_target_language=is_in_target_language ), ]) assert define_word(my_course, word, is_in_target_language=is_in_target_language) == { "word": word, "definition": meaning }
def test_skips_empty_definition(self): word = fakes.fake_value() my_course = fakes.customize(fakes.course1, dictionary=[ DictionaryItem( word=word, definition="", is_in_target_language=False ), ]) assert define_word(my_course, word, is_in_target_language=False) == { "word": word, }
def test_doesnt_include_definition_with_different_is_in_target_language(self): word = fakes.fake_value() meaning = fakes.fake_value() is_in_target_language = fakes.fake_value() my_course = fakes.customize(fakes.course1, dictionary=[ DictionaryItem( word=word, definition=meaning, is_in_target_language=False ), ]) assert define_word(my_course, word, is_in_target_language=is_in_target_language) == { "word": word, }
def load_dictionary(modules): """ Generates a dictionary using every skill in every module that is passed in the argument """ items = [] for key, definition in get_merged_dictionary_items(modules): word, is_in_target_language = key items.append( DictionaryItem( word=word, definition="\n".join(sorted(definition)), is_in_target_language=is_in_target_language, )) return items
def test_doesnt_include_definition_with_different_word(self): word = fakes.fake_value() meaning = fakes.fake_value() is_in_target_language = fakes.fake_value() my_course = Course( **{ **(fakes.course1._asdict()), "dictionary": [ DictionaryItem( word=word, definition=meaning, is_in_target_language=is_in_target_language ), ] }, ) assert define_word(my_course, "asd", is_in_target_language=is_in_target_language) == { "word": "asd", }
def test_includes_definition(self): word = fakes.fake_value() meaning = fakes.fake_value() is_in_target_language = fakes.fake_value() my_course = Course( **{ **(fakes.course1._asdict()), "dictionary": [ DictionaryItem( word=word, definition=meaning, is_in_target_language=is_in_target_language ), ] }, ) assert define_word(my_course, word, is_in_target_language=is_in_target_language) == { "word": word, "definition": meaning }