Add first factories and first dashboard tests (#172)

* Add factories and first dashboard tests

* Code cleanup

Co-authored-by: R. Miles McCain <github@sendmiles.email>
This commit is contained in:
Sérgio 2021-11-14 07:09:55 +02:00 committed by GitHub
parent 62fbb014e7
commit 780b71083a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 82 additions and 1 deletions

37
shynet/core/factories.py Normal file
View File

@ -0,0 +1,37 @@
from django.contrib.auth import get_user_model
import factory
from factory.django import DjangoModelFactory
from .models import Service
class UserFactory(DjangoModelFactory):
username = factory.Faker("user_name")
email = factory.Faker("email")
name = factory.Faker("name")
@post_generation
def password(self, create, extracted, **kwargs):
password = (
extracted
if extracted
else factory.Faker(
"password",
length=42,
special_chars=True,
digits=True,
upper_case=True,
lower_case=True,
).evaluate(None, None, extra={"locale": None})
)
self.set_password(password)
class Meta:
model = get_user_model()
django_get_or_create = ["username"]
class ServiceFactory(DjangoModelFactory):
class Meta:
model = Service
name = factory.Faker("company")

View File

@ -0,0 +1 @@

View File

View File

@ -0,0 +1,43 @@
from django.test import TestCase, RequestFactory
from django.conf import settings
from django.urls import reverse
from core.factories import UserFactory
from dashboard.views import DashboardView
class QuestionModelTests(TestCase):
def setUp(self):
# Every test needs access to the request factory.
self.factory = RequestFactory()
self.user = UserFactory()
def tearDown(self):
pass
def tests_unauthenticated_dashboard_view(self):
"""
GIVEN: Unauthenticated user
WHEN: Accessing the dashboard view
THEN: It's redirected to login page with NEXT url to dashboard
"""
login_url = settings.LOGIN_URL
response = self.client.get(reverse("dashboard:dashboard"))
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, f"{login_url}?next={reverse('dashboard:dashboard')}"
)
def tests_authenticated_dashboard_view(self):
"""
GIVEN: Authenticated user
WHEN: Accessing the dashboard view
THEN: It should respond with 200 and render the view
"""
request = self.factory.get(reverse("dashboard:dashboard"))
request.user = self.user
# Use this syntax for class-based views.
response = DashboardView.as_view()(request)
self.assertEqual(response.status_code, 200)

View File

@ -299,7 +299,7 @@ else:
EMAIL_USE_TLS = os.environ.get("EMAIL_USE_TLS")
# Auto fields
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
# NPM