Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions docker-compose-selenium.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
services:
selenium-hub:
image: selenium/hub:4.18.0
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443

chrome-node:
image: selenium/node-chrome:4.18.0
container_name: chrome-node
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_NODE_GRID_URL=http://selenium-hub:4444

selenium-tests:
build:
context: .
Expand All @@ -8,4 +31,6 @@ services:
- PASSWORD=${ADMIN_PASSWORD}
depends_on:
- web
- chrome-node
- selenium-hub
network_mode: service:web
37 changes: 37 additions & 0 deletions tests/presentation_checks/banned_words_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import pytest
from unittest.mock import patch
from app.main.checks.presentation_checks.banned_words import PresBannedWordsCheck


class TestBannedWords:
def test_bw1(self, mock_file):
mock_file.get_text_from_slides.return_value = ["Хороший текст", "Отличный доклад"]

with patch('pymorphy2.MorphAnalyzer') as mock_morph:
mock_morph.return_value.normal_forms.return_value = ["хороший", "текст", "отличный", "доклад"]
check = PresBannedWordsCheck(
words=["плохой", "ужасный"],
min_count=1,
max_count=3,
file=mock_file
)

result = check.check()

assert result.score == 1
assert result.message == 'Пройдена!'
assert not hasattr(check, 'detected_slides') or check.detected_slides == []

def test_bw2(self, mock_file):
mock_file.get_text_from_slides.return_value = ["Любой текст"]
check = PresBannedWordsCheck(
words=[],
min_count=1,
max_count=3,
file=mock_file
)

result = check.check()

assert result.score == 1
assert result.message == 'Пройдена!'
17 changes: 17 additions & 0 deletions tests/presentation_checks/confest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import pytest
from unittest.mock import Mock
from tests.presentation_checks.mock_presentation import MockPresentation


@pytest.fixture
def mock_presentation():
return MockPresentation()


@pytest.fixture
def mock_file():
mock = Mock()
mock.get_text_from_slides.return_value = []
mock.get_titles.return_value = []
mock.found_index = {}
return mock
58 changes: 58 additions & 0 deletions tests/presentation_checks/find_def_sld_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import pytest
from app.main.checks.presentation_checks.find_def_sld import FindDefSld


class TestFindDefSld:
def test_fds1(self, mock_file):
mock_file.get_titles.return_value = ["Титульный слайд", "Введение", "Заключение"]
mock_file.get_text_from_slides.return_value = ["Текст слайда 1", "Текст слайда 2", "Текст слайда 3"]
mock_file.found_index = {}
def mock_format_page_link(indexes):
return [str(idx + 1) for idx in indexes]
mock_file.format_page_link = mock_format_page_link
check = FindDefSld(
type_of_slide="Введение",
file=mock_file
)

result = check.check()

assert result.score == True
assert "Найден под номером: 2" in result.message
assert check.found_idxs == [1]
assert mock_file.found_index["введение"] == [1]

def test_fds2(self, mock_file):
mock_file.get_titles.return_value = ["ВВЕДЕНИЕ", "ЗАКЛЮЧЕНИЕ"]
def mock_format_page_link(indexes):
return [str(idx + 1) for idx in indexes]
mock_file.format_page_link = mock_format_page_link
check = FindDefSld(
type_of_slide="введение",
file=mock_file
)

result = check.check()

assert result.score == True
assert "Найден под номером: 1" in result.message
assert check.found_idxs == [0]

def test_fds3(self, mock_file):
mock_file.get_titles.return_value = ["Первый слайд", "Второй слайд", "Заключение"]
mock_file.found_index = {}
def mock_format_page_link(indexes):
return [str(idx + 1) for idx in indexes]
mock_file.format_page_link = mock_format_page_link

check = FindDefSld(
type_of_slide="слайд",
file=mock_file
)

result = check.check()

assert result.score == True
assert "1, 2" in result.message
assert check.found_idxs == [0, 1]
assert mock_file.found_index["слайд"] == [0, 1]
68 changes: 68 additions & 0 deletions tests/presentation_checks/find_theme_in_pres_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import pytest
from unittest.mock import Mock
from app.main.checks.presentation_checks.find_theme_in_pres import FindThemeInPres


class TestFindThemeInPres:
def test_fitip1(self):
mock_presentation = Mock()
mock_presentation.theme = "Искусственный интеллект в медицине"
mock_presentation.get_text_from_slides.return_value = [
"Искусственный интеллект помогает в медицине",
"Медицинские применения ИИ",
"Будущее медицины с ИИ"
]
mock_presentation.get_titles.return_value = [
"Титульный слайд",
"Введение",
"Содержание",
"Заключение"
]

check = FindThemeInPres(file=mock_presentation)

result = check.check()

assert result.score == True
assert "100 %" in result.message

def test_fitip2(self):
mock_presentation = Mock()
mock_presentation.theme = "Искусственный интеллект в медицине"
mock_presentation.get_text_from_slides.return_value = [
"Другой текст",
"Не содержит ключевых слов",
"Просто текст"
]
mock_presentation.get_titles.return_value = [
"Титульный слайд",
"Введение",
"Содержание",
"Заключение"
]

check = FindThemeInPres(file=mock_presentation)

result = check.check()

assert result.score == False
assert "Не пройдена!" in result.message

def test_fitip3(self):
mock_presentation = Mock()
mock_presentation.theme = "Искусственный интеллект"
mock_presentation.get_text_from_slides.return_value = [
"Текст без темы",
"Искусственный интеллект упоминается только в заключении"
]
mock_presentation.get_titles.return_value = [
"Титульный слайд",
"Заключение"
]

check = FindThemeInPres(file=mock_presentation)

result = check.check()

assert result.score == False
assert "Не пройдена!" in result.message
58 changes: 58 additions & 0 deletions tests/presentation_checks/image_share_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import pytest
from unittest.mock import Mock
from app.main.checks.presentation_checks.image_share import PresImageShareCheck


class TestImageShare:
def test_is1(self):
mock_presentation = Mock()
mock_presentation.slides = [Mock() for _ in range(10)]
for slide in mock_presentation.slides:
slide.has_image = True

check = PresImageShareCheck(file=mock_presentation, limit=0.9)

result = check.check()

assert result.score == False
assert "1.0" in result.message
assert "0.9" in result.message

def test_is2(self):
mock_presentation = Mock()
mock_presentation.slides = [Mock() for _ in range(10)]
for i in range(9):
mock_presentation.slides[i].has_image = True
mock_presentation.slides[9].has_image = False

check = PresImageShareCheck(file=mock_presentation, limit=0.9)

result = check.check()

assert result.score == True
assert result.message == 'Пройдена!'

def test_is3(self):
mock_presentation = Mock()
mock_presentation.slides = [Mock()]
mock_presentation.slides[0].has_image = True

check = PresImageShareCheck(file=mock_presentation, limit=0.9)

result = check.check()

assert result.score == False
assert "1.0" in result.message

def test_is4(self):
mock_presentation = Mock()
mock_presentation.slides = [Mock() for _ in range(10)]
for slide in mock_presentation.slides:
slide.has_image = False

check = PresImageShareCheck(file=mock_presentation, limit=0.9)

result = check.check()

assert result.score == True
assert result.message == 'Пройдена!'
18 changes: 18 additions & 0 deletions tests/presentation_checks/mock_presentation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from unittest.mock import Mock


class MockPresentation:
def __init__(self):
self.texts = []
self.titles = []
self.found_index = {}
self.slides = []

def get_text_from_slides(self):
return self.texts

def get_titles(self):
return self.titles

def format_page_link(self, indexes):
return [str(idx + 1) for idx in indexes]
44 changes: 44 additions & 0 deletions tests/presentation_checks/overview_in_tasks_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import pytest
from unittest.mock import Mock
from app.main.checks.presentation_checks.overview_in_tasks import OverviewInTasks


class TestOverviewInTasks:
def test_oit1(self):
mock_presentation = Mock()
tasks_slide = Mock()
tasks_slide.get_text.return_value = "1. Обзор литературы\n2. Анализ данных"
mock_presentation.find_slide_by_title.return_value = tasks_slide

check = OverviewInTasks(file=mock_presentation)

result = check.check()

assert result.score == True
assert 'Пройдена!' in result.message

def test_oit2(self):
mock_presentation = Mock()
tasks_slide = Mock()
tasks_slide.get_text.return_value = "1. Анализ существующих решений"
mock_presentation.find_slide_by_title.return_value = tasks_slide

check = OverviewInTasks(file=mock_presentation)

result = check.check()

assert result.score == True
assert 'Пройдена!' in result.message

def test_oit3(self):
mock_presentation = Mock()
tasks_slide = Mock()
tasks_slide.get_text.return_value = "1. Исследование\n2. Разработка"
mock_presentation.find_slide_by_title.return_value = tasks_slide

check = OverviewInTasks(file=mock_presentation)

result = check.check()

assert result.score == False
assert 'обзора' in result.message or 'анализа' in result.message
39 changes: 39 additions & 0 deletions tests/presentation_checks/search_keyword_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import pytest
from unittest.mock import Mock
from app.main.checks.presentation_checks.search_keyword import SearchKeyWord


class TestSearchKeyword:
def test_sk1(self):
mock_presentation = Mock()
mock_presentation.get_text_from_slides.return_value = [
"Текст слайда 1",
"Текст слайда 2",
"Актуальность темы",
"Текст слайда 4",
"Текст слайда 5"
]

check = SearchKeyWord(file=mock_presentation, key_slide=["Актуальность"])

result = check.check()

assert result.score == True
assert "3" in result.message

def test_sk2(self):
mock_presentation = Mock()
mock_presentation.get_text_from_slides.return_value = [
"Текст слайда 1",
"Текст слайда 2",
"Текст слайда 3",
"Текст слайда 4",
"Текст слайда 5"
]

check = SearchKeyWord(file=mock_presentation, key_slide=["Актуальность"])

result = check.check()

assert result.score == False
assert "Слайд не найден" in result.message
Loading
Loading