From 1c9e66c04285835d141d0039dcc8f8b5149f7bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Cl=C3=A9rice?= Date: Tue, 3 Sep 2024 10:45:43 +0200 Subject: [PATCH] Creating combinatory tests --- tests/test_cli/test_corpus.py | 2 +- tests/test_models/test_record.py | 9 ----- tests/test_models/test_regex_filter.py | 48 ++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 tests/test_models/test_regex_filter.py diff --git a/tests/test_cli/test_corpus.py b/tests/test_cli/test_corpus.py index f4b11500..deb0a287 100644 --- a/tests/test_cli/test_corpus.py +++ b/tests/test_cli/test_corpus.py @@ -279,7 +279,7 @@ def test_corpus_dump_not_found(self): ) @nottest - def make_test(self, tests, context): + def make_test(self, tests, context): with self.app.app_context(): with self.runner.isolated_filesystem() as f: cur_dir = str(f) diff --git a/tests/test_models/test_record.py b/tests/test_models/test_record.py index 6f5df816..87f6f03f 100644 --- a/tests/test_models/test_record.py +++ b/tests/test_models/test_record.py @@ -153,15 +153,6 @@ def test_similar_lemma_double_change(self): ) self.assertCountEqual(cr4.changed, ["lemma", "POS"]) - def test_filter_allowed_lemma(self): - """ Ensure only similar features are fixed """ - self.load_fixtures() - with self.assertRaises(WordToken.ValidityError): - token, change_record = WordToken.update( - user_id=1, - token_id=1, corpus_id=1, - lemma="#", morph="smn", POS="u") - # faire pareil mais avec les filtres de cochés diff --git a/tests/test_models/test_regex_filter.py b/tests/test_models/test_regex_filter.py new file mode 100644 index 00000000..b75c8297 --- /dev/null +++ b/tests/test_models/test_regex_filter.py @@ -0,0 +1,48 @@ +from .test_record import SimilarityFixtures +from app.models import ChangeRecord, WordToken, Corpus, ControlLists, ControlListsUser, CorpusUser, Column +from .base import TestModels +import copy +from itertools import combinations + + +class TestFilters(TestModels): + + def load_fixtures(self): + for fixture in SimilarityFixtures: + self.db.session.add(copy.deepcopy(fixture)) + self.db.session.commit() + + def test_filter_allowed_lemma(self): + """ Ensure that when no filters are registered, everything works as intended """ + self.load_fixtures() + with self.assertRaises(WordToken.ValidityError): + token, change_record = WordToken.update( + user_id=1, + token_id=1, corpus_id=1, + lemma="#", morph="smn", POS="u") + + def test_combinatory_regex(self): + self.load_fixtures() + tests = [ + ("celui", None), + ("#", "filter_punct"), + ("...", "filter_punct"), + ("7", "filter_numeral"), + ("75", "filter_numeral") + ] + situations = ["filter_punct", "filter_numeral"] + cl = ControlLists.query.get(1) + token = WordToken.query.get(1) + corpus = Corpus.query.get(1) + for i in range(len(situations)+1): + for combi in combinations(situations, i): + for filtre in situations: + setattr(cl, filtre, False) + for filtre in combi: + setattr(cl, filtre, True) + self.db.session.add(cl) + self.db.session.commit() + self.db.session.refresh(token) + self.db.session.refresh(corpus) + for category, filtre in tests: + print(WordToken.is_valid(lemma=category, POS=token.POS, morph=token.morph, corpus=corpus)["lemma"])