From 56d24db101a90f6d8ba878a76dfddff87e6abc66 Mon Sep 17 00:00:00 2001 From: Albert Sola Date: Mon, 6 Oct 2025 11:56:12 +0100 Subject: [PATCH] MPT-14077 Add notifications subscribers --- .../resources/notifications/subscribers.py | 42 +++++++++++++++++++ .../notifications/test_subscribers.py | 26 ++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 mpt_api_client/resources/notifications/subscribers.py create mode 100644 tests/resources/notifications/test_subscribers.py diff --git a/mpt_api_client/resources/notifications/subscribers.py b/mpt_api_client/resources/notifications/subscribers.py new file mode 100644 index 00000000..c6b7df29 --- /dev/null +++ b/mpt_api_client/resources/notifications/subscribers.py @@ -0,0 +1,42 @@ +from mpt_api_client.http import AsyncService, Service +from mpt_api_client.http.mixins import ( + AsyncCreateMixin, + AsyncDeleteMixin, + AsyncUpdateMixin, + CreateMixin, + DeleteMixin, + UpdateMixin, +) +from mpt_api_client.models import Model + + +class Subscriber(Model): + """Subscriber resource.""" + + +class SubscribersServiceConfig: + """Subscribers service config.""" + + _endpoint = "/public/v1/notifications/subscribers" + _model_class = Subscriber + _collection_key = "data" + + +class SubscribersService( # noqa: WPS215 + CreateMixin[Subscriber], + UpdateMixin[Subscriber], + DeleteMixin, + Service[Subscriber], + SubscribersServiceConfig, +): + """Subscribers service.""" + + +class AsyncSubscribersService( # noqa: WPS215 + AsyncCreateMixin[Subscriber], + AsyncUpdateMixin[Subscriber], + AsyncDeleteMixin, + AsyncService[Subscriber], + SubscribersServiceConfig, +): + """Async Subscribers service.""" diff --git a/tests/resources/notifications/test_subscribers.py b/tests/resources/notifications/test_subscribers.py new file mode 100644 index 00000000..faaec941 --- /dev/null +++ b/tests/resources/notifications/test_subscribers.py @@ -0,0 +1,26 @@ +import pytest + +from mpt_api_client.resources.notifications.subscribers import ( + AsyncSubscribersService, + SubscribersService, +) + + +@pytest.fixture +def subscribers_service(http_client): + return SubscribersService(http_client=http_client) + + +@pytest.fixture +def async_subscribers_service(async_http_client): + return AsyncSubscribersService(http_client=async_http_client) + + +@pytest.mark.parametrize("method", ["create", "update", "delete", "get", "iterate"]) +def test_mixins_present(subscribers_service, method): + assert hasattr(subscribers_service, method) + + +@pytest.mark.parametrize("method", ["create", "update", "delete", "get", "iterate"]) +def test_async_mixins_present(async_subscribers_service, method): + assert hasattr(async_subscribers_service, method)