Refactored test_{urls,views,models} to use django's built-in get_user_model() method to get the custom user model instead of importing it from a specific django app. Makes the code less prone to breaking. Updated the code for test_user_count method to handle the case of existing users in the database since the local development db can be used to run tests.

This commit is contained in:
Arnav Choudhury 2021-01-30 16:24:39 +05:30
parent 518f179b13
commit 21a0257393
4 changed files with 18 additions and 9 deletions

View File

@ -1,8 +1,8 @@
import pytest
from {{ cookiecutter.project_slug }}.users.models import User
from django.contrib.auth import get_user_model
pytestmark = pytest.mark.django_db
User = get_user_model()
def test_user_get_absolute_url(user: User):

View File

@ -9,8 +9,16 @@ pytestmark = pytest.mark.django_db
def test_user_count(settings):
"""A basic test to execute the get_users_count Celery task."""
UserFactory.create_batch(3)
settings.CELERY_TASK_ALWAYS_EAGER = True
task_result = get_users_count.delay()
assert isinstance(task_result, EagerResult)
assert task_result.result == 3
# Get all existing users in the DB
current_users = get_users_count.delay()
assert isinstance(current_users, EagerResult)
# Create and add 3 more users to the DB.
UserFactory.create_batch(3)
# Get number of newly added users in the DB
task_result = get_users_count.delay().result - current_users.result
assert task_result == 3

View File

@ -1,9 +1,9 @@
import pytest
from django.contrib.auth import get_user_model
from django.urls import resolve, reverse
from {{ cookiecutter.project_slug }}.users.models import User
pytestmark = pytest.mark.django_db
User = get_user_model()
def test_detail(user: User):

View File

@ -1,5 +1,6 @@
import pytest
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.models import AnonymousUser
from django.contrib.messages.middleware import MessageMiddleware
from django.contrib.sessions.middleware import SessionMiddleware
@ -7,7 +8,6 @@ from django.http.response import Http404
from django.test import RequestFactory
from {{ cookiecutter.project_slug }}.users.forms import UserChangeForm
from {{ cookiecutter.project_slug }}.users.models import User
from {{ cookiecutter.project_slug }}.users.tests.factories import UserFactory
from {{ cookiecutter.project_slug }}.users.views import (
UserRedirectView,
@ -16,6 +16,7 @@ from {{ cookiecutter.project_slug }}.users.views import (
)
pytestmark = pytest.mark.django_db
User = get_user_model()
class TestUserUpdateView: