Exemple #1
0
    def test_get_errors__verificators_errors(self):
        key = keys.LEXICON_KEY.HERO_COMMON_JOURNAL_LEVEL_UP

        TEXT = u'[hero|загл] [level] [неизвестное слово|hero|вн]'

        template = utg_templates.Template()

        template.parse(TEXT, externals=['hero'])

        verificator_1 = prototypes.Verificator(text=u'абракадабра',
                                               externals={
                                                   'hero': (u'героиня', u''),
                                                   'level': (1, u'')
                                               })
        verificator_2 = prototypes.Verificator(
            text=u'Рыцари 5 w-1-полнприл,мн,вн,од,пол',
            externals={
                'hero': (u'рыцарь', u'мн'),
                'level': (5, u'')
            })
        verificator_3 = prototypes.Verificator(text=u'Герой 2 w-1-ед,вн',
                                               externals={
                                                   'hero': (u'герой', u''),
                                                   'level': (2, u'')
                                               })
        verificator_4 = prototypes.Verificator(text=u'',
                                               externals={
                                                   'hero':
                                                   (u'привидение', u''),
                                                   'level': (5, u'')
                                               })

        dictionary = storage.game_dictionary.item

        word = utg_words.Word.create_test_word(
            type=utg_relations.WORD_TYPE.ADJECTIVE,
            prefix=u'w-1-',
            only_required=True)
        word.forms[0] = u'неизвестное слово'

        dictionary.add_word(word)

        prototype = prototypes.TemplatePrototype.create(key=key,
                                                        utg_template=template,
                                                        raw_template=TEXT,
                                                        verificators=[
                                                            verificator_1,
                                                            verificator_2,
                                                            verificator_3,
                                                            verificator_4
                                                        ],
                                                        author=self.account_1)

        errors = prototype.get_errors()

        self.assertEqual(errors, [
            u'Проверочный текст не совпадает с интерпретацией шаблона<br/>Героиня 1 w-1-полнприл,ед,вн,жр,од,пол<br/>абракадабра',
            u'Проверочный текст не совпадает с интерпретацией шаблона<br/>Герой 2 w-1-полнприл,ед,вн,мр,од,пол<br/>Герой 2 w-1-ед,вн',
            u'Проверочный текст не совпадает с интерпретацией шаблона<br/>Привидение 5 w-1-полнприл,ед,вн,ср,од,пол<br/>'
        ])
Exemple #2
0
    def test_save(self):
        prototype = prototypes.TemplatePrototype.create(
            key=self.key_1,
            raw_template=self.text_1,
            utg_template=self.template_1,
            verificators=[],
            author=self.account_1)
        prototype.utg_template.template = u'xxx'
        prototype.verificators.append(
            prototypes.Verificator(text=u'test-verificator', externals={}))

        with mock.patch(
                'the_tale.linguistics.workers.linguistics_manager.Worker.cmd_game_lexicon_changed'
        ) as cmd_game_lexicon_changed:
            with mock.patch(
                    'the_tale.linguistics.prototypes.TemplatePrototype.update_errors_status'
            ) as update_errors_status:
                with self.check_not_changed(
                        prototypes.TemplatePrototype._db_count):
                    prototype.save()

        prototype.reload()

        self.assertEqual(cmd_game_lexicon_changed.call_count, 1)

        self.assertEqual(update_errors_status.call_count, 1)
        self.assertEqual(prototype.utg_template.template, u'xxx')
        self.assertEqual(
            prototype.verificators,
            [prototypes.Verificator(text=u'test-verificator', externals={})])
Exemple #3
0
    def test_get_errors__no_errors(self):
        key = keys.LEXICON_KEY.HERO_COMMON_JOURNAL_LEVEL_UP

        TEXT = u'[hero|загл] [level] [неизвестное слово|hero|вн]'

        template = utg_templates.Template()

        template.parse(TEXT, externals=['hero'])

        verificator_1 = prototypes.Verificator(
            text=u'Героиня 1 w-1-полнприл,пол,од,ед,вн,жр',
            externals={
                'hero': (u'героиня', u''),
                'level': (1, u'')
            })
        verificator_2 = prototypes.Verificator(
            text=u'Рыцари 5 w-1-полнприл,пол,од,мн,вн',
            externals={
                'hero': (u'рыцарь', u'мн'),
                'level': (5, u'')
            })
        verificator_3 = prototypes.Verificator(
            text=u'Герой 2 w-1-полнприл,пол,од,ед,вн,мр',
            externals={
                'hero': (u'герой', u''),
                'level': (2, u'')
            })
        verificator_4 = prototypes.Verificator(
            text=u'Привидение 5 w-1-полнприл,пол,од,ед,вн,ср',
            externals={
                'hero': (u'привидение', u''),
                'level': (5, u'')
            })

        dictionary = storage.game_dictionary.item

        word = utg_words.Word.create_test_word(
            type=utg_relations.WORD_TYPE.ADJECTIVE,
            prefix=u'w-1-',
            only_required=True)
        word.forms[0] = u'неизвестное слово'

        dictionary.add_word(word)

        prototype = prototypes.TemplatePrototype.create(key=key,
                                                        raw_template=TEXT,
                                                        utg_template=template,
                                                        verificators=[
                                                            verificator_1,
                                                            verificator_2,
                                                            verificator_3,
                                                            verificator_4
                                                        ],
                                                        author=self.account_1)

        self.assertTrue(prototype.errors_status.is_NO_ERRORS)

        errors = prototype.get_errors()

        self.assertEqual(errors, [])
Exemple #4
0
    def test_update(self):
        prototype = prototypes.TemplatePrototype.create(key=self.key_1, raw_template=self.text_1, utg_template=self.template_1, verificators=[], author=None)

        text, template = self.create_template(self.key_1, word=self.word_2)

        restriction_1, restriction_2, restriction_3 = storage.restrictions_storage.all()[:3]

        with mock.patch('the_tale.linguistics.workers.linguistics_manager.Worker.cmd_game_lexicon_changed') as cmd_game_lexicon_changed:
            with mock.patch('the_tale.linguistics.prototypes.TemplatePrototype.update_errors_status') as update_errors_status:
                prototype.update(raw_template=text,
                                 utg_template=template,
                                 verificators=[prototypes.Verificator(text='test-verificator', externals={}),],
                                 restrictions=(('hero', restriction_1.id), ('level', restriction_2.id), ('hero', restriction_3.id)))

        prototype.reload()

        self.assertEqual(cmd_game_lexicon_changed.call_count, 1)

        self.assertEqual(update_errors_status.call_count, 1)
        self.assertEqual(prototype.raw_template, text)
        self.assertEqual(prototype.raw_restrictions, frozenset((('hero', restriction_1.id), ('level', restriction_2.id), ('hero', restriction_3.id))))

        self.assertEqual(prototype.utg_template, template)

        self.assertEqual(prototype.verificators,
                         [prototypes.Verificator(text='test-verificator', externals={})])
Exemple #5
0
    def test_get_verificators__without_old(self):
        groups = lexicon_logic.get_verificators_groups(key=keys.LEXICON_KEY.HERO_COMMON_JOURNAL_LEVEL_UP, old_groups={})
        self.assertEqual(groups, {'date': (8, 0), 'hero': (0, 0), 'level': (1, 0)})

        verificators = prototypes.Verificator.get_verificators(key=self.key, groups=groups)

        self.assertEqual(len(verificators), 4)

        self.assertEqual(verificators[0], prototypes.Verificator(text='', externals={'date': ('18 сухого месяца 183 года', ''), 'hero': ('герой', ''), 'level': (1, '')}))
        self.assertEqual(verificators[1], prototypes.Verificator(text='', externals={'date': ('18 сухого месяца 183 года', ''), 'hero': ('привидение', ''), 'level': (2, '')}))
        self.assertEqual(verificators[2], prototypes.Verificator(text='', externals={'date': ('18 сухого месяца 183 года', ''), 'hero': ('героиня', ''), 'level': (5, '')}))
        self.assertEqual(verificators[3], prototypes.Verificator(text='', externals={'date': ('18 сухого месяца 183 года', ''), 'hero': ('рыцарь', 'мн'), 'level': (1, '')}))
Exemple #6
0
    def test_get_verificators__one_substitutions_type(self):
        groups = lexicon_logic.get_verificators_groups(key=keys.LEXICON_KEY.PVP_USE_ABILITY_BLOOD, old_groups={})
        self.assertEqual(groups, {'date': (8, 0), 'duelist_1': (0, 0), 'duelist_2': (0, 1), 'effectiveness': (1, 0)})

        verificators = prototypes.Verificator.get_verificators(key=self.key, groups=groups)

        self.assertEqual(len(verificators), 4)

        self.assertEqual(verificators[0], prototypes.Verificator(text='',
                                                                 externals={'date': ('18 сухого месяца 183 года', ''), 'duelist_1': ('герой', ''), 'duelist_2': ('чудовище', ''), 'effectiveness': (1, '')}))
        self.assertEqual(verificators[1], prototypes.Verificator(text='',
                                                                 externals={'date': ('18 сухого месяца 183 года', ''), 'duelist_1': ('привидение', ''), 'duelist_2': ('русалка', ''), 'effectiveness': (2, '')}))
        self.assertEqual(verificators[2], prototypes.Verificator(text='',
                                                                 externals={'date': ('18 сухого месяца 183 года', ''), 'duelist_1': ('героиня', ''), 'duelist_2': ('боец', 'мн'),'effectiveness': (5, '')}))
        self.assertEqual(verificators[3], prototypes.Verificator(text='',
                                                                 externals={'date': ('18 сухого месяца 183 года', ''), 'duelist_1': ('рыцарь', 'мн'), 'duelist_2': ('призрак', ''), 'effectiveness': (1, '')}))
Exemple #7
0
    def test_get_errors__no_word_errors(self):
        key = keys.LEXICON_KEY.HERO_COMMON_JOURNAL_LEVEL_UP

        TEXT = u'[hero|загл] [level] [неизвестное слово|hero|вн]'

        template = utg_templates.Template()

        template.parse(TEXT, externals=['hero'])

        # verificators with error that would not be returned becouse of words_errors
        verificator_1 = prototypes.Verificator(text=u'абракадабра',
                                               externals={
                                                   'hero': (u'героиня', u''),
                                                   'level': (1, u'')
                                               })
        verificator_2 = prototypes.Verificator(text=u'Рыцарь 5 w-1-ед,вн',
                                               externals={
                                                   'hero': (u'рыцарь', u'мн'),
                                                   'level': (5, u'')
                                               })
        verificator_3 = prototypes.Verificator(text=u'Герой 2 w-1-ед,вн',
                                               externals={
                                                   'hero': (u'герой', u''),
                                                   'level': (2, u'')
                                               })
        verificator_4 = prototypes.Verificator(text=u'',
                                               externals={
                                                   'hero':
                                                   (u'привидение', u''),
                                                   'level': (5, u'')
                                               })

        prototype = prototypes.TemplatePrototype.create(key=key,
                                                        raw_template=TEXT,
                                                        utg_template=template,
                                                        verificators=[
                                                            verificator_1,
                                                            verificator_2,
                                                            verificator_3,
                                                            verificator_4
                                                        ],
                                                        author=self.account_1)

        errors = prototype.get_errors()

        self.assertEqual(errors, [u'Неизвестное слово: «неизвестное слово»'])
Exemple #8
0
    def test_get_errors__duplicate_word(self):
        key = keys.LEXICON_KEY.HERO_COMMON_JOURNAL_LEVEL_UP

        dictionary = storage.game_dictionary.item

        word_1 = utg_words.Word.create_test_word(type=utg_relations.WORD_TYPE.NOUN, prefix='w-1-', only_required=True)
        word_1.forms[2] = 'дубль'
        self.assertEqual(word_1.form(utg_relations.CASE.DATIVE), 'дубль')

        word_2 = utg_words.Word.create_test_word(type=utg_relations.WORD_TYPE.NOUN, prefix='w-2-', only_required=True)
        word_2.forms[2] = 'дубль'
        self.assertEqual(word_2.form(utg_relations.CASE.DATIVE), 'дубль')

        dictionary.add_word(word_1)
        dictionary.add_word(word_2)

        TEXT = '[hero|загл] [level] [дубль|hero|дт]'

        template = utg_templates.Template()

        template.parse(TEXT, externals=['hero'])

        # verificators with error that would not be returned becouse of words_errors
        verificator_1 = prototypes.Verificator(text='Героиня 1 дубль', externals={'hero': ('героиня', ''), 'level': (1, '')})
        verificator_2 = prototypes.Verificator(text='Рыцари 5 w-1-нс,мн,дт', externals={'hero': ('рыцарь', 'мн'), 'level': (5, '')})
        verificator_3 = prototypes.Verificator(text='Герой 2 дубль', externals={'hero': ('герой', ''), 'level': (2, '')})
        verificator_4 = prototypes.Verificator(text='Привидение 5 дубль', externals={'hero': ('привидение', ''), 'level': (5, '')})

        prototype = prototypes.TemplatePrototype.create(key=key,
                                                        raw_template=TEXT,
                                                        utg_template=template,
                                                        verificators=[verificator_1, verificator_2, verificator_3, verificator_4],
                                                        author=self.account_1)

        errors = prototype.get_errors()

        self.assertEqual(errors, [])
Exemple #9
0
    def test_get_verificators__with_old(self):
        groups = lexicon_logic.get_verificators_groups(
            key=keys.LEXICON_KEY.HERO_COMMON_JOURNAL_LEVEL_UP, old_groups={})
        self.assertEqual(groups, {'hero': (0, 0), 'level': (1, 0)})

        old_verificators = [
            prototypes.Verificator(text=u'1',
                                   externals={
                                       'hero': (u'привидение', u''),
                                       'level': (1, u'')
                                   }),
            prototypes.Verificator(text=u'2',
                                   externals={
                                       'hero': (u'героиня', u''),
                                       'level': (1, u'')
                                   }),
            prototypes.Verificator(text=u'3',
                                   externals={
                                       'hero': (u'рыцарь', u'ед'),
                                       'level': (5, u'')
                                   }),
            prototypes.Verificator(text=u'4',
                                   externals={
                                       'hero': (u'абракадабра', u''),
                                       'level': (5, u'')
                                   }),
            prototypes.Verificator(text=u'5',
                                   externals={
                                       'hero': (u'герой', u''),
                                       'level': (2, u'')
                                   })
        ]

        verificators = prototypes.Verificator.get_verificators(
            key=self.key, groups=groups, old_verificators=old_verificators)

        self.assertEqual(len(verificators), 4)

        self.assertEqual(
            verificators[0],
            prototypes.Verificator(text=u'1',
                                   externals={
                                       'hero': (u'привидение', u''),
                                       'level': (1, u'')
                                   }))
        self.assertEqual(
            verificators[1],
            prototypes.Verificator(text=u'5',
                                   externals={
                                       'hero': (u'герой', u''),
                                       'level': (2, u'')
                                   }))
        self.assertEqual(
            verificators[2],
            prototypes.Verificator(text=u'',
                                   externals={
                                       'hero': (u'рыцарь', u'мн'),
                                       'level': (5, u'')
                                   }))
        self.assertEqual(
            verificators[3],
            prototypes.Verificator(text=u'',
                                   externals={
                                       'hero': (u'героиня', u''),
                                       'level': (5, u'')
                                   }))