From bd00c321604e4f406b439b4a386353c328cf0e62 Mon Sep 17 00:00:00 2001 From: ifdjhxh Date: Sat, 6 Jul 2024 13:51:16 +0300 Subject: [PATCH 1/3] parser and criteria tests --- tests/tetst_criterion/test_parser.py | 32 ++++++++++ tests/tetst_criterion/test_report_checks.py | 69 +++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 tests/tetst_criterion/test_parser.py create mode 100644 tests/tetst_criterion/test_report_checks.py diff --git a/tests/tetst_criterion/test_parser.py b/tests/tetst_criterion/test_parser.py new file mode 100644 index 00000000..69a41f09 --- /dev/null +++ b/tests/tetst_criterion/test_parser.py @@ -0,0 +1,32 @@ +import unittest +from unittest.mock import patch, MagicMock +import os + + +from document_insight_system.app.main.parser import parse +from document_insight_system.app.utils.converter import convert_to +from document_insight_system.app.main.reports.docx_uploader.docx_uploader import DocxUploader +from document_insight_system.app.main.reports.md_uploader import MdUploader +from document_insight_system.app.main.presentations.pptx.presentation_pptx import PresentationPPTX + +class TestParseFunction(unittest.TestCase): + + @patch('document_insight_system.app.utils.converter.convert_to') + @patch('document_insight_system.app.main.reports.docx_uploader.docx_uploader.DocxUploader') + def test_parse_docx(self, MockDocxUploader, mock_convert_to): + filepath = 'test.docx' + pdf_filepath = 'test.pdf' + mock_docx = MagicMock() + MockDocxUploader.return_value = mock_docx + + result = parse(filepath, pdf_filepath) + + MockDocxUploader.assert_called_once_with() + mock_docx.upload.assert_called_once_with(filepath, pdf_filepath) + mock_docx.parse.assert_called_once() + self.assertEqual(result, mock_docx) + + + +if _name_ == '_main_': + unittest.main() \ No newline at end of file diff --git a/tests/tetst_criterion/test_report_checks.py b/tests/tetst_criterion/test_report_checks.py new file mode 100644 index 00000000..62bd5702 --- /dev/null +++ b/tests/tetst_criterion/test_report_checks.py @@ -0,0 +1,69 @@ +import unittest +from unittest.mock import MagicMock +# from ..base_check import BaseReportCriterion, answer, morph +# from your_module import ReportBannedWordsCheck +from document_insight_system.app.main.checks.base_check import morph +from document_insight_system.app.main.checks.report_checks import ReportBannedWordsCheck + + +class TestReportBannedWordsCheck(unittest.TestCase): + def setUp(self): + # Мокируем file_info и его методы + self.file_info = MagicMock() + self.file_info.page_counter.return_value = 5 + self.file_info.pdf_file.get_text_on_page.return_value = { + 1: "мы есть здесь\nмы есть там\nмы и мы и мы", + 2: "мы не есть\nне мы\n", + 3: "мы здесь\nмы там\nмы везде", + 4: "мы и вы\nмы и они", + 5: "они и мы\nвы и мы\nмы здесь" + } + + # Мокируем morph.normal_forms для простоты + morph.normal_forms = lambda word: [word] + + def test_no_banned_words(self): + self.file_info.pdf_file.get_text_on_page.return_value = { + 1: "они есть здесь\nвы есть там\nмысли о нас", + 2: "мысли не есть\nне мысли\n", + 3: "они здесь\nвы там\nмысли везде", + 4: "вы и они\nмысли и они", + 5: "они и мысли\nвы и мысли\nмысли здесь" + } + + check = ReportBannedWordsCheck(self.file_info) + result = check.check() + self.assertEqual(result['result'], 1) + self.assertIn('Пройдена!', result['comment']) + + def test_banned_words_within_range(self): + check = ReportBannedWordsCheck(self.file_info, min_count=3, max_count=6) + result = check.check() + self.assertEqual(result['result'], 0.5) + self.assertIn('Обнаружены запретные слова!', result['comment']) + + def test_banned_words_above_range(self): + self.file_info.pdf_file.get_text_on_page.return_value = { + 1: "мы есть здесь\nмы есть там\nмы и мы и мы", + 2: "мы не есть\nне мы\n", + 3: "мы здесь\nмы там\nмы везде", + 4: "мы и вы\nмы и они", + 5: "мы и мы\nмы и мы\nмы здесь" + } + + check = ReportBannedWordsCheck(self.file_info, min_count=3, max_count=6) + result = check.check() + self.assertEqual(result['result'], 0) + self.assertIn('Обнаружены запретные слова!', result['comment']) + + def test_insufficient_pages(self): + self.file_info.page_counter.return_value = 3 + + check = ReportBannedWordsCheck(self.file_info) + result = check.check() + self.assertEqual(result['result'], False) + self.assertIn('В отчете недостаточно страниц. Нечего проверять.', result['comment']) + + +if __name__ == '__main__': + unittest.main() From 4af0625b8e98faf9593fbe74bcf732efa063907a Mon Sep 17 00:00:00 2001 From: ifdjhxh Date: Mon, 8 Jul 2024 10:10:33 +0300 Subject: [PATCH 2/3] add tests --- tests/tetst_criterion/test_parser.py | 32 ------ tests/tetst_criterion/test_report_checks.py | 69 ------------ {tests => tests_all}/README.md | 0 {tests => tests_all}/basic_selenium_test.py | 0 {tests => tests_all}/main.py | 0 {tests => tests_all}/requirements.txt | 0 .../scripts/docker_check_tests.sh | 0 {tests => tests_all}/test_authorization.py | 0 {tests => tests_all}/test_file_load.py | 0 .../test_single_card_check.py | 0 {tests => tests_all}/test_statistic.py | 0 {tests => tests_all}/test_version.py | 0 tests_all/tests_check/README.md | 13 +++ tests_all/tests_check/__init__.py | 0 tests_all/tests_check/base_test.py | 11 ++ tests_all/tests_check/test_banned_words.py | 58 ++++++++++ .../tests_check/test_banned_words_check.py | 90 ++++++++++++++++ .../test_banned_words_in_literature.py | 45 ++++++++ tests_all/tests_check/test_chapters.py | 70 ++++++++++++ .../tests_check/test_empty_slide_check.py | 100 ++++++++++++++++++ tests_all/tests_check/test_find_def_sld.py | 55 ++++++++++ .../tests_check/test_first_pages_check.py | 73 +++++++++++++ tests_all/tests_check/test_image_share.py | 46 ++++++++ .../tests_check/test_image_share_check.py | 58 ++++++++++ .../test_max_abstract_size_check.py | 81 ++++++++++++++ .../tests_check/test_needed_headers_check.py | 70 ++++++++++++ tests_all/tests_check/test_page_counter.py | 55 ++++++++++ .../tests_check/test_pres_template_name.py | 44 ++++++++ .../tests_check/test_right_words_check.py | 68 ++++++++++++ tests_all/tests_check/test_search_keyword.py | 55 ++++++++++ .../tests_check/test_section_component.py | 68 ++++++++++++ tests_all/tests_check/test_simple_check.py | 30 ++++++ tests_all/tests_check/test_sld_enum.py | 54 ++++++++++ .../tests_check/test_table_references.py | 31 ++++++ tests_all/tests_check/test_template_name.py | 60 +++++++++++ .../tests_data/example_of_pres.pptx | Bin .../tests_data/example_of_report.doc | Bin .../tests_data/example_of_report.docx | Bin 38 files changed, 1235 insertions(+), 101 deletions(-) delete mode 100644 tests/tetst_criterion/test_parser.py delete mode 100644 tests/tetst_criterion/test_report_checks.py rename {tests => tests_all}/README.md (100%) rename {tests => tests_all}/basic_selenium_test.py (100%) rename {tests => tests_all}/main.py (100%) rename {tests => tests_all}/requirements.txt (100%) rename {tests => tests_all}/scripts/docker_check_tests.sh (100%) mode change 100755 => 100644 rename {tests => tests_all}/test_authorization.py (100%) rename {tests => tests_all}/test_file_load.py (100%) rename {tests => tests_all}/test_single_card_check.py (100%) rename {tests => tests_all}/test_statistic.py (100%) rename {tests => tests_all}/test_version.py (100%) create mode 100644 tests_all/tests_check/README.md create mode 100644 tests_all/tests_check/__init__.py create mode 100644 tests_all/tests_check/base_test.py create mode 100644 tests_all/tests_check/test_banned_words.py create mode 100644 tests_all/tests_check/test_banned_words_check.py create mode 100644 tests_all/tests_check/test_banned_words_in_literature.py create mode 100644 tests_all/tests_check/test_chapters.py create mode 100644 tests_all/tests_check/test_empty_slide_check.py create mode 100644 tests_all/tests_check/test_find_def_sld.py create mode 100644 tests_all/tests_check/test_first_pages_check.py create mode 100644 tests_all/tests_check/test_image_share.py create mode 100644 tests_all/tests_check/test_image_share_check.py create mode 100644 tests_all/tests_check/test_max_abstract_size_check.py create mode 100644 tests_all/tests_check/test_needed_headers_check.py create mode 100644 tests_all/tests_check/test_page_counter.py create mode 100644 tests_all/tests_check/test_pres_template_name.py create mode 100644 tests_all/tests_check/test_right_words_check.py create mode 100644 tests_all/tests_check/test_search_keyword.py create mode 100644 tests_all/tests_check/test_section_component.py create mode 100644 tests_all/tests_check/test_simple_check.py create mode 100644 tests_all/tests_check/test_sld_enum.py create mode 100644 tests_all/tests_check/test_table_references.py create mode 100644 tests_all/tests_check/test_template_name.py rename {tests => tests_all}/tests_data/example_of_pres.pptx (100%) rename {tests => tests_all}/tests_data/example_of_report.doc (100%) rename {tests => tests_all}/tests_data/example_of_report.docx (100%) diff --git a/tests/tetst_criterion/test_parser.py b/tests/tetst_criterion/test_parser.py deleted file mode 100644 index 69a41f09..00000000 --- a/tests/tetst_criterion/test_parser.py +++ /dev/null @@ -1,32 +0,0 @@ -import unittest -from unittest.mock import patch, MagicMock -import os - - -from document_insight_system.app.main.parser import parse -from document_insight_system.app.utils.converter import convert_to -from document_insight_system.app.main.reports.docx_uploader.docx_uploader import DocxUploader -from document_insight_system.app.main.reports.md_uploader import MdUploader -from document_insight_system.app.main.presentations.pptx.presentation_pptx import PresentationPPTX - -class TestParseFunction(unittest.TestCase): - - @patch('document_insight_system.app.utils.converter.convert_to') - @patch('document_insight_system.app.main.reports.docx_uploader.docx_uploader.DocxUploader') - def test_parse_docx(self, MockDocxUploader, mock_convert_to): - filepath = 'test.docx' - pdf_filepath = 'test.pdf' - mock_docx = MagicMock() - MockDocxUploader.return_value = mock_docx - - result = parse(filepath, pdf_filepath) - - MockDocxUploader.assert_called_once_with() - mock_docx.upload.assert_called_once_with(filepath, pdf_filepath) - mock_docx.parse.assert_called_once() - self.assertEqual(result, mock_docx) - - - -if _name_ == '_main_': - unittest.main() \ No newline at end of file diff --git a/tests/tetst_criterion/test_report_checks.py b/tests/tetst_criterion/test_report_checks.py deleted file mode 100644 index 62bd5702..00000000 --- a/tests/tetst_criterion/test_report_checks.py +++ /dev/null @@ -1,69 +0,0 @@ -import unittest -from unittest.mock import MagicMock -# from ..base_check import BaseReportCriterion, answer, morph -# from your_module import ReportBannedWordsCheck -from document_insight_system.app.main.checks.base_check import morph -from document_insight_system.app.main.checks.report_checks import ReportBannedWordsCheck - - -class TestReportBannedWordsCheck(unittest.TestCase): - def setUp(self): - # Мокируем file_info и его методы - self.file_info = MagicMock() - self.file_info.page_counter.return_value = 5 - self.file_info.pdf_file.get_text_on_page.return_value = { - 1: "мы есть здесь\nмы есть там\nмы и мы и мы", - 2: "мы не есть\nне мы\n", - 3: "мы здесь\nмы там\nмы везде", - 4: "мы и вы\nмы и они", - 5: "они и мы\nвы и мы\nмы здесь" - } - - # Мокируем morph.normal_forms для простоты - morph.normal_forms = lambda word: [word] - - def test_no_banned_words(self): - self.file_info.pdf_file.get_text_on_page.return_value = { - 1: "они есть здесь\nвы есть там\nмысли о нас", - 2: "мысли не есть\nне мысли\n", - 3: "они здесь\nвы там\nмысли везде", - 4: "вы и они\nмысли и они", - 5: "они и мысли\nвы и мысли\nмысли здесь" - } - - check = ReportBannedWordsCheck(self.file_info) - result = check.check() - self.assertEqual(result['result'], 1) - self.assertIn('Пройдена!', result['comment']) - - def test_banned_words_within_range(self): - check = ReportBannedWordsCheck(self.file_info, min_count=3, max_count=6) - result = check.check() - self.assertEqual(result['result'], 0.5) - self.assertIn('Обнаружены запретные слова!', result['comment']) - - def test_banned_words_above_range(self): - self.file_info.pdf_file.get_text_on_page.return_value = { - 1: "мы есть здесь\nмы есть там\nмы и мы и мы", - 2: "мы не есть\nне мы\n", - 3: "мы здесь\nмы там\nмы везде", - 4: "мы и вы\nмы и они", - 5: "мы и мы\nмы и мы\nмы здесь" - } - - check = ReportBannedWordsCheck(self.file_info, min_count=3, max_count=6) - result = check.check() - self.assertEqual(result['result'], 0) - self.assertIn('Обнаружены запретные слова!', result['comment']) - - def test_insufficient_pages(self): - self.file_info.page_counter.return_value = 3 - - check = ReportBannedWordsCheck(self.file_info) - result = check.check() - self.assertEqual(result['result'], False) - self.assertIn('В отчете недостаточно страниц. Нечего проверять.', result['comment']) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/README.md b/tests_all/README.md similarity index 100% rename from tests/README.md rename to tests_all/README.md diff --git a/tests/basic_selenium_test.py b/tests_all/basic_selenium_test.py similarity index 100% rename from tests/basic_selenium_test.py rename to tests_all/basic_selenium_test.py diff --git a/tests/main.py b/tests_all/main.py similarity index 100% rename from tests/main.py rename to tests_all/main.py diff --git a/tests/requirements.txt b/tests_all/requirements.txt similarity index 100% rename from tests/requirements.txt rename to tests_all/requirements.txt diff --git a/tests/scripts/docker_check_tests.sh b/tests_all/scripts/docker_check_tests.sh old mode 100755 new mode 100644 similarity index 100% rename from tests/scripts/docker_check_tests.sh rename to tests_all/scripts/docker_check_tests.sh diff --git a/tests/test_authorization.py b/tests_all/test_authorization.py similarity index 100% rename from tests/test_authorization.py rename to tests_all/test_authorization.py diff --git a/tests/test_file_load.py b/tests_all/test_file_load.py similarity index 100% rename from tests/test_file_load.py rename to tests_all/test_file_load.py diff --git a/tests/test_single_card_check.py b/tests_all/test_single_card_check.py similarity index 100% rename from tests/test_single_card_check.py rename to tests_all/test_single_card_check.py diff --git a/tests/test_statistic.py b/tests_all/test_statistic.py similarity index 100% rename from tests/test_statistic.py rename to tests_all/test_statistic.py diff --git a/tests/test_version.py b/tests_all/test_version.py similarity index 100% rename from tests/test_version.py rename to tests_all/test_version.py diff --git a/tests_all/tests_check/README.md b/tests_all/tests_check/README.md new file mode 100644 index 00000000..e5760dbd --- /dev/null +++ b/tests_all/tests_check/README.md @@ -0,0 +1,13 @@ +## For local tests: + +```bash +$ pip install -r requirements.txt +``` + +### Run tests: + +```bash + +$ python -m unittest discover tests_all/tests_check + +``` diff --git a/tests_all/tests_check/__init__.py b/tests_all/tests_check/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests_all/tests_check/base_test.py b/tests_all/tests_check/base_test.py new file mode 100644 index 00000000..3a72d461 --- /dev/null +++ b/tests_all/tests_check/base_test.py @@ -0,0 +1,11 @@ +import unittest +from unittest.mock import MagicMock + +class BaseTestCase(unittest.TestCase): + def setUp(self): + self.file_info = { + 'file': MagicMock(), + 'filename': 'test.pdf', + 'pdf_id': '1234', + 'file_type': {'report_type': 'VKR'} + } diff --git a/tests_all/tests_check/test_banned_words.py b/tests_all/tests_check/test_banned_words.py new file mode 100644 index 00000000..82215237 --- /dev/null +++ b/tests_all/tests_check/test_banned_words.py @@ -0,0 +1,58 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.presentation_checks.banned_words import PresBannedWordsCheck +from app.main.checks.base_check import morph + +class TestPresBannedWordsCheck(unittest.TestCase): + + def setUp(self): + self.mock_file_info = { + 'file': MagicMock(), + 'filename': 'test_presentation.pptx', + 'pdf_id': '12345' + } + + self.mock_text_slides = [ + "Это пример текста на первом слайде", + "Запрещенное слово тут", + "Еще один пример текста на слайде", + "Снова запрещенное слово на слайде", + "Обычный текст без запрещенных слов" + ] + + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=self.mock_text_slides) + self.checker = PresBannedWordsCheck(self.mock_file_info, words=['запрещенное', 'слово'], min_count=1, max_count=3) + + def test_no_banned_words(self): + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=[ + "Просто пример текста." + ]) + result = self.checker.check() + self.assertEqual(result['score'], 1) + self.assertEqual(result['verdict'][0], "Пройдена!") + + def test_banned_words_below_min_count(self): + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=[ + "Запрещенное слово тут", + "Еще один пример текста", + "Снова запрещенное слово" + ]) + self.checker = PresBannedWordsCheck(self.mock_file_info, words=['запрещенное', 'слово'], min_count=3, max_count=6) + result = self.checker.check() + self.assertEqual(result['score'], 1.0) + self.assertIn("Обнаружены запретные слова!", result['verdict'][0]) + + def test_banned_words_above_max_count(self): + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=[ + "Запрещенное слово тут", + "Еще одно запрещенное слово тут", + "Снова запрещенное слово", + "Запрещенное слово тут снова" + ]) + result = self.checker.check() + self.assertEqual(result['score'], 0) + self.assertIn("Обнаружены запретные слова!", result['verdict'][0]) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests_all/tests_check/test_banned_words_check.py b/tests_all/tests_check/test_banned_words_check.py new file mode 100644 index 00000000..b744bc8d --- /dev/null +++ b/tests_all/tests_check/test_banned_words_check.py @@ -0,0 +1,90 @@ +import unittest +from tests_all.tests_check.base_test import BaseTestCase +from app.main.checks.base_check import morph, answer +from app.main.checks.report_checks import ReportBannedWordsCheck + +class TestReportBannedWordsCheck(BaseTestCase): + def setUp(self): + super().setUp() + self.file_info['file'].page_counter.return_value = 5 + self.check = ReportBannedWordsCheck(file_info=self.file_info, words=["мы"], min_count=3, max_count=6) + + def test_check_not_enough_pages(self): + self.file_info['file'].page_counter.return_value = 3 + result = self.check.check() + self.assertEqual(result, answer(False, "В отчете недостаточно страниц. Нечего проверять.")) + + def test_check_no_banned_words(self): + self.file_info['file'].pdf_file.get_text_on_page.return_value = { + 1: "Пример текста без запретных слов.", + 2: "Еще один пример текста.", + 3: "Текст без запретных слов.", + 4: "Текст без запретных слов.", + 5: "Текст без запретных слов." + } + result = self.check.check() + expected_output = 'Пройдена!' + expected_result = answer(1, expected_output) + self.assertEqual(result, expected_result) + + def test_check_with_banned_words_in_range(self): + ''' + исходя из кода критерия, из каждой строки берется только одно вхождение каждого слова + (создается множество), поэтому в этом примере запретных слов 5, что нарушает здравый смысл + ''' + self.file_info['file'].pdf_file.get_text_on_page.return_value = { + 1: "мы мы мы", + 2: "мы мы", + 3: "мы", + 4: "мы мы", + 5: "мы" + } + result = self.check.check() + expected_output = ( + 'Запрещенные слова: мы
Обнаружены запретные слова!

' + 'Страница №1:
Строка 1: мы мы мы [мы]

' + 'Страница №2:
Строка 1: мы мы [мы]

' + 'Страница №3:
Строка 1: мы [мы]

' + 'Страница №4:
Строка 1: мы мы [мы]

' + 'Страница №5:
Строка 1: мы [мы]

' + ) + expected_result = answer(0, expected_output) + self.assertEqual(result['score'], expected_result['score']) + self.assertEqual(result['verdict'][0], expected_result['verdict'][0]) + + def test_check_with_banned_words_exceeding_max(self): + self.file_info['file'].page_counter.return_value = 5 + self.file_info['file'].pdf_file.get_text_on_page.return_value = { + 1: "мы идем домой\nмы говорим о нас\nмы идем на работу", + 2: "мы любим природу\nмы читаем книги\nмы изучаем языки", + 3: "мы пишем код\nмы гуляем в парке\nмы играем в игры", + 4: "мы поем песни\nмы танцуем дома\nмы готовим ужин", + 5: "мы смотрим фильмы\nмы слушаем музыку\nмы общаемся с друзьями" + } + + checker = ReportBannedWordsCheck(self.file_info, words=["мы"], min_count=3, max_count=6) + result = checker.check() + expected_output = ( + 'Запрещенные слова: мы
' + 'Обнаружены запретные слова!

' + 'Страница №1:
Строка 1: мы идем домой [мы]
' + 'Строка 2: мы говорим о нас [мы]
' + 'Строка 3: мы идем на работу [мы]

' + 'Страница №2:
Строка 1: мы любим природу [мы]
' + 'Строка 2: мы читаем книги [мы]
' + 'Строка 3: мы изучаем языки [мы]

' + 'Страница №3:
Строка 1: мы пишем код [мы]
' + 'Строка 2: мы гуляем в парке [мы]
' + 'Строка 3: мы играем в игры [мы]

' + 'Страница №4:
Строка 1: мы поем песни [мы]
' + 'Строка 2: мы танцуем дома [мы]
' + 'Строка 3: мы готовим ужин [мы]

' + 'Страница №5:
Строка 1: мы смотрим фильмы [мы]
' + 'Строка 2: мы слушаем музыку [мы]
' + 'Строка 3: мы общаемся с друзьями [мы]

' + ) + + self.assertEqual(result, answer(0, expected_output)) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests_all/tests_check/test_banned_words_in_literature.py b/tests_all/tests_check/test_banned_words_in_literature.py new file mode 100644 index 00000000..05233f1b --- /dev/null +++ b/tests_all/tests_check/test_banned_words_in_literature.py @@ -0,0 +1,45 @@ +import unittest +from app.main.checks.report_checks import BannedWordsInLiteratureCheck +from tests_all.tests_check.base_test import BaseTestCase +from app.main.checks.base_check import morph, answer + +morph.normal_forms = lambda word: [word] + +class TestBannedWordsInLiteratureCheck(BaseTestCase): + + def test_check_with_no_banned_words(self): + self.file_info['file'].page_counter.return_value = 10 + self.file_info['file'].find_literature_vkr.return_value = {"number": 1, "child": [{"number": 2, "text": "This is a good source."}]} + self.file_info['file'].find_literature_page.return_value = 10 + + checker = BannedWordsInLiteratureCheck(self.file_info) + result = checker.check() + + self.assertEqual(result, answer(True, "Пройдена!")) + + def test_check_with_banned_words(self): + self.file_info['file'].page_counter.return_value = 10 + self.file_info['file'].find_literature_vkr.return_value = {"number": 1, "child": [{"number": 2, "text": "Source from wikipedia."}]} + self.file_info['file'].find_literature_page.return_value = 10 + + checker = BannedWordsInLiteratureCheck(self.file_info) + result = checker.check() + + expected_output = ( + 'Есть запрещенные слова в списке источников ' + '[\'10\']:

' + 'Абзац 1: wikipedia.
' + ) + + self.assertEqual(result, answer(False, expected_output)) + + def test_check_not_enough_pages(self): + self.file_info['file'].page_counter.return_value = 3 + + checker = BannedWordsInLiteratureCheck(self.file_info) + result = checker.check() + + self.assertEqual(result, answer(False, "В отчете недостаточно страниц. Нечего проверять.")) + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_chapters.py b/tests_all/tests_check/test_chapters.py new file mode 100644 index 00000000..a1093ff8 --- /dev/null +++ b/tests_all/tests_check/test_chapters.py @@ -0,0 +1,70 @@ +import unittest +from unittest.mock import MagicMock +from tests_all.tests_check.base_test import BaseTestCase +from app.main.checks.base_check import morph, answer +from app.main.checks.report_checks import ReportChapters + +class TestReportChaptersCheck(BaseTestCase): + def setUp(self): + super().setUp() + self.file_info['file'].page_counter.return_value = 5 + self.check = ReportChapters(file_info=self.file_info) + + def test_check_not_enough_pages(self): + self.file_info['file'].page_counter.return_value = 3 # Недостаточное количество страниц + result = self.check.check() + self.assertEqual(result, answer(False, "В отчете недостаточно страниц. Нечего проверять.")) + + def test_check_no_headers_found(self): + self.file_info['file'].make_chapters.return_value = [] # Пустой список заголовков + result = self.check.check() + self.assertEqual(result, answer(False, "Не найдено ни одного заголовка.

Проверьте корректность использования стилей.")) + + def test_check_valid_headers(self): + # Подготовка заголовков + mock_headers = [ + {"text": "Заголовок 1", "style": "Заголовок", "styled_text": {"runs": [{"text": "Заголовок 1", "style": MagicMock()}]}}, + {"text": "Заголовок 2", "style": "Заголовок", "styled_text": {"runs": [{"text": "Заголовок 2", "style": MagicMock()}]}} + ] + self.file_info['file'].make_chapters.return_value = mock_headers + + # Настройка + self.check.docx_styles = { + 0: ["Заголовок"] + } + self.check.target_styles = { + 0: {"style": MagicMock()} + } + self.check.style_regex = { + 0: MagicMock() + } + + result = self.check.check() + self.assertEqual(result['score'], 1) + self.assertTrue("Форматирование заголовков соответствует требованиям." in result['verdict']) + + def test_check_invalid_headers(self): + # Подготовка заголовков с несоответствующим стилем + mock_headers = [ + {"text": "Заголовок 1", "style": "Неверный стиль", "styled_text": {"runs": [{"text": "Заголовок 1", "style": MagicMock()}]}}, + {"text": "Заголовок 2", "style": "Неверный стиль", "styled_text": {"runs": [{"text": "Заголовок 2", "style": MagicMock()}]}} + ] + self.file_info['file'].make_chapters.return_value = mock_headers + + # Настройка + self.check.docx_styles = { + 0: ["Заголовок"] + } + self.check.target_styles = { + 0: {"style": MagicMock()} + } + self.check.style_regex = { + 0: MagicMock() + } + + result = self.check.check() + self.assertEqual(result['score'], 0) + self.assertFalse("Найдены ошибки в оформлении заголовков" in result['verdict']) + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_empty_slide_check.py b/tests_all/tests_check/test_empty_slide_check.py new file mode 100644 index 00000000..d58a8378 --- /dev/null +++ b/tests_all/tests_check/test_empty_slide_check.py @@ -0,0 +1,100 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.presentation_checks.empty_slide_check import PresEmptySlideCheck +from app.utils.parse_for_html import format_header + + +class TestPresEmptySlideCheck(unittest.TestCase): + + def setUp(self): + self.mock_file_info = { + 'file': MagicMock(), + 'filename': 'test_presentation.pptx', + 'pdf_id': '12345', + 'presentation_name': 'test_presentation.pptx' + } + + self.mock_text_slides = [ + "", # Пустой слайд + "Title Slide\nContent on Slide", # Слайд с заголовком и контентом + "Only Title Slide\n", # Слайд только с заголовком + "", # Пустой слайд + ] + self.mock_titles = [ + "Title Slide", + "Title Slide", + "Only Title Slide", + "" + ] + + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=self.mock_text_slides) + self.mock_file_info['file'].get_titles = MagicMock(return_value=self.mock_titles) + self.mock_file_info['file'].slides = [MagicMock() for _ in self.mock_text_slides] + + for slide in self.mock_file_info['file'].slides: + slide.get_images = MagicMock(return_value=[]) + slide.get_table = MagicMock(return_value=None) + + self.checker = PresEmptySlideCheck(self.mock_file_info) + + def test_empty_slides(self): + result = self.checker.check() + self.assertEqual(result['score'], 0) + self.assertIn("Не пройдена! Обнаружены пустые слайды:", result['verdict'][0]) + + def test_only_title_slides(self): + self.mock_text_slides = [ + "Title Slide\n", + "Title Slide\nContent on Slide", + "Only Title Slide\n", + "Another Title\nContent" + ] + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=self.mock_text_slides) + self.mock_file_info['file'].get_titles = MagicMock(return_value=self.mock_titles) + + result = self.checker.check() + self.assertEqual(result['score'], 0) + self.assertIn("Не пройдена! Обнаружены слайды, в которых присутствует только заголовок:", result['verdict'][0]) + + def test_mixed_empty_and_title_slides(self): + self.mock_text_slides = [ + "", + "Title Slide\nContent on Slide", + "Only Title Slide\n", + "", + ] + self.mock_titles = [ + "Empty Slide", + "Title Slide", + "Only Title Slide", + "Empty Slide" + ] + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=self.mock_text_slides) + self.mock_file_info['file'].get_titles = MagicMock(return_value=self.mock_titles) + + result = self.checker.check() + self.assertEqual(result['score'], 0) + self.assertIn("Не пройдена! Обнаружены пустые слайды:", result['verdict'][0]) + self.assertIn("также обнаружены слайды, в которых присутствует только заголовок:", result['verdict'][0]) + + def test_no_empty_or_title_only_slides(self): + self.mock_text_slides = [ + "Title Slide\nContent on Slide", + "Another Title\nContent", + "Content without Title", + ] + self.mock_titles = [ + "Title Slide", + "Another Title", + "" + ] + self.mock_file_info['file'].get_text_from_slides = MagicMock(return_value=self.mock_text_slides) + self.mock_file_info['file'].get_titles = MagicMock(return_value=self.mock_titles) + + result = self.checker.check() + self.assertEqual(result['score'], 1) + self.assertEqual(result['verdict'][0], "Пройдена!") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests_all/tests_check/test_find_def_sld.py b/tests_all/tests_check/test_find_def_sld.py new file mode 100644 index 00000000..2ccddd21 --- /dev/null +++ b/tests_all/tests_check/test_find_def_sld.py @@ -0,0 +1,55 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.presentation_checks.find_def_sld import FindDefSld + +class TestFindDefSld(unittest.TestCase): + + def setUp(self): + self.mock_file_info = { + 'file': MagicMock(), + 'filename': 'test_presentation.pptx', + 'pdf_id': '12345', + 'presentation_name': 'test_presentation.pptx' + } + self.key_slide = "Key Slide" + + self.mock_titles = [ + "Introduction", + "Key Slide Overview", + "Details of Key Slide", + "Conclusion" + ] + + self.mock_file_info['file'].get_titles = MagicMock(return_value=self.mock_titles) + self.mock_file_info['file'].found_index = {} + + self.checker = FindDefSld(self.mock_file_info, self.key_slide) + + def test_find_key_slide(self): + result = self.checker.check() + self.assertTrue(result['score']) + self.assertIn("Найден под номером: ", result['verdict'][0]) + self.assertIn('2', result['verdict'][0]) + self.assertIn('3', result['verdict'][0]) + + def test_key_slide_not_found(self): + self.checker.type_of_slide = "Nonexistent Slide" + result = self.checker.check() + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], 'Слайд не найден') + + def test_key_slide_case_insensitive(self): + self.checker.type_of_slide = "key slide" + result = self.checker.check() + self.assertTrue(result['score']) + self.assertIn("Найден под номером: ", result['verdict'][0]) + self.assertIn('2', result['verdict'][0]) + self.assertIn('3', result['verdict'][0]) + + def test_save_found_indices(self): + self.checker.check() + self.assertIn("Key Slide", self.mock_file_info['file'].found_index) + self.assertEqual(self.mock_file_info['file'].found_index["Key Slide"], [2, 3]) + +if __name__ == "__main__": + unittest.main() diff --git a/tests_all/tests_check/test_first_pages_check.py b/tests_all/tests_check/test_first_pages_check.py new file mode 100644 index 00000000..e0703906 --- /dev/null +++ b/tests_all/tests_check/test_first_pages_check.py @@ -0,0 +1,73 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.report_checks import ReportFirstPagesCheck +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportFirstPagesCheck(BaseTestCase): + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.mock_file.page_counter.return_value = 10 + self.mock_file.make_headers = MagicMock(return_value=[]) + self.file_info['file'] = self.mock_file + self.checker = ReportFirstPagesCheck(file_info=self.file_info) + + def test_all_required_pages_present(self): + self.mock_file.make_headers.return_value = [ + {"name": "Титульный лист", "marker": True}, + {"name": "Задание на выпускную квалификационную работу", "marker": True}, + {"name": "Календарный план", "marker": True}, + {"name": "Реферат", "marker": True}, + {"name": "Abstract", "marker": True}, + {"name": "Содержание", "marker": True}, + ] + self.file_info['file'] = self.mock_file + self.checker = ReportFirstPagesCheck(file_info=self.file_info) + result = self.checker.check() + expected_output = "Все обязательные страницы найдены и их заголовки находятся на первой строке новой страницы." + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_some_required_pages_missing(self): + self.mock_file.make_headers.return_value = [ + {"name": "Титульный лист", "marker": True}, + {"name": "Задание на выпускную квалификационную работу", "marker": False}, + {"name": "Календарный план", "marker": True}, + {"name": "Реферат", "marker": False}, + {"name": "Abstract", "marker": True}, + {"name": "Содержание", "marker": True}, + ] + self.file_info['file'] = self.mock_file + self.checker = ReportFirstPagesCheck(file_info=self.file_info) + result = self.checker.check() + expected_output = ( + 'Следующие страницы не найдены либо их заголовки расположены не на первой строке новой ' + 'страницы:
  • Задание на выпускную квалификационную работу
  • Реферат
' + 'Проверьте очередность листов и орфографию заголовков.' + ) + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_no_required_pages_present(self): + self.mock_file.make_headers.return_value = [ + {"name": "Титульный лист", "marker": False}, + {"name": "Задание на выпускную квалификационную работу", "marker": False}, + {"name": "Календарный план", "marker": False}, + {"name": "Реферат", "marker": False}, + {"name": "Abstract", "marker": False}, + {"name": "Содержание", "marker": False}, + ] + self.file_info['file'] = self.mock_file + self.checker = ReportFirstPagesCheck(file_info=self.file_info) + result = self.checker.check() + expected_output = ( + 'Следующие страницы не найдены либо их заголовки расположены не на первой строке новой ' + 'страницы:
  • Титульный лист
  • Задание на выпускную квалификационную работу
  • ' + '
  • Календарный план
  • Реферат
  • Abstract
  • Содержание
' + 'Проверьте очередность листов и орфографию заголовков.' + ) + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests_all/tests_check/test_image_share.py b/tests_all/tests_check/test_image_share.py new file mode 100644 index 00000000..a766fc81 --- /dev/null +++ b/tests_all/tests_check/test_image_share.py @@ -0,0 +1,46 @@ +import unittest +from unittest.mock import Mock, MagicMock + +from app.main.checks.base_check import morph, answer +from app.main.checks.presentation_checks.image_share import PresImageShareCheck + + +class TestPresImageShareCheck(unittest.TestCase): + + def setUp(self): + slide_with_image = Mock() + slide_with_image.get_images.return_value = ['image1'] + slide_with_image.get_page_number.return_value = 1 + + slide_without_image = Mock() + slide_without_image.get_images.return_value = [] + slide_without_image.get_page_number.return_value = 2 + + self.mock_file_info = { + 'file': Mock(), + 'filename': 'presentation.pptx', + 'pdf_id': '123' + } + self.mock_file_info['file'].slides = [slide_with_image, slide_without_image, slide_with_image] + self.checker = PresImageShareCheck(self.mock_file_info) + + def test_images_below_limit(self): + result = self.checker.check() + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], 'Пройдена!') + + def test_images_above_limit(self): + checker_with_lower_limit = PresImageShareCheck(self.mock_file_info, limit=0.3) + result = checker_with_lower_limit.check() + self.assertFalse(result['score']) + self.assertIn('Проверка не пройдена!', result['verdict'][0]) + + def test_images_equal_limit(self): + checker_with_equal_limit = PresImageShareCheck(self.mock_file_info, limit=0.67) + result = checker_with_equal_limit.check() + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], 'Пройдена!') + + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_image_share_check.py b/tests_all/tests_check/test_image_share_check.py new file mode 100644 index 00000000..51fffa91 --- /dev/null +++ b/tests_all/tests_check/test_image_share_check.py @@ -0,0 +1,58 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.report_checks import ReportImageShareCheck +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportImageShareCheck(BaseTestCase): + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.mock_file.page_counter = MagicMock(return_value=5) + self.mock_file.page_count = 5 + self.file_info['file'] = self.mock_file + self.checker = ReportImageShareCheck(file_info=self.file_info, limit=0.3) + + def test_check_not_enough_pages(self): + self.mock_file.page_counter.return_value = 3 + self.file_info['file'] = self.mock_file + self.checker = ReportImageShareCheck(file_info=self.file_info, limit=0.3) + result = self.checker.check() + expected_output = "В отчете недостаточно страниц. Нечего проверять." + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_images_share_exceeds_limit(self): + self.mock_file.pdf_file.page_images.return_value = 1000 + self.mock_file.pdf_file.page_height.return_value = 2000 + self.file_info['file'] = self.mock_file + self.checker = ReportImageShareCheck(file_info=self.file_info, limit=0.3) + result = self.checker.check() + expected_output = ( + 'Проверка не пройдена! Изображения в работе занимают около 0.5 объема ' + 'документа без учета приложения, ограничение - 0.3' + ''' + Если доля отчета, приходящаяся на изображения, больше нормы, попробуйте сделать следующее: +
    +
  • Попробуйте перенести малозначимые иллюстрации в Приложение;
  • +
  • Если у вас уже есть раздел Приложение, убедитесь, что количество страниц в отчете посчитано программой без учета приложения;
  • +
  • Если страницы посчитаны программой неверно, убедитесь, что заголовок приложения правильно оформлен;
  • +
  • Убедитесь, что красная строка не сделана с помощью пробелов или табуляции.
  • +
+ ''' + ) + self.assertFalse(result['score']) + self.assertIn(expected_output[:100], result['verdict'][0]) + + def test_images_share_within_limit(self): + self.mock_file.pdf_file.page_images.return_value = 500 + self.mock_file.pdf_file.page_height.return_value = 2000 + self.file_info['file'] = self.mock_file + self.checker = ReportImageShareCheck(file_info=self.file_info, limit=0.3) + result = self.checker.check() + expected_output = 'Пройдена!' + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_max_abstract_size_check.py b/tests_all/tests_check/test_max_abstract_size_check.py new file mode 100644 index 00000000..38952a64 --- /dev/null +++ b/tests_all/tests_check/test_max_abstract_size_check.py @@ -0,0 +1,81 @@ +import unittest +from app.main.checks.report_checks import ReportMaxSizeOfAbstractCheck +from tests_all.tests_check.base_test import BaseTestCase + + +class TestReportMaxSizeOfAbstractCheck(BaseTestCase): + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.file_info['file'] = self.mock_file + self.checker = ReportMaxSizeOfAbstractCheck(file_info=self.file_info, max_size=1) + + def test_abstract_and_referat_size_within_limit(self): + self.mock_file.make_headers.return_value = [ + {"name": "Реферат", "page": 1}, + {"name": "Abstract", "page": 2}, + {"name": "Содержание", "page": 3} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportMaxSizeOfAbstractCheck(file_info=self.file_info, max_size=1) + result = self.checker.check() + expected_output = "

Размеры разделов \"Реферат\" и \"Abstract\" соответствуют шаблону" + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_referat_exceeds_limit(self): + self.mock_file.make_headers.return_value = [ + {"name": "Реферат", "page": 1}, + {"name": "Abstract", "page": 3}, + {"name": "Содержание", "page": 4} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportMaxSizeOfAbstractCheck(file_info=self.file_info, max_size=1) + result = self.checker.check() + expected_output = "

Размер раздела \"Реферат\" равен 2 страницы, должен быть 1" + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_abstract_exceeds_limit(self): + self.mock_file.make_headers.return_value = [ + {"name": "Реферат", "page": 1}, + {"name": "Abstract", "page": 2}, + {"name": "Содержание", "page": 4} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportMaxSizeOfAbstractCheck(file_info=self.file_info, max_size=1) + result = self.checker.check() + expected_output = "

Размер раздела \"Abstract\" равен 2 страницы, должен быть 1" + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_both_exceed_limit(self): + self.mock_file.make_headers.return_value = [ + {"name": "Реферат", "page": 1}, + {"name": "Abstract", "page": 3}, + {"name": "Содержание", "page": 6} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportMaxSizeOfAbstractCheck(file_info=self.file_info, max_size=1) + result = self.checker.check() + expected_output = "

Размеры разделов \"Реферат\" и \"Abstract\" превышает максимальный размер" + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_no_referat_and_abstract(self): + self.mock_file.make_headers.return_value = [ + {"name": "Содержание", "page": 1} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportMaxSizeOfAbstractCheck(file_info=self.file_info, max_size=1) + self.checker.late_init() + self.assertEqual(self.checker.referat_size, 0) + self.assertEqual(self.checker.abstract_size, 0) #self.referat_size = abstract_page - referat_page = 1 (хотя Abstract не существует) + result = self.checker.check() + expected_output = "

Размеры разделов \"Реферат\" и \"Abstract\" соответствуют шаблону" + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_needed_headers_check.py b/tests_all/tests_check/test_needed_headers_check.py new file mode 100644 index 00000000..bdcfa0c9 --- /dev/null +++ b/tests_all/tests_check/test_needed_headers_check.py @@ -0,0 +1,70 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.report_checks import ReportNeededHeadersCheck +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportNeededHeadersCheck(BaseTestCase): + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.mock_file.page_counter.return_value = 5 + self.file_info['file'] = self.mock_file + self.checker = ReportNeededHeadersCheck(file_info=self.file_info) + + def test_all_headers_present(self): + self.mock_file.make_chapters.return_value = [ + {"text": "Введение", "style": "heading 2"}, + {"text": "Обзор литературы", "style": "heading 2"}, + {"text": "Методы исследования", "style": "heading 2"}, + {"text": "Заключение", "style": "heading 2"} + ] + self.mock_file.find_header_page.return_value = 1 + self.mock_file.show_chapters.return_value = "Иерархия заголовков" + self.file_info['file'] = self.mock_file + self.checker = ReportNeededHeadersCheck(file_info=self.file_info) + self.checker.patterns = ["Введение", "Обзор литературы", "Методы исследования", "Заключение"] + result = self.checker.check() + expected_output = 'Все необходимые заголовки обнаружены!' + self.assertTrue(result['score']) + self.assertIn(expected_output, result['verdict'][0]) + + def test_missing_headers(self): + self.mock_file.make_chapters.return_value = [ + {"text": "Введение", "style": "heading 2"}, + {"text": "Методы исследования", "style": "heading 2"} + ] + self.mock_file.find_header_page.return_value = 1 + self.mock_file.show_chapters.return_value = "Иерархия заголовков" + self.file_info['file'] = self.mock_file + self.checker = ReportNeededHeadersCheck(file_info=self.file_info) + self.checker.patterns = ["Введение", "Обзор литературы", "Методы исследования", "Заключение"] + result = self.checker.check() + expected_output = 'Не найдены следующие обязательные заголовки:' + self.assertFalse(result['score']) + self.assertIn(expected_output, result['verdict'][0]) + self.assertIn('
  • Обзор литературы
  • ', result['verdict'][0]) + self.assertIn('
  • Заключение
  • ', result['verdict'][0]) + + def test_no_headers(self): + self.mock_file.make_chapters.return_value = [] + self.mock_file.find_header_page.return_value = 1 + self.mock_file.show_chapters.return_value = "Иерархия заголовков" + self.file_info['file'] = self.mock_file + self.checker = ReportNeededHeadersCheck(file_info=self.file_info) + result = self.checker.check() + expected_output = "Не найдено ни одного заголовка.

    Проверьте корректность использования стилей." + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + def test_insufficient_pages(self): + self.mock_file.page_counter.return_value = 3 + self.file_info['file'] = self.mock_file + self.checker = ReportNeededHeadersCheck(file_info=self.file_info) + result = self.checker.check() + expected_output = "В отчете недостаточно страниц. Нечего проверять." + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], expected_output) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_page_counter.py b/tests_all/tests_check/test_page_counter.py new file mode 100644 index 00000000..693d3c65 --- /dev/null +++ b/tests_all/tests_check/test_page_counter.py @@ -0,0 +1,55 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.report_checks import ReportPageCounter +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportPageCounter(BaseTestCase): + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.mock_file.page_counter.return_value = 5 + self.file_info['file'] = self.mock_file + self.checker = ReportPageCounter(file_info=self.file_info) + + def test_within_range(self): + self.mock_file.page_counter.return_value = 100 + self.mock_file.page_count = 100 + self.file_info['file'] = self.mock_file + self.checker = ReportPageCounter(file_info=self.file_info) + result = self.checker.check() + expected_output = "Пройдена! В отчете 100 стр не считая Приложения." + self.assertTrue(result['score']) + self.assertIn(expected_output, result['verdict'][0]) + + def test_below_minimum(self): + self.mock_file.page_counter.return_value = 40 + self.mock_file.page_count = 40 + self.file_info['file'] = self.mock_file + self.checker = ReportPageCounter(file_info=self.file_info) + result = self.checker.check() + expected_output = 'Неверное количество страниц в файле: должно быть [50, 150] стр.' + self.assertFalse(result['score']) + self.assertIn(expected_output, result['verdict'][0]) + + def test_above_maximum(self): + self.mock_file.page_counter.return_value = 160 + self.mock_file.page_count = 160 + self.file_info['file'] = self.mock_file + self.checker = ReportPageCounter(file_info=self.file_info) + result = self.checker.check() + expected_output = 'Неверное количество страниц в файле: должно быть [50, 150] стр.' + self.assertFalse(result['score']) + self.assertIn(expected_output, result['verdict'][0]) + + def test_with_no_max_limit(self): + self.mock_file.page_counter.return_value = 160 + self.mock_file.page_count = 160 + self.file_info['file'] = self.mock_file + self.checker = ReportPageCounter(file_info=self.file_info, min_number=50, max_number=None) + result = self.checker.check() + expected_output = "Пройдена! В отчете 160 стр не считая Приложения." + self.assertTrue(result['score']) + self.assertIn(expected_output, result['verdict'][0]) + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_pres_template_name.py b/tests_all/tests_check/test_pres_template_name.py new file mode 100644 index 00000000..0396dd86 --- /dev/null +++ b/tests_all/tests_check/test_pres_template_name.py @@ -0,0 +1,44 @@ +import unittest +from app.main.checks.base_check import answer, BasePresCriterion +from app.main.checks.presentation_checks.template_name import PresTemplateNameCheck + +class TestPresTemplateNameCheck(unittest.TestCase): + + def setUp(self): + self.file_info = { + 'filename': "Презентация_ВКР_Иванов.pdf", + 'file': None, + 'pdf_id': '12345' + } + + def test_correct_filename_format(self): + checker = PresTemplateNameCheck(self.file_info) + + result = checker.check() + + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], "Пройдена!") + + def test_incorrect_filename_format(self): + self.file_info['filename'] = "Презентация_ДИПЛОМ_Петров.pdf" + + checker = PresTemplateNameCheck(self.file_info) + + result = checker.check() + + self.assertFalse(result['score']) + self.assertIn("не соответствует шаблону", result['verdict'][0]) + + def test_empty_filename(self): + self.file_info['filename'] = "" + + checker = PresTemplateNameCheck(self.file_info) + + result = checker.check() + + self.assertFalse(result['score']) + self.assertIn("не соответствует шаблону", result['verdict'][0]) + +if __name__ == '__main__': + unittest.main() + diff --git a/tests_all/tests_check/test_right_words_check.py b/tests_all/tests_check/test_right_words_check.py new file mode 100644 index 00000000..01f9dc1b --- /dev/null +++ b/tests_all/tests_check/test_right_words_check.py @@ -0,0 +1,68 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.report_checks import ReportRightWordsCheck +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportRightWordsCheck(BaseTestCase): + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.mock_file.page_counter.return_value = 5 + self.file_info['file'] = self.mock_file + self.checker = ReportRightWordsCheck(file_info=self.file_info) + + def test_right_words_present(self): + self.mock_file.page_counter.return_value = 5 + self.mock_file.pdf_file.get_text_on_page.return_value = { + 1: "Введение. Цель работы - изучение.", + 2: "Методология. В работе используются методы.", + 3: "Результаты. Исследования показали.", + 4: "Обсуждение. Выводы и рекомендации.", + 5: "Заключение. Цель достигнута." + } + self.file_info['file'] = self.mock_file + self.checker = ReportRightWordsCheck(file_info=self.file_info) + result = self.checker.check() + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], "Пройдена!") + + def test_right_words_absent(self): + self.mock_file.page_counter.return_value = 5 + self.mock_file.pdf_file.get_text_on_page.return_value = { + 1: "Введение. Задачи исследования.", + 2: "Методология. В работе используются методы.", + 3: "Результаты. Исследования показали.", + 4: "Обсуждение. Выводы и рекомендации.", + 5: "Заключение. Задачи выполнены." + } + self.file_info['file'] = self.mock_file + self.checker = ReportRightWordsCheck(file_info=self.file_info) + result = self.checker.check() + self.assertFalse(result['score']) + self.assertIn('Не найдены слова, соответствующие следующим регулярным выражениям:
    • цел[ьией]
    ', result['verdict']) + + def test_insufficient_pages(self): + self.mock_file.page_counter.return_value = 3 + self.file_info['file'] = self.mock_file + self.checker = ReportRightWordsCheck(file_info=self.file_info) + result = self.checker.check() + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], "В отчете недостаточно страниц. Нечего проверять.") + + def test_case_insensitivity(self): + self.mock_file.page_counter.return_value = 5 + self.mock_file.pdf_file.get_text_on_page.return_value = { + 1: "Введение. ЦЕЛЬ работы - изучение.", + 2: "Методология. В работе используются методы.", + 3: "Результаты. Исследования показали.", + 4: "Обсуждение. Выводы и рекомендации.", + 5: "Заключение. цель достигнута." + } + self.file_info['file'] = self.mock_file + self.checker = ReportRightWordsCheck(file_info=self.file_info) + result = self.checker.check() + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], "Пройдена!") + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_search_keyword.py b/tests_all/tests_check/test_search_keyword.py new file mode 100644 index 00000000..d3ab79c9 --- /dev/null +++ b/tests_all/tests_check/test_search_keyword.py @@ -0,0 +1,55 @@ +import unittest +from unittest.mock import Mock +from datetime import datetime +from app.main.checks.presentation_checks.search_keyword import SearchKeyWord + +class TestSearchKeyWord(unittest.TestCase): + + def setUp(self): + # Создаем заглушку для file_info + self.file_info = { + 'file': Mock(), + 'filename': f'{datetime.now().year}ВКР111111ИВАНОВ.pdf', + 'pdf_id': '12345' + } + # Мокаем метод get_text_from_slides() + self.file_info['file'].get_text_from_slides.return_value = [ + "Это текст первого слайда с актуальностью.", + "Второй слайд без ключевого слова.", + "Третий слайд с Актуальностью в заголовке.", + "Четвертый слайд с актуальностью в конце текста", + ] + + def test_find_existing_keyword(self): + checker = SearchKeyWord(self.file_info, ["актуальность"]) + + result = checker.check() + + self.assertTrue(result['score']) + self.assertIn("Найден под номером:", result['verdict'][0]) + + def test_find_non_existing_keyword(self): + checker = SearchKeyWord(self.file_info, ["новое"]) + + result = checker.check() + + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], "Слайд не найден") + + def test_multiple_key_words(self): + checker = SearchKeyWord(self.file_info, ["актуальность", "важность"]) + + result = checker.check() + + self.assertTrue(result['score']) + self.assertIn("Найден под номером:", result['verdict'][0]) + + def test_case_insensitivity(self): + checker = SearchKeyWord(self.file_info, ["АКТУАЛЬНОСТЬ"]) + result = checker.check() + + self.assertTrue(result['score']) + self.assertIn("Найден под номером:", result['verdict'][0]) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests_all/tests_check/test_section_component.py b/tests_all/tests_check/test_section_component.py new file mode 100644 index 00000000..23fa837e --- /dev/null +++ b/tests_all/tests_check/test_section_component.py @@ -0,0 +1,68 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.report_checks import ReportSectionComponent +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportSectionComponent(BaseTestCase): + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.file_info['file'] = self.mock_file + self.checker = ReportSectionComponent(file_info=self.file_info) + + def test_all_components_present(self): + self.mock_file.page_counter.return_value = 5 + self.mock_file.make_chapters.return_value = [ + {"text": "Введение", "child": [ + {"text": "Цель работы - изучение."}, + {"text": "Задачи исследования."}, + {"text": "Объект исследования."}, + {"text": "Предмет исследования."} + ]} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportSectionComponent(file_info=self.file_info) + result = self.checker.check() + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], 'Все необходимые компоненты раздела "Введение" обнаружены!') + + def test_some_components_missing(self): + self.mock_file.page_counter.return_value = 5 + self.mock_file.make_chapters.return_value = [ + {"text": "Введение", "child": [ + {"text": "Цель работы - изучение."}, + {"text": "Задачи исследования."} + ]} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportSectionComponent(file_info=self.file_info) + result = self.checker.check() + self.assertFalse(result['score']) + self.assertIn('Не найдены следующие компоненты раздела Введение:', result['verdict'][0]) + self.assertIn('
  • Объект
  • ', result['verdict'][0]) + self.assertIn('
  • Предмет
  • ', result['verdict'][0]) + + def test_no_introduction_section(self): + self.mock_file.page_counter.return_value = 5 + self.mock_file.make_chapters.return_value = [ + {"text": "Методология", "child": [ + {"text": "Цель работы - изучение."}, + {"text": "Задачи исследования."} + ]} + ] + self.file_info['file'] = self.mock_file + self.checker = ReportSectionComponent(file_info=self.file_info) + result = self.checker.check() + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], 'Раздел "Введение" не обнаружен!') + + def test_insufficient_pages(self): + self.mock_file.page_counter.return_value = 3 + self.file_info['file'] = self.mock_file + self.checker = ReportSectionComponent(file_info=self.file_info) + result = self.checker.check() + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], "В отчете недостаточно страниц. Нечего проверять.") + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_simple_check.py b/tests_all/tests_check/test_simple_check.py new file mode 100644 index 00000000..803f64e1 --- /dev/null +++ b/tests_all/tests_check/test_simple_check.py @@ -0,0 +1,30 @@ +import unittest +from unittest.mock import MagicMock +from app.main.checks.report_checks.simple_check import ReportSimpleCheck +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportSimpleCheck(BaseTestCase): + + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.file_info['file'] = self.mock_file + + def test_file_not_empty(self): + self.mock_file.paragraphs = ["Это текст параграфа."] + self.file_info['file'] = self.mock_file + checker = ReportSimpleCheck(file_info=self.file_info) + result = checker.check() + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], "Пройдена!") + + def test_file_empty(self): + self.mock_file.paragraphs = [] + self.file_info['file'] = self.mock_file + checker = ReportSimpleCheck(file_info=self.file_info) + result = checker.check() + self.assertFalse(result['score']) + self.assertEqual(result['verdict'][0], 'В файле нет текста.') + +if __name__ == '__main__': + unittest.main() diff --git a/tests_all/tests_check/test_sld_enum.py b/tests_all/tests_check/test_sld_enum.py new file mode 100644 index 00000000..8146e882 --- /dev/null +++ b/tests_all/tests_check/test_sld_enum.py @@ -0,0 +1,54 @@ +import unittest +from unittest.mock import Mock +from datetime import datetime +# from utils import format_header +from app.main.checks.presentation_checks.sld_enum import SldEnumCheck + +class TestSldEnumCheck(unittest.TestCase): + + def setUp(self): + self.file_info = { + 'file': Mock(), + 'filename': f'{datetime.now().year}ВКР111111ИВАНОВ.pdf', + 'pdf_id': '12345' + } + self.file_info['file'].slides = [ + Mock(page_number=[-1]), + Mock(page_number=[2]), + Mock(page_number=[3]), + Mock(page_number=[4]), + Mock(page_number=[5]) + ] + + def test_correct_slide_numbering(self): + checker = SldEnumCheck(self.file_info) + + result = checker.check() + + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], "Пройдена!") + + def test_incorrect_slide_numbering(self): + self.file_info['file'].slides[1].page_number = [3] + + checker = SldEnumCheck(self.file_info) + + result = checker.check() + + self.assertFalse(result['score']) + self.assertIn("Не пройдена", result['verdict'][0]) + + def test_multiple_errors(self): + self.file_info['file'].slides[1].page_number = [3] + self.file_info['file'].slides[3].page_number = [5] + + checker = SldEnumCheck(self.file_info) + result = checker.check() + + self.assertFalse(result['score']) + self.assertIn("Не пройдена", result['verdict'][0]) + self.assertIn('проблемные слайды: ', result['verdict'][0]) + +if __name__ == '__main__': + unittest.main() + diff --git a/tests_all/tests_check/test_table_references.py b/tests_all/tests_check/test_table_references.py new file mode 100644 index 00000000..d33feb4b --- /dev/null +++ b/tests_all/tests_check/test_table_references.py @@ -0,0 +1,31 @@ +import unittest +from unittest.mock import MagicMock, patch +from app.main.checks.report_checks.table_references import TableReferences +from app.main.checks.base_check import answer +from tests_all.tests_check.base_test import BaseTestCase + +class TestTableReferences(BaseTestCase): + + def setUp(self): + super().setUp() + self.mock_file = self.file_info['file'] + self.file_info['file'] = self.mock_file + + + def test_invalid_references(self): + self.mock_file.page_counter.return_value = 10 + self.mock_file.make_chapters.return_value = [ + {"child": [{"style": "ВКР_Подпись таблицы".lower(), "text": "Таблица 1 -- Пример таблицы", "number": 1}]} + ] + self.mock_file.paragraphs = ["Этот текст содержит неправильную ссылку на таблицу 2."] + self.file_info['file'] = self.mock_file + + checker = TableReferences(file_info=self.file_info) + result = checker.check() + + self.assertFalse(result['score']) + self.assertIn('Упомянуты несуществующие таблицы:', result['verdict'][0]) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests_all/tests_check/test_template_name.py b/tests_all/tests_check/test_template_name.py new file mode 100644 index 00000000..11e88eea --- /dev/null +++ b/tests_all/tests_check/test_template_name.py @@ -0,0 +1,60 @@ +import unittest +from unittest.mock import MagicMock +from datetime import datetime +from app.main.checks.report_checks.template_name import ReportTemplateNameCheck +from app.main.checks.base_check import answer +from tests_all.tests_check.base_test import BaseTestCase + +class TestReportTemplateNameCheck(BaseTestCase): + + def setUp(self): + self.mock_file_info = { + 'file': MagicMock(), + 'filename': f'{datetime.now().year}ВКР111111ИВАНОВ.pdf' + } + self.checker = ReportTemplateNameCheck(file_info=self.mock_file_info) + + def test_correct_filename(self): + self.mock_file_info['filename'] = f'{datetime.now().year}ВКР111111ИВАНОВ.pdf' + self.checker.filename = self.mock_file_info['filename'].split('.', 1)[0] + result = self.checker.check() + self.assertTrue(result['score']) + self.assertEqual(result['verdict'][0], "Пройдена!") + + def test_incorrect_filename(self): + self.mock_file_info['filename'] = f'{datetime.now().year}ВКР111111ivanov.pdf' + self.checker.filename = self.mock_file_info['filename'].split('.', 1)[0] + result = self.checker.check() + self.assertFalse(result['score']) + self.assertIn('не соответствует шаблону', result['verdict'][0]) + + def test_missing_year(self): + self.mock_file_info['filename'] = 'ВКР111111ИВАНОВ.pdf' + self.checker.filename = self.mock_file_info['filename'].split('.', 1)[0] + result = self.checker.check() + self.assertFalse(result['score']) + self.assertIn('не соответствует шаблону', result['verdict'][0]) + + def test_missing_vkr(self): + self.mock_file_info['filename'] = f'{datetime.now().year}111111ИВАНОВ.pdf' + self.checker.filename = self.mock_file_info['filename'].split('.', 1)[0] + result = self.checker.check() + self.assertFalse(result['score']) + self.assertIn('не соответствует шаблону', result['verdict'][0]) + + def test_short_student_id(self): + self.mock_file_info['filename'] = f'{datetime.now().year}ВКР11111ИВАНОВ.pdf' + self.checker.filename = self.mock_file_info['filename'].split('.', 1)[0] + result = self.checker.check() + self.assertFalse(result['score']) + self.assertIn('не соответствует шаблону', result['verdict'][0]) + + def test_non_cyrillic_surname(self): + self.mock_file_info['filename'] = f'{datetime.now().year}ВКР111111IVANOV.pdf' + self.checker.filename = self.mock_file_info['filename'].split('.', 1)[0] + result = self.checker.check() + self.assertFalse(result['score']) + self.assertIn('не соответствует шаблону', result['verdict'][0]) + +if __name__ == '__main__': + unittest.main() diff --git a/tests/tests_data/example_of_pres.pptx b/tests_all/tests_data/example_of_pres.pptx similarity index 100% rename from tests/tests_data/example_of_pres.pptx rename to tests_all/tests_data/example_of_pres.pptx diff --git a/tests/tests_data/example_of_report.doc b/tests_all/tests_data/example_of_report.doc similarity index 100% rename from tests/tests_data/example_of_report.doc rename to tests_all/tests_data/example_of_report.doc diff --git a/tests/tests_data/example_of_report.docx b/tests_all/tests_data/example_of_report.docx similarity index 100% rename from tests/tests_data/example_of_report.docx rename to tests_all/tests_data/example_of_report.docx From bab5c76f4ef123e7e222898cf7515ddd78c23071 Mon Sep 17 00:00:00 2001 From: ifdjhxh Date: Mon, 8 Jul 2024 10:17:54 +0300 Subject: [PATCH 3/3] updated --- {tests_all => tests}/README.md | 0 {tests_all => tests}/basic_selenium_test.py | 0 {tests_all => tests}/main.py | 0 {tests_all => tests}/requirements.txt | 0 {tests_all => tests}/scripts/docker_check_tests.sh | 0 {tests_all => tests}/test_authorization.py | 0 {tests_all => tests}/test_file_load.py | 0 {tests_all => tests}/test_single_card_check.py | 0 {tests_all => tests}/test_statistic.py | 0 {tests_all => tests}/test_version.py | 0 {tests_all => tests}/tests_check/README.md | 2 +- {tests_all => tests}/tests_check/__init__.py | 0 {tests_all => tests}/tests_check/base_test.py | 0 .../tests_check/test_banned_words.py | 0 .../tests_check/test_banned_words_check.py | 2 +- .../tests_check/test_banned_words_in_literature.py | 2 +- {tests_all => tests}/tests_check/test_chapters.py | 2 +- .../tests_check/test_empty_slide_check.py | 0 .../tests_check/test_find_def_sld.py | 0 .../tests_check/test_first_pages_check.py | 2 +- .../tests_check/test_image_share.py | 0 .../tests_check/test_image_share_check.py | 2 +- .../tests_check/test_max_abstract_size_check.py | 2 +- .../tests_check/test_needed_headers_check.py | 2 +- .../tests_check/test_page_counter.py | 2 +- .../tests_check/test_pres_template_name.py | 0 .../tests_check/test_right_words_check.py | 2 +- .../tests_check/test_search_keyword.py | 0 .../tests_check/test_section_component.py | 2 +- .../tests_check/test_simple_check.py | 2 +- {tests_all => tests}/tests_check/test_sld_enum.py | 0 .../tests_check/test_table_references.py | 2 +- .../tests_check/test_template_name.py | 2 +- .../tests_data/example_of_pres.pptx | Bin .../tests_data/example_of_report.doc | Bin .../tests_data/example_of_report.docx | Bin 36 files changed, 14 insertions(+), 14 deletions(-) rename {tests_all => tests}/README.md (100%) rename {tests_all => tests}/basic_selenium_test.py (100%) rename {tests_all => tests}/main.py (100%) rename {tests_all => tests}/requirements.txt (100%) rename {tests_all => tests}/scripts/docker_check_tests.sh (100%) rename {tests_all => tests}/test_authorization.py (100%) rename {tests_all => tests}/test_file_load.py (100%) rename {tests_all => tests}/test_single_card_check.py (100%) rename {tests_all => tests}/test_statistic.py (100%) rename {tests_all => tests}/test_version.py (100%) rename {tests_all => tests}/tests_check/README.md (65%) rename {tests_all => tests}/tests_check/__init__.py (100%) rename {tests_all => tests}/tests_check/base_test.py (100%) rename {tests_all => tests}/tests_check/test_banned_words.py (100%) rename {tests_all => tests}/tests_check/test_banned_words_check.py (98%) rename {tests_all => tests}/tests_check/test_banned_words_in_literature.py (97%) rename {tests_all => tests}/tests_check/test_chapters.py (98%) rename {tests_all => tests}/tests_check/test_empty_slide_check.py (100%) rename {tests_all => tests}/tests_check/test_find_def_sld.py (100%) rename {tests_all => tests}/tests_check/test_first_pages_check.py (98%) rename {tests_all => tests}/tests_check/test_image_share.py (100%) rename {tests_all => tests}/tests_check/test_image_share_check.py (98%) rename {tests_all => tests}/tests_check/test_max_abstract_size_check.py (98%) rename {tests_all => tests}/tests_check/test_needed_headers_check.py (98%) rename {tests_all => tests}/tests_check/test_page_counter.py (97%) rename {tests_all => tests}/tests_check/test_pres_template_name.py (100%) rename {tests_all => tests}/tests_check/test_right_words_check.py (98%) rename {tests_all => tests}/tests_check/test_search_keyword.py (100%) rename {tests_all => tests}/tests_check/test_section_component.py (98%) rename {tests_all => tests}/tests_check/test_simple_check.py (94%) rename {tests_all => tests}/tests_check/test_sld_enum.py (100%) rename {tests_all => tests}/tests_check/test_table_references.py (95%) rename {tests_all => tests}/tests_check/test_template_name.py (98%) rename {tests_all => tests}/tests_data/example_of_pres.pptx (100%) rename {tests_all => tests}/tests_data/example_of_report.doc (100%) rename {tests_all => tests}/tests_data/example_of_report.docx (100%) diff --git a/tests_all/README.md b/tests/README.md similarity index 100% rename from tests_all/README.md rename to tests/README.md diff --git a/tests_all/basic_selenium_test.py b/tests/basic_selenium_test.py similarity index 100% rename from tests_all/basic_selenium_test.py rename to tests/basic_selenium_test.py diff --git a/tests_all/main.py b/tests/main.py similarity index 100% rename from tests_all/main.py rename to tests/main.py diff --git a/tests_all/requirements.txt b/tests/requirements.txt similarity index 100% rename from tests_all/requirements.txt rename to tests/requirements.txt diff --git a/tests_all/scripts/docker_check_tests.sh b/tests/scripts/docker_check_tests.sh similarity index 100% rename from tests_all/scripts/docker_check_tests.sh rename to tests/scripts/docker_check_tests.sh diff --git a/tests_all/test_authorization.py b/tests/test_authorization.py similarity index 100% rename from tests_all/test_authorization.py rename to tests/test_authorization.py diff --git a/tests_all/test_file_load.py b/tests/test_file_load.py similarity index 100% rename from tests_all/test_file_load.py rename to tests/test_file_load.py diff --git a/tests_all/test_single_card_check.py b/tests/test_single_card_check.py similarity index 100% rename from tests_all/test_single_card_check.py rename to tests/test_single_card_check.py diff --git a/tests_all/test_statistic.py b/tests/test_statistic.py similarity index 100% rename from tests_all/test_statistic.py rename to tests/test_statistic.py diff --git a/tests_all/test_version.py b/tests/test_version.py similarity index 100% rename from tests_all/test_version.py rename to tests/test_version.py diff --git a/tests_all/tests_check/README.md b/tests/tests_check/README.md similarity index 65% rename from tests_all/tests_check/README.md rename to tests/tests_check/README.md index e5760dbd..9c6d67d1 100644 --- a/tests_all/tests_check/README.md +++ b/tests/tests_check/README.md @@ -8,6 +8,6 @@ $ pip install -r requirements.txt ```bash -$ python -m unittest discover tests_all/tests_check +$ python -m unittest discover tests/tests_check ``` diff --git a/tests_all/tests_check/__init__.py b/tests/tests_check/__init__.py similarity index 100% rename from tests_all/tests_check/__init__.py rename to tests/tests_check/__init__.py diff --git a/tests_all/tests_check/base_test.py b/tests/tests_check/base_test.py similarity index 100% rename from tests_all/tests_check/base_test.py rename to tests/tests_check/base_test.py diff --git a/tests_all/tests_check/test_banned_words.py b/tests/tests_check/test_banned_words.py similarity index 100% rename from tests_all/tests_check/test_banned_words.py rename to tests/tests_check/test_banned_words.py diff --git a/tests_all/tests_check/test_banned_words_check.py b/tests/tests_check/test_banned_words_check.py similarity index 98% rename from tests_all/tests_check/test_banned_words_check.py rename to tests/tests_check/test_banned_words_check.py index b744bc8d..0c9ed1f4 100644 --- a/tests_all/tests_check/test_banned_words_check.py +++ b/tests/tests_check/test_banned_words_check.py @@ -1,5 +1,5 @@ import unittest -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase from app.main.checks.base_check import morph, answer from app.main.checks.report_checks import ReportBannedWordsCheck diff --git a/tests_all/tests_check/test_banned_words_in_literature.py b/tests/tests_check/test_banned_words_in_literature.py similarity index 97% rename from tests_all/tests_check/test_banned_words_in_literature.py rename to tests/tests_check/test_banned_words_in_literature.py index 05233f1b..cf106012 100644 --- a/tests_all/tests_check/test_banned_words_in_literature.py +++ b/tests/tests_check/test_banned_words_in_literature.py @@ -1,6 +1,6 @@ import unittest from app.main.checks.report_checks import BannedWordsInLiteratureCheck -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase from app.main.checks.base_check import morph, answer morph.normal_forms = lambda word: [word] diff --git a/tests_all/tests_check/test_chapters.py b/tests/tests_check/test_chapters.py similarity index 98% rename from tests_all/tests_check/test_chapters.py rename to tests/tests_check/test_chapters.py index a1093ff8..71822121 100644 --- a/tests_all/tests_check/test_chapters.py +++ b/tests/tests_check/test_chapters.py @@ -1,6 +1,6 @@ import unittest from unittest.mock import MagicMock -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase from app.main.checks.base_check import morph, answer from app.main.checks.report_checks import ReportChapters diff --git a/tests_all/tests_check/test_empty_slide_check.py b/tests/tests_check/test_empty_slide_check.py similarity index 100% rename from tests_all/tests_check/test_empty_slide_check.py rename to tests/tests_check/test_empty_slide_check.py diff --git a/tests_all/tests_check/test_find_def_sld.py b/tests/tests_check/test_find_def_sld.py similarity index 100% rename from tests_all/tests_check/test_find_def_sld.py rename to tests/tests_check/test_find_def_sld.py diff --git a/tests_all/tests_check/test_first_pages_check.py b/tests/tests_check/test_first_pages_check.py similarity index 98% rename from tests_all/tests_check/test_first_pages_check.py rename to tests/tests_check/test_first_pages_check.py index e0703906..3f65e21b 100644 --- a/tests_all/tests_check/test_first_pages_check.py +++ b/tests/tests_check/test_first_pages_check.py @@ -1,7 +1,7 @@ import unittest from unittest.mock import MagicMock from app.main.checks.report_checks import ReportFirstPagesCheck -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportFirstPagesCheck(BaseTestCase): def setUp(self): diff --git a/tests_all/tests_check/test_image_share.py b/tests/tests_check/test_image_share.py similarity index 100% rename from tests_all/tests_check/test_image_share.py rename to tests/tests_check/test_image_share.py diff --git a/tests_all/tests_check/test_image_share_check.py b/tests/tests_check/test_image_share_check.py similarity index 98% rename from tests_all/tests_check/test_image_share_check.py rename to tests/tests_check/test_image_share_check.py index 51fffa91..ec448784 100644 --- a/tests_all/tests_check/test_image_share_check.py +++ b/tests/tests_check/test_image_share_check.py @@ -1,7 +1,7 @@ import unittest from unittest.mock import MagicMock from app.main.checks.report_checks import ReportImageShareCheck -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportImageShareCheck(BaseTestCase): def setUp(self): diff --git a/tests_all/tests_check/test_max_abstract_size_check.py b/tests/tests_check/test_max_abstract_size_check.py similarity index 98% rename from tests_all/tests_check/test_max_abstract_size_check.py rename to tests/tests_check/test_max_abstract_size_check.py index 38952a64..49798bb1 100644 --- a/tests_all/tests_check/test_max_abstract_size_check.py +++ b/tests/tests_check/test_max_abstract_size_check.py @@ -1,6 +1,6 @@ import unittest from app.main.checks.report_checks import ReportMaxSizeOfAbstractCheck -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportMaxSizeOfAbstractCheck(BaseTestCase): diff --git a/tests_all/tests_check/test_needed_headers_check.py b/tests/tests_check/test_needed_headers_check.py similarity index 98% rename from tests_all/tests_check/test_needed_headers_check.py rename to tests/tests_check/test_needed_headers_check.py index bdcfa0c9..0838eefb 100644 --- a/tests_all/tests_check/test_needed_headers_check.py +++ b/tests/tests_check/test_needed_headers_check.py @@ -1,7 +1,7 @@ import unittest from unittest.mock import MagicMock from app.main.checks.report_checks import ReportNeededHeadersCheck -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportNeededHeadersCheck(BaseTestCase): def setUp(self): diff --git a/tests_all/tests_check/test_page_counter.py b/tests/tests_check/test_page_counter.py similarity index 97% rename from tests_all/tests_check/test_page_counter.py rename to tests/tests_check/test_page_counter.py index 693d3c65..e1f8682b 100644 --- a/tests_all/tests_check/test_page_counter.py +++ b/tests/tests_check/test_page_counter.py @@ -1,7 +1,7 @@ import unittest from unittest.mock import MagicMock from app.main.checks.report_checks import ReportPageCounter -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportPageCounter(BaseTestCase): def setUp(self): diff --git a/tests_all/tests_check/test_pres_template_name.py b/tests/tests_check/test_pres_template_name.py similarity index 100% rename from tests_all/tests_check/test_pres_template_name.py rename to tests/tests_check/test_pres_template_name.py diff --git a/tests_all/tests_check/test_right_words_check.py b/tests/tests_check/test_right_words_check.py similarity index 98% rename from tests_all/tests_check/test_right_words_check.py rename to tests/tests_check/test_right_words_check.py index 01f9dc1b..56f27982 100644 --- a/tests_all/tests_check/test_right_words_check.py +++ b/tests/tests_check/test_right_words_check.py @@ -1,7 +1,7 @@ import unittest from unittest.mock import MagicMock from app.main.checks.report_checks import ReportRightWordsCheck -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportRightWordsCheck(BaseTestCase): def setUp(self): diff --git a/tests_all/tests_check/test_search_keyword.py b/tests/tests_check/test_search_keyword.py similarity index 100% rename from tests_all/tests_check/test_search_keyword.py rename to tests/tests_check/test_search_keyword.py diff --git a/tests_all/tests_check/test_section_component.py b/tests/tests_check/test_section_component.py similarity index 98% rename from tests_all/tests_check/test_section_component.py rename to tests/tests_check/test_section_component.py index 23fa837e..05e49983 100644 --- a/tests_all/tests_check/test_section_component.py +++ b/tests/tests_check/test_section_component.py @@ -1,7 +1,7 @@ import unittest from unittest.mock import MagicMock from app.main.checks.report_checks import ReportSectionComponent -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportSectionComponent(BaseTestCase): def setUp(self): diff --git a/tests_all/tests_check/test_simple_check.py b/tests/tests_check/test_simple_check.py similarity index 94% rename from tests_all/tests_check/test_simple_check.py rename to tests/tests_check/test_simple_check.py index 803f64e1..45850c22 100644 --- a/tests_all/tests_check/test_simple_check.py +++ b/tests/tests_check/test_simple_check.py @@ -1,7 +1,7 @@ import unittest from unittest.mock import MagicMock from app.main.checks.report_checks.simple_check import ReportSimpleCheck -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportSimpleCheck(BaseTestCase): diff --git a/tests_all/tests_check/test_sld_enum.py b/tests/tests_check/test_sld_enum.py similarity index 100% rename from tests_all/tests_check/test_sld_enum.py rename to tests/tests_check/test_sld_enum.py diff --git a/tests_all/tests_check/test_table_references.py b/tests/tests_check/test_table_references.py similarity index 95% rename from tests_all/tests_check/test_table_references.py rename to tests/tests_check/test_table_references.py index d33feb4b..f24c3c3d 100644 --- a/tests_all/tests_check/test_table_references.py +++ b/tests/tests_check/test_table_references.py @@ -2,7 +2,7 @@ from unittest.mock import MagicMock, patch from app.main.checks.report_checks.table_references import TableReferences from app.main.checks.base_check import answer -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestTableReferences(BaseTestCase): diff --git a/tests_all/tests_check/test_template_name.py b/tests/tests_check/test_template_name.py similarity index 98% rename from tests_all/tests_check/test_template_name.py rename to tests/tests_check/test_template_name.py index 11e88eea..a74a1bbd 100644 --- a/tests_all/tests_check/test_template_name.py +++ b/tests/tests_check/test_template_name.py @@ -3,7 +3,7 @@ from datetime import datetime from app.main.checks.report_checks.template_name import ReportTemplateNameCheck from app.main.checks.base_check import answer -from tests_all.tests_check.base_test import BaseTestCase +from tests.tests_check.base_test import BaseTestCase class TestReportTemplateNameCheck(BaseTestCase): diff --git a/tests_all/tests_data/example_of_pres.pptx b/tests/tests_data/example_of_pres.pptx similarity index 100% rename from tests_all/tests_data/example_of_pres.pptx rename to tests/tests_data/example_of_pres.pptx diff --git a/tests_all/tests_data/example_of_report.doc b/tests/tests_data/example_of_report.doc similarity index 100% rename from tests_all/tests_data/example_of_report.doc rename to tests/tests_data/example_of_report.doc diff --git a/tests_all/tests_data/example_of_report.docx b/tests/tests_data/example_of_report.docx similarity index 100% rename from tests_all/tests_data/example_of_report.docx rename to tests/tests_data/example_of_report.docx