Skip to content

Commit ddf9699

Browse files
authored
Merge pull request #88 from GabrielSalla/add-code-module-register-method
Add code module register method
2 parents 85a7e65 + 1b807c6 commit ddf9699

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

src/components/monitors_loader/monitors_loader.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,7 @@ async def register_monitor(
9494

9595
monitor = await Monitor.get_or_create(name=monitor_name)
9696
code_module = await CodeModule.get_or_create(monitor_id=monitor.id)
97-
code_module.code = monitor_code
98-
code_module.additional_files = additional_files or {}
99-
code_module.registered_at = now()
100-
await code_module.save()
97+
await code_module.register(code=monitor_code, additional_files=additional_files or {})
10198

10299
return monitor
103100

src/models/code_module.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,11 @@ async def get_updated_code_modules(
4141
cls.monitor_id.in_(monitors_ids),
4242
cls.registered_at > reference_timestamp,
4343
)
44+
45+
@Base.lock_change
46+
async def register(self, code: str, additional_files: dict[str, str] | None = None) -> None:
47+
"""Register a code module with the given code and additional files"""
48+
self.code = code
49+
self.additional_files = additional_files or {}
50+
self.registered_at = datetime.now()
51+
await self.save()

tests/models/test_code_module.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
from datetime import datetime, timezone
1+
from datetime import datetime, timedelta, timezone
22

33
import pytest
44
import pytest_asyncio
55

66
import databases
7-
from models import CodeModule
7+
from models import CodeModule, Monitor
8+
from utils.time import now
89

910
pytestmark = pytest.mark.asyncio(loop_scope="session")
1011

@@ -92,3 +93,22 @@ async def test_get_updated_code_modules_timestamp(
9293
monitors_ids = {code_module.monitor_id for code_module in code_modules}
9394

9495
assert monitors_ids == expected_result
96+
97+
98+
async def test_register(sample_monitor: Monitor):
99+
"""'CodeModule.register' should register a code module with the given code and additional
100+
files"""
101+
code_module = await CodeModule.get(CodeModule.monitor_id == sample_monitor.id)
102+
103+
assert code_module is not None
104+
105+
await code_module.register(
106+
code="def get_value(): return 20",
107+
additional_files={"file1.py": "content1", "file2.py": "content2"},
108+
)
109+
110+
await code_module.refresh()
111+
112+
assert code_module.code == "def get_value(): return 20"
113+
assert code_module.additional_files == {"file1.py": "content1", "file2.py": "content2"}
114+
assert code_module.registered_at > now() - timedelta(seconds=1)

0 commit comments

Comments
 (0)