Skip to content

Commit 1d9243f

Browse files
committed
fix ci/cd and more
1 parent ee6089e commit 1d9243f

11 files changed

Lines changed: 109 additions & 2 deletions

File tree

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
# API-medication-management
22

3+
Посмотреть бота можно в Telegram @MrChesterBot
4+
5+
В этом репозитории находится API для обработки напоминаний, и микросервис для поставки напоминаний в очередь, для отправки конечному пользователю напоминания в Telegram.
6+
Бот находится в репозитории `https://github.com/Aleks-Ti/medication-management`
7+
38
![Схема приложения](./image/architecture.png)

event_microservice/src/event/repository.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import logging
12
from datetime import UTC, datetime, timedelta
23

34
from sqlalchemy import Row

event_microservice/src/settings/configuration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class MQEnvs:
5555
network_port: int | None = int(getenv("RMQ_NETWOTK_PORT"))
5656
user: str | None = str(getenv("RMQ_USER"))
5757
password: str | None = str(getenv("RMQ_PASSWORD"))
58-
host: str = os.getenv("RMQ_HOST") if os.getenv("DEV") == "local_container" else "host.docker.internal"
58+
host: str = os.getenv("RMQ_HOST") if os.getenv("DEV") == "prod" else "host.docker.internal"
5959

6060
def __post_init__(self):
6161
required_vars = ["network_port", "user", "password", "host"]

pyproject.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ dependencies = [
1111
"fastapi>=0.115.5",
1212
"pika>=1.3.2",
1313
"pydantic>=2.9.2",
14+
"pytest>=8.3.4",
1415
"sqlalchemy>=2.0.36",
1516
"uvicorn>=0.32.0",
1617
]
@@ -87,3 +88,8 @@ exclude = [
8788

8889
[tool.ruff.pydocstyle]
8990
convention = "google"
91+
92+
[tool.pytest.ini_options]
93+
testpaths = ["tests"]
94+
filterwarnings = "ignore::DeprecationWarning"
95+
addopts = "-v -p no:cacheprovider"

src/settings/configuration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class MQEnvs:
5555
network_port: int | None = int(getenv("RMQ_NETWOTK_PORT"))
5656
user: str | None = str(getenv("RMQ_USER"))
5757
password: str | None = str(getenv("RMQ_PASSWORD"))
58-
host: str = getenv("RMQ_HOST", "localhost")
58+
host: str = getenv("RMQ_HOST") if getenv("DEV") == "local_container" else "host.docker.internal"
5959

6060
def __post_init__(self) -> None:
6161
required_vars = ["ui_port", "network_port", "user", "password", "host"]

tests/fixtures/__init__.py

Whitespace-only changes.

tests/tests/test_integrations/__init__.py

Whitespace-only changes.

tests/tests/test_unit/__init__.py

Whitespace-only changes.

tests/tests/test_unit/test_drug_regimen/__init__.py

Whitespace-only changes.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from unittest.mock import MagicMock, Mock
2+
3+
import pytest
4+
5+
from src.drug_regimen.repository import ManagerRepository, RegimenRepository
6+
from src.drug_regimen.schemas import AddRegimenSchema, UpdateRegimenSchema
7+
from src.drug_regimen.service import RegimenService
8+
from src.utils.time_conversion import conversion_reception_time_to_GMT
9+
10+
11+
@pytest.fixture
12+
def regimen_service():
13+
regimen_repository = Mock(spec=RegimenRepository)
14+
manager_repository = Mock(spec=ManagerRepository)
15+
return RegimenService(regimen_repository, manager_repository)
16+
17+
18+
def test_regimen_service_init(regimen_service):
19+
assert regimen_service.regimen_repository is not None
20+
assert regimen_service.manager_repository is not None
21+
assert regimen_service.conversion_time is conversion_reception_time_to_GMT
22+
23+
24+
@pytest.mark.asyncio
25+
async def test_add_one_complex(regimen_service):
26+
regimen_data = AddRegimenSchema(manager_id=1, reception_time="10:00", supplement="test", is_active=True)
27+
manager_obj = Mock()
28+
regimen_service.manager_repository.find_one.return_value = manager_obj
29+
regimen_service.regimen_repository.add_one.return_value = Mock()
30+
31+
await regimen_service.add_one_complex(regimen_data)
32+
33+
regimen_service.manager_repository.find_one.assert_called_once_with(regimen_data.manager_id)
34+
regimen_service.regimen_repository.add_one.assert_called_once()
35+
36+
37+
@pytest.mark.asyncio
38+
async def test_update_regmen(regimen_service):
39+
regimen_data = UpdateRegimenSchema(reception_time="11:00", supplement="test2", is_active=False)
40+
regimen_id = 1
41+
regimen_obj = Mock()
42+
regimen_service.regimen_repository.find_one_ON_manager.return_value = regimen_obj
43+
regimen_service.regimen_repository.update_one.return_value = Mock()
44+
45+
await regimen_service.update_regmen(regimen_data, regimen_id)
46+
47+
regimen_service.regimen_repository.find_one_ON_manager.assert_called_once_with(regimen_id)
48+
regimen_service.regimen_repository.update_one.assert_called_once_with(
49+
regimen_obj.id,
50+
regimen_data.model_dump(exclude_none=True),
51+
)

0 commit comments

Comments
 (0)