Skip to content

Commit

Permalink
Add start of tests
Browse files Browse the repository at this point in the history
  • Loading branch information
CharlieKC committed Oct 3, 2023
1 parent de63c10 commit 5589843
Show file tree
Hide file tree
Showing 4 changed files with 180 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.vscode
static/
# Byte-compiled / optimized / DLL files
__pycache__/
Expand Down
109 changes: 109 additions & 0 deletions flashcards/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
import pytest

# from django.contrib import messages
# from django.contrib.auth.models import AnonymousUser
# from django.contrib.messages.middleware import MessageMiddleware
# from django.contrib.sessions.middleware import SessionMiddleware
# from django.http import HttpRequest, HttpResponseRedirect
from django.test import RequestFactory
from django.urls import reverse

# from my_awesome_project.users.forms import UserAdminChangeForm
# from my_awesome_project.users.models import User
# from my_awesome_project.users.tests.factories import UserFactory
from flashcards.views import list_user_conversations

# from django.conf import settings


# from django.utils.translation import gettext_lazy as _


# does this do anything?
pytestmark = pytest.mark.django_db


def test_conversations(rf: RequestFactory):
request = rf.get(reverse("chat_interface"))
response = list_user_conversations(request)

assert response.content is not None


# class TestUserUpdateView:
# """
# TODO:
# extracting view initialization code as class-scoped fixture
# would be great if only pytest-django supported non-function-scoped
# fixture db access -- this is a work-in-progress for now:
# https://github.com/pytest-dev/pytest-django/pull/258
# """

# def dummy_get_response(self, request: HttpRequest):
# return None

# def test_get_success_url(self, user: User, rf: RequestFactory):
# view = UserUpdateView()
# request = rf.get("/fake-url/")
# request.user = user

# view.request = request
# assert view.get_success_url() == f"/users/{user.username}/"

# def test_get_object(self, user: User, rf: RequestFactory):
# view = UserUpdateView()
# request = rf.get("/fake-url/")
# request.user = user

# view.request = request

# assert view.get_object() == user

# def test_form_valid(self, user: User, rf: RequestFactory):
# view = UserUpdateView()
# request = rf.get("/fake-url/")

# # Add the session/message middleware to the request
# SessionMiddleware(self.dummy_get_response).process_request(request)
# MessageMiddleware(self.dummy_get_response).process_request(request)
# request.user = user

# view.request = request

# # Initialize the form
# form = UserAdminChangeForm()
# form.cleaned_data = {}
# form.instance = user
# view.form_valid(form)

# messages_sent = [m.message for m in messages.get_messages(request)]
# assert messages_sent == [_("Information successfully updated")]


# class TestUserRedirectView:
# def test_get_redirect_url(self, user: User, rf: RequestFactory):
# view = UserRedirectView()
# request = rf.get("/fake-url")
# request.user = user

# view.request = request
# assert view.get_redirect_url() == f"/users/{user.username}/"


# class TestUserDetailView:
# def test_authenticated(self, user: User, rf: RequestFactory):
# request = rf.get("/fake-url/")
# request.user = UserFactory()
# response = user_detail_view(request, username=user.username)

# assert response.status_code == 200

# def test_not_authenticated(self, user: User, rf: RequestFactory):
# request = rf.get("/fake-url/")
# request.user = AnonymousUser()
# response = user_detail_view(request, username=user.username)
# login_url = reverse(settings.LOGIN_URL)

# assert isinstance(response, HttpResponseRedirect)
# assert response.status_code == 302
# assert response.url == f"{login_url}?next=/fake-url/"
61 changes: 60 additions & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 10 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ django-markdownify = "^0.9.3"
pygments = "^2.16.1"
django-allauth = "^0.57.0"
openai = "^0.28.1"
django-stubs = "^4.2.4"


[tool.poetry.group.dev.dependencies]
Expand Down Expand Up @@ -75,15 +76,15 @@ module = "*.migrations.*"
ignore_errors = true

[tool.django-stubs]
django_settings_module = "config.settings.test"
django_settings_module = "flashcards.settings"


# ==== PyLint ====
[tool.pylint.MASTER]
load-plugins = [
"pylint_django",
]
django-settings-module = "config.settings.local"
django-settings-module = "flashcards.settings"

[tool.pylint.FORMAT]
max-line-length = 119
Expand Down Expand Up @@ -126,3 +127,10 @@ indent_size = 2

[tool.djlint.js]
indent_size = 2

[tool.pytest.ini_options]
addopts = "--ds=flashcards.settings"
python_files = [
"tests.py",
"test_*.py",
]

0 comments on commit 5589843

Please sign in to comment.