From f13f3dc2bf16f8fe40d6bb10b89846ce8c8bb503 Mon Sep 17 00:00:00 2001 From: Pilhwan Kim Date: Tue, 28 Apr 2020 12:41:51 +0900 Subject: [PATCH 1/7] add use drf tests --- hooks/post_gen_project.py | 2 ++ .../users/tests/test_drf_urls.py | 24 +++++++++++++++ .../users/tests/test_drf_views.py | 30 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_urls.py create mode 100644 {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py index ad1db3ee..21d680e0 100644 --- a/hooks/post_gen_project.py +++ b/hooks/post_gen_project.py @@ -299,6 +299,8 @@ def remove_aws_dockerfile(): def remove_drf_starter_files(): os.remove(os.path.join("config", "api_router.py")) shutil.rmtree(os.path.join("{{cookiecutter.project_slug}}", "users", "api")) + os.remove(os.path.join("{{cookiecutter.project_slug}}", "users", "tests", "test_drf_urls.py")) + os.remove(os.path.join("{{cookiecutter.project_slug}}", "users", "tests", "test_drf_views.py")) def remove_storages_module(): diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_urls.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_urls.py new file mode 100644 index 00000000..83b623f4 --- /dev/null +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_urls.py @@ -0,0 +1,24 @@ +import pytest +from django.urls import resolve, reverse + +from {{ cookiecutter.project_slug }}.users.models import User + +pytestmark = pytest.mark.django_db + + +def test_user_detail(user: User): + assert ( + reverse("api:user-detail", kwargs={"username": user.username}) + == f"/api/users/{user.username}/" + ) + assert resolve(f"/api/users/{user.username}/").view_name == "api:user-detail" + + +def test_user_list(): + assert reverse("api:user-list") == "/api/users/" + assert resolve("/api/users/").view_name == "api:user-list" + + +def test_user_me(): + assert reverse("api:user-me") == "/api/users/me/" + assert resolve("/api/users/me/").view_name == "api:user-me" diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py new file mode 100644 index 00000000..89c3c1a9 --- /dev/null +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py @@ -0,0 +1,30 @@ +import pytest +from django.test import RequestFactory + +from {{ cookiecutter.project_slug }}.users.models import User +from {{ cookiecutter.project_slug }}.users.api.views import UserViewSet +from {{ cookiecutter.project_slug }}.users.api.serializers import UserSerializer + +pytestmark = pytest.mark.django_db + + +class TestUserViewSet: + def test_get_queryset(self, user: User, rf: RequestFactory): + view = UserViewSet() + request = rf.get("/fake-url/") + request.user = user + + view.request = request + + assert user in view.get_queryset() + + def test_me(self, user: User, rf: RequestFactory): + view = UserViewSet() + request = rf.get("/fake-url/") + request.user = user + + view.request = request + + response = view.me(request) + + assert response.data == UserSerializer(user, context={"request": request}).data From 672be773a376ce27a35b81573388e12c460af11a Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 28 Apr 2020 23:18:52 +0100 Subject: [PATCH 2/7] Fix formatting --- hooks/post_gen_project.py | 12 ++++++++++-- .../users/tests/test_drf_views.py | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hooks/post_gen_project.py b/hooks/post_gen_project.py index 21d680e0..13d0ff00 100644 --- a/hooks/post_gen_project.py +++ b/hooks/post_gen_project.py @@ -299,8 +299,16 @@ def remove_aws_dockerfile(): def remove_drf_starter_files(): os.remove(os.path.join("config", "api_router.py")) shutil.rmtree(os.path.join("{{cookiecutter.project_slug}}", "users", "api")) - os.remove(os.path.join("{{cookiecutter.project_slug}}", "users", "tests", "test_drf_urls.py")) - os.remove(os.path.join("{{cookiecutter.project_slug}}", "users", "tests", "test_drf_views.py")) + os.remove( + os.path.join( + "{{cookiecutter.project_slug}}", "users", "tests", "test_drf_urls.py" + ) + ) + os.remove( + os.path.join( + "{{cookiecutter.project_slug}}", "users", "tests", "test_drf_views.py" + ) + ) def remove_storages_module(): diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py index 89c3c1a9..28f7526b 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py @@ -1,9 +1,9 @@ import pytest from django.test import RequestFactory -from {{ cookiecutter.project_slug }}.users.models import User -from {{ cookiecutter.project_slug }}.users.api.views import UserViewSet from {{ cookiecutter.project_slug }}.users.api.serializers import UserSerializer +from {{ cookiecutter.project_slug }}.users.api.views import UserViewSet +from {{ cookiecutter.project_slug }}.users.models import User pytestmark = pytest.mark.django_db From 5a9648fa90c10afb4a2a26b24bf82c0521ef680e Mon Sep 17 00:00:00 2001 From: Leon Kim Date: Wed, 29 Apr 2020 08:41:33 +0900 Subject: [PATCH 3/7] Update {{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py OK. I agree with your idea. Even to me, this code is more explicit to check result. Co-Authored-By: Bruno Alla --- .../users/tests/test_drf_views.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py index 28f7526b..9861af32 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py @@ -27,4 +27,9 @@ class TestUserViewSet: response = view.me(request) - assert response.data == UserSerializer(user, context={"request": request}).data + assert response.data == { + "username": user.username, + "email": user.email, + "name": user.name, + "url": f"/api/users/{user.username}/", + } From 29fea6efa375a7181ae3be3491e4b1db7a1d1219 Mon Sep 17 00:00:00 2001 From: Pilhwan Kim Date: Wed, 29 Apr 2020 08:54:32 +0900 Subject: [PATCH 4/7] remove import UserSerializer in tesf_drf_views.py --- .../users/tests/test_drf_views.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py index 9861af32..48147f87 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py @@ -1,7 +1,6 @@ import pytest from django.test import RequestFactory -from {{ cookiecutter.project_slug }}.users.api.serializers import UserSerializer from {{ cookiecutter.project_slug }}.users.api.views import UserViewSet from {{ cookiecutter.project_slug }}.users.models import User @@ -28,8 +27,8 @@ class TestUserViewSet: response = view.me(request) assert response.data == { - "username": user.username, - "email": user.email, - "name": user.name, + "username": user.username, + "email": user.email, + "name": user.name, "url": f"/api/users/{user.username}/", } From e46c9969ddabad3b6a4b184ecf4de7848849308a Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Wed, 29 Apr 2020 09:13:18 +0100 Subject: [PATCH 5/7] Run DRF tests on Travis --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b250148e..9abf37a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,8 +19,8 @@ matrix: script: tox -e black-template - name: Basic Docker script: sh tests/test_docker.sh - - name: Docker with Celery - script: sh tests/test_docker.sh use_celery=y + - name: Extended Docker + script: sh tests/test_docker.sh use_celery=y use_drf=y - name: Bare metal script: sh tests/test_bare.sh use_celery=y use_compressor=y services: From d1c9791e9581baed2e918c140b177eb9991038d9 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Wed, 29 Apr 2020 09:17:19 +0100 Subject: [PATCH 6/7] Update CONTRIBUTORS.rst --- CONTRIBUTORS.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTORS.rst b/CONTRIBUTORS.rst index 39e05c3f..81958bfd 100644 --- a/CONTRIBUTORS.rst +++ b/CONTRIBUTORS.rst @@ -161,6 +161,7 @@ Listed in alphabetical order. Krzysztof Żuraw `@krzysztofzuraw`_ Leo won `@leollon`_ Leo Zhou `@glasslion`_ + Leon Kim `@PilhwanKim`_ Leonardo Jimenez `@xpostudio4`_ Lin Xianyi `@iynaix`_ Luis Nell `@originell`_ @@ -365,6 +366,7 @@ Listed in alphabetical order. .. _@rjsnh1522: https://github.com/rjsnh1522 .. _@pchiquet: https://github.com/pchiquet .. _@phiberjenz: https://github.com/phiberjenz +.. _@PilhwanKim: https://github.com/PilhwanKim .. _@purplediane: https://github.com/purplediane .. _@raonyguimaraes: https://github.com/raonyguimaraes .. _@reggieriser: https://github.com/reggieriser From 01b84128057463999625631bd5d6874755db0f50 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Wed, 29 Apr 2020 09:23:27 +0100 Subject: [PATCH 7/7] Fix expected value --- .../{{cookiecutter.project_slug}}/users/tests/test_drf_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py index 48147f87..60944ad3 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/tests/test_drf_views.py @@ -30,5 +30,5 @@ class TestUserViewSet: "username": user.username, "email": user.email, "name": user.name, - "url": f"/api/users/{user.username}/", + "url": f"http://testserver/api/users/{user.username}/", }