Skip to content

Commit

Permalink
Improve coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
fjsj committed Oct 4, 2024
1 parent 8f128e0 commit c350737
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,10 @@ omit =
*/migrations/*
*static*
*/templates/*
management/commands/generate_openapi_schema.py
apps.py
admin.py
exclude_lines =
pragma: no cover
if TYPE_CHECKING:
raise NotImplementedError
63 changes: 63 additions & 0 deletions tests/test_conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
from django.core.exceptions import ImproperlyConfigured
from django.test import override_settings

import pytest

from django_ai_assistant.conf import DEFAULTS, PREFIX, Settings


@pytest.fixture
def settings():
return Settings()


def test_getattr_existing_setting(settings):
assert settings.INIT_API_FN == DEFAULTS["INIT_API_FN"]


def test_getattr_non_existing_setting(settings):
with pytest.raises(AttributeError):
settings.NON_EXISTING_SETTING # noqa: B018


def test_get_setting_default(settings):
assert settings.get_setting("INIT_API_FN") == DEFAULTS["INIT_API_FN"]


@override_settings(AI_ASSISTANT_INIT_API_FN="custom.module.init_api")
def test_get_setting_override(settings):
assert settings.get_setting("INIT_API_FN") == "custom.module.init_api"


def test_change_setting_enter(settings):
settings.change_setting(f"{PREFIX}INIT_API_FN", "new.value", enter=True)
assert settings.INIT_API_FN == "new.value"


def test_change_setting_exit(settings):
settings.change_setting(f"{PREFIX}INIT_API_FN", "new.value", enter=True)
assert settings.INIT_API_FN == "new.value"
settings.change_setting(f"{PREFIX}INIT_API_FN", None, enter=False)
assert settings.INIT_API_FN == DEFAULTS["INIT_API_FN"]


def test_change_setting_invalid_prefix(settings):
settings.change_setting("INVALID_PREFIX_SETTING", "value", enter=True)
assert not hasattr(settings, "SETTING")


def test_change_setting_invalid_setting(settings):
settings.change_setting(f"{PREFIX}INVALID_SETTING", "value", enter=True)
assert not hasattr(settings, "INVALID_SETTING")


def test_call_fn(settings):
result = settings.call_fn("INIT_API_FN")
assert result


@override_settings(AI_ASSISTANT_INIT_API_FN="django.core.exceptions.ImproperlyConfigured")
def test_call_fn_override(settings):
result = settings.call_fn("INIT_API_FN")

assert isinstance(result, ImproperlyConfigured)
10 changes: 10 additions & 0 deletions tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,16 @@ def test_gets_specific_thread(authenticated_client):
assert response.json()["id"] == thread.id


@pytest.mark.django_db(transaction=True)
def test_gets_specific_thread_that_does_not_exist(authenticated_client):
response = authenticated_client.get(
reverse("django_ai_assistant:thread_detail_update_delete", kwargs={"thread_id": 1000000})
)

assert response.status_code == HTTPStatus.NOT_FOUND
assert response.json() == {"detail": "Not Found"}


def test_does_not_list_threads_if_unauthorized():
# TODO: Implement this test once permissions are in place
pass
Expand Down

0 comments on commit c350737

Please sign in to comment.