Skip to content

Commit 034ae8d

Browse files
authored
Merge pull request #250 from Tinkoff/compatible-fix
fix sqlalchemy compatibility
2 parents af3b026 + 706598a commit 034ae8d

File tree

8 files changed

+23
-35
lines changed

8 files changed

+23
-35
lines changed

makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CODE = overhave
22
VENV ?= .venv
33
WORK_DIR ?= .
4-
MIN_COVERAGE ?= 87.2
4+
MIN_COVERAGE ?= 87.1
55
PACKAGE_BUILD_DIR ?= dist
66
PYTHON_VERSION ?= 3.11
77

overhave/admin/views/tag.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ class TagsView(ModelViewConfigured):
2323
_tag_name_pattern = re.compile(r"^[0-9a-zA-Zа-яА-ЯёЁ_]+$")
2424

2525
def on_model_change(self, form: Form, model: db.Tags, is_created: bool) -> None:
26-
tag = form.data.get("value")
27-
if tag is not None and not self._tag_name_pattern.match(tag):
26+
if not self._tag_name_pattern.match(model.value):
2827
raise ValidationError("Unsupported symbols in tag name!")
2928
if not is_created:
3029
if current_user.login == model.created_by or current_user.role == db.Role.admin:

overhave/admin/views/testing_users.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class TestUserView(ModelViewConfigured):
5050

5151
_feature_type: FeatureTypeName | None = None
5252

53-
def on_form_prefill(self, form, id) -> None: # type: ignore # noqa: A002
53+
def on_form_prefill(self, form: Form, id) -> None: # type: ignore # noqa: A002
5454
if not isinstance(form._obj, db.TestUser):
5555
return
5656
self._feature_type = cast(FeatureTypeName, form._obj.feature_type.name)

overhave/base_settings.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@
77
import sqlalchemy as sa
88
import sqlalchemy.engine
99
import sqlalchemy.exc
10-
import sqlalchemy.pool
1110
from pydantic import BaseSettings, Field, validator
12-
from sqlalchemy import Pool
13-
from sqlalchemy.pool import SingletonThreadPool
11+
from sqlalchemy.pool import Pool, SingletonThreadPool
1412

1513
OVERHAVE_ENV_PREFIX = "OVERHAVE_"
1614

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "overhave"
3-
version = "4.0.2"
3+
version = "4.0.3"
44
description = "Overhave - web-framework for BDD"
55
readme = "README.rst"
66
authors = [

tests/unit/admin/conftest.py

+2-11
Original file line numberDiff line numberDiff line change
@@ -193,11 +193,8 @@ def test_tags_row(faker: Faker, test_system_user_login: str) -> db.Tags:
193193

194194

195195
@pytest.fixture()
196-
def form_mock(test_incorrect_testing_user_row: db.TestUser) -> mock.MagicMock:
197-
form_mock = mock.MagicMock()
198-
form_mock.data = {}
199-
form_mock._obj = test_incorrect_testing_user_row
200-
return form_mock
196+
def form_mock() -> mock.MagicMock:
197+
return mock.MagicMock()
201198

202199

203200
@pytest.fixture()
@@ -210,12 +207,6 @@ def test_testing_user_row() -> db.TestUser:
210207
return db.TestUser()
211208

212209

213-
@pytest.fixture()
214-
def test_incorrect_testing_user_row(faker: Faker) -> db.TestUser:
215-
test_user: db.TestUser = db.TestUser(feature_type=db.FeatureType(name=faker.word()))
216-
return test_user
217-
218-
219210
@pytest.fixture()
220211
def current_user_mock(user_role: db.Role, faker: Faker, test_mock_patch_user_directory: str) -> mock.MagicMock:
221212
with mock.patch(test_mock_patch_user_directory, return_value=mock.MagicMock()) as mocked:

tests/unit/admin/test_tag_view.py

+8-10
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,12 @@ def test_get_tag_created_not_change(
2828
assert test_tags_row.created_by == previous_row.created_by
2929

3030
@pytest.mark.parametrize("user_role", [db.Role.user], indirect=True)
31-
def test_get_tag_created_error(
32-
self,
33-
test_tags_view: views.TagsView,
34-
current_user_mock: mock.MagicMock,
35-
test_tags_row: db.Tags,
36-
form_mock: mock.MagicMock,
31+
def test_get_tag_validation_error_tag_not_creator_or_admin(
32+
self, test_tags_view: views.TagsView, current_user_mock: mock.MagicMock, form_mock: mock.MagicMock, faker: Faker
3733
) -> None:
34+
db_tag = db.Tags(value=faker.word(), created_by=faker.word())
3835
with pytest.raises(ValidationError):
39-
test_tags_view.on_model_change(form=form_mock, model=test_tags_row, is_created=False)
36+
test_tags_view.on_model_change(form=form_mock, model=db_tag, is_created=False)
4037

4138
@pytest.mark.parametrize("user_role", [db.Role.user], indirect=True)
4239
def test_get_tag_delete_error(
@@ -60,15 +57,16 @@ def test_get_tag_created_by(
6057

6158
@pytest.mark.parametrize("user_role", [db.Role.admin, db.Role.user], indirect=True)
6259
@pytest.mark.parametrize("value", ["(!)", "+5", "k$ek", "@", "(*"])
63-
def test_incorrect_tag_raises_error(
60+
def test_incorrect_tag_value_validation_error(
6461
self,
6562
test_tags_view: views.TagsView,
6663
current_user_mock: mock.MagicMock,
6764
test_tags_row: db.Tags,
6865
faker: Faker,
6966
form_mock: mock.MagicMock,
67+
test_system_user_login: str,
7068
value: str,
7169
) -> None:
72-
form_mock.data["value"] = value
70+
db_tag = db.Tags(value=value, created_by=test_system_user_login)
7371
with pytest.raises(ValidationError):
74-
test_tags_view.on_model_change(form=form_mock, model=test_tags_row, is_created=True)
72+
test_tags_view.on_model_change(form=form_mock, model=db_tag, is_created=True)

tests/unit/admin/test_testing_users.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,26 @@ def test_user_doesnt_delete_testing_users(
3838
def test_incorrect_model_raises_error(
3939
self,
4040
test_testing_user_view: TestUserView,
41-
test_incorrect_testing_user_row: db.TestUser,
4241
current_user_mock: mock.MagicMock,
4342
form_mock: mock.MagicMock,
4443
test_is_created: bool,
44+
faker: Faker,
4545
) -> None:
46+
db_test_user = db.TestUser(feature_type=db.FeatureType(name=faker.word()))
4647
with pytest.raises(ValidationError):
47-
test_testing_user_view.on_model_change(
48-
form=form_mock, model=test_incorrect_testing_user_row, is_created=test_is_created
49-
)
48+
test_testing_user_view.on_model_change(form=form_mock, model=db_test_user, is_created=test_is_created)
5049

5150
@pytest.mark.parametrize("user_role", [db.Role.admin, db.Role.user], indirect=True)
52-
def test_on_form_prefill(
51+
def test_on_form_prefill_set_feature_type(
5352
self,
5453
test_testing_user_view: TestUserView,
54+
test_testing_user_row: db.TestUser,
5555
current_user_mock: mock.MagicMock,
5656
form_mock: mock.MagicMock,
5757
faker: Faker,
5858
) -> None:
5959
assert test_testing_user_view._feature_type is None
60-
test_testing_user_view.on_form_prefill(form=form_mock, id=faker.word())
60+
test_testing_user_row.feature_type = db.FeatureType(name=faker.word())
61+
form_mock._obj = test_testing_user_row
62+
test_testing_user_view.on_form_prefill(form=form_mock, id=faker.random_int())
6163
assert test_testing_user_view._feature_type is not None

0 commit comments

Comments
 (0)