Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions mpt_api_client/resources/audit/audit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from mpt_api_client.http import AsyncHTTPClient, HTTPClient
from mpt_api_client.resources.audit.records import AsyncRecordsService, RecordsService


class Audit:
"""Audit MPT API Module."""

def __init__(self, *, http_client: HTTPClient):
self.http_client = http_client

@property
def records(self) -> RecordsService:
"""Records service."""
return RecordsService(http_client=self.http_client)


class AsyncAudit:
"""Async Audit MPT API Module."""

def __init__(self, *, http_client: AsyncHTTPClient):
self.http_client = http_client

@property
def records(self) -> AsyncRecordsService:
"""Records service."""
return AsyncRecordsService(http_client=self.http_client)
26 changes: 26 additions & 0 deletions mpt_api_client/resources/audit/records.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from mpt_api_client.http import AsyncService, Service
from mpt_api_client.http.mixins import (
AsyncCreateMixin,
CreateMixin,
)
from mpt_api_client.models import Model


class Record(Model):
"""Record resource."""


class RecordsServiceConfig:
"""Records service configuration."""

_endpoint = "/public/v1/audit/records"
_model_class = Record
_collection_key = "data"


class RecordsService(CreateMixin[Record], Service[Record], RecordsServiceConfig):
"""Records service."""


class AsyncRecordsService(AsyncCreateMixin[Record], AsyncService[Record], RecordsServiceConfig):
"""Async records service."""
1 change: 1 addition & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ extend-ignore =


per-file-ignores =
mpt_api_client/resources/audit/*.py: WPS215
mpt_api_client/resources/billing/*.py: WPS215 WPS202 WPS214 WPS204
mpt_api_client/resources/catalog/*.py: WPS110 WPS215 WPS214
mpt_api_client/resources/commerce/*.py: WPS215
Expand Down
56 changes: 56 additions & 0 deletions tests/resources/audit/test_audit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import pytest

from mpt_api_client.resources.audit.audit import AsyncAudit, Audit
from mpt_api_client.resources.audit.records import AsyncRecordsService, RecordsService


@pytest.fixture
def audit(http_client):
return Audit(http_client=http_client)


@pytest.fixture
def async_audit(async_http_client):
return AsyncAudit(http_client=async_http_client)


@pytest.mark.parametrize(
("property_name", "expected_service_class"),
[
("records", RecordsService),
],
)
def test_audit_properties(audit, property_name, expected_service_class):
"""Test that Audit properties return correct instances."""
service = getattr(audit, property_name)

assert isinstance(service, expected_service_class)
assert service.http_client is audit.http_client


@pytest.mark.parametrize(
("property_name", "expected_service_class"),
[
("records", AsyncRecordsService),
],
)
def test_async_audit_properties(async_audit, property_name, expected_service_class):
"""Test that AsyncAudit properties return correct instances."""
service = getattr(async_audit, property_name)

assert isinstance(service, expected_service_class)
assert service.http_client is async_audit.http_client


def test_audit_initialization(http_client):
audit = Audit(http_client=http_client)

assert audit.http_client is http_client
assert isinstance(audit, Audit)


def test_async_audit_initialization(async_http_client):
async_audit = AsyncAudit(http_client=async_http_client)

assert async_audit.http_client is async_http_client
assert isinstance(async_audit, AsyncAudit)
23 changes: 23 additions & 0 deletions tests/resources/audit/test_records.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import pytest

from mpt_api_client.resources.audit.records import AsyncRecordsService, RecordsService


@pytest.fixture
def records_service(http_client):
return RecordsService(http_client=http_client)


@pytest.fixture
def async_records_service(async_http_client):
return AsyncRecordsService(http_client=async_http_client)


@pytest.mark.parametrize("method", ["get", "create"])
def test_mixins_present(records_service, method):
assert hasattr(records_service, method)


@pytest.mark.parametrize("method", ["get", "create"])
def test_async_mixins_present(async_records_service, method):
assert hasattr(async_records_service, method)