예제 #1
0
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 == [
        'Ç', 'é', 'â', 'ê', 'î', 'ô', 'û', 'à', 'è', 'ù', 'ë', 'ï', 'ü'
    ]
예제 #2
0
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]])
예제 #3
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]])
예제 #4
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
예제 #5
0
 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
     }
예제 #6
0
 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,
     }
예제 #7
0
 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,
     }
예제 #8
0
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
예제 #9
0
 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",
     }
예제 #10
0
 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
     }