Skip to content

Commit 2fc42c2

Browse files
committed
change base notification to protocol
1 parent 0090525 commit 2fc42c2

File tree

6 files changed

+22
-16
lines changed

6 files changed

+22
-16
lines changed
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
from dataclasses import dataclass
21
from functools import partial
3-
from typing import Coroutine
2+
from typing import Coroutine, Protocol, runtime_checkable
43

5-
from dataclass_type_validator import dataclass_validate
64

7-
8-
@dataclass_validate(strict=True)
9-
@dataclass
10-
class BaseNotification:
5+
@runtime_checkable
6+
class BaseNotification(Protocol):
117
min_priority_to_send: int = 5
128

13-
def reactions_list(self) -> list[tuple[str, list[Coroutine | partial[Coroutine]]]]:
14-
return [] # pragma: no cover
9+
def reactions_list(self) -> list[tuple[str, list[Coroutine | partial[Coroutine]]]]: ...

src/plugins/slack/notifications/slack_notification.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
from configs import configs
1212
from models import Alert, AlertPriority, AlertStatus, Issue, IssueStatus, Monitor, Notification
13-
from notifications.base_notification import BaseNotification
1413

1514
from .. import slack
1615

@@ -33,7 +32,7 @@
3332

3433
@dataclass_validate(strict=True)
3534
@dataclass(kw_only=True)
36-
class SlackNotification(BaseNotification):
35+
class SlackNotification:
3736
"""
3837
The **SlackNotification** class manages sending notifications for alerts to a specified Slack
3938
channel.

tests/components/monitors_loader/test_monitors_loader.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import utils.time as time_utils
1212
from configs import configs
1313
from models import CodeModule, Monitor
14-
from notifications import BaseNotification
1514
from options import ReactionOptions
1615
from registry import registry
1716
from tests.test_utils import assert_message_in_log
@@ -454,7 +453,9 @@ async def test_configure_monitor_notifications_setup(monkeypatch, sample_monitor
454453

455454
async def do_nothing(): ...
456455

457-
class MockNotification(BaseNotification):
456+
class MockNotification:
457+
min_priority_to_send = 5
458+
458459
def reactions_list(self):
459460
return [
460461
("alert_updated", [do_nothing]),

tests/module_loader/test_checker.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
from types import ModuleType
2-
from typing import TypedDict
2+
from typing import Coroutine, TypedDict
33
from unittest.mock import MagicMock
44

55
import pytest
66

77
import module_loader.checker as checker
8-
from notifications import BaseNotification
98
from options import (
109
AlertOptions,
1110
CountRule,
@@ -256,6 +255,13 @@ def test_check_reaction_options_wrong_type(monitor_mock):
256255

257256
# Test _check_notification_options
258257

258+
class BaseNotification:
259+
"""Notification class to be used in the tests"""
260+
min_priority_to_send: int = 5
261+
262+
def reactions_list(self) -> list[tuple[str, list[Coroutine]]]:
263+
return []
264+
259265

260266
def test_check_notification_options_defined(monitor_mock):
261267
"""'_check_notification_options' should return no erros if the 'notification_options' field is
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from notifications.base_notification import BaseNotification
2+
3+
4+
def test_base_notification():
5+
assert BaseNotification.min_priority_to_send == 5

tests/plugins/slack/actions/test_actions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import pytest
44

5-
import registry as registry
65
import plugins.slack.actions.actions as actions
76
import plugins.slack.notifications.slack_notification as slack_notification
7+
import registry as registry
88
from models import Alert, Monitor, Notification, NotificationStatus
99
from tests.test_utils import assert_message_in_log
1010

0 commit comments

Comments
 (0)