Skip to content
Snippets Groups Projects
Commit a4aa76dd authored by Piotr Gawron's avatar Piotr Gawron
Browse files

users and workers are created lazily on demand to improve performance

parent eb249e48
No related branches found
No related tags found
1 merge request!357Speed up tests
......@@ -22,21 +22,13 @@ logger = logging.getLogger(__name__)
class LoggedInTestCase(TestCase):
_super_worker: Worker = None
_admin_worker: Worker = None
_staff_worker: Worker = None
def setUp(self):
self.password = 'passwd1234'
# superuser
self.super_worker = create_worker(
user=get_user_model().objects.create_superuser(username='super', password=self.password,
email='a@mail.com'))
# admin
self.admin_worker = Worker.get_by_user(create_user(username='admin', password=self.password))
add_permissions_to_worker(self.admin_worker, PermissionDecorator.codenames)
# staff
self.staff_worker = Worker.get_by_user(create_user(username='staff', password=self.password))
username = 'piotr'
password = 'top_secret'
self.user = get_user_model().objects.create_user(username=username, email='jacob@bla', password=password)
......@@ -45,14 +37,35 @@ class LoggedInTestCase(TestCase):
self.client = Client()
self.client.login(username=username, password=password)
@property
def super_worker(self) -> Worker:
if self._super_worker is None:
self._super_worker = create_worker(
user=get_user_model().objects.create_superuser(username='super', password=self.password,
email='a@mail.com'))
return self._super_worker
@property
def admin_worker(self) -> Worker:
if self._admin_worker is None:
self._admin_worker = Worker.get_by_user(create_user(username='admin', password=self.password))
add_permissions_to_worker(self._admin_worker, PermissionDecorator.codenames)
return self._admin_worker
@property
def staff_worker(self) -> Worker:
if self._staff_worker is None:
self._staff_worker = Worker.get_by_user(create_user(username='staff', password=self.password))
return self._staff_worker
def login_as_staff(self):
self.client.logout()
self.client.login(username='staff', password=self.password)
self.client.login(username=self.staff_worker.user.username, password=self.password)
def login_as_admin(self):
self.client.logout()
self.client.login(username='admin', password=self.password)
self.client.login(username=self.admin_worker.user.username, password=self.password)
def login_as_super(self):
self.client.logout()
self.client.login(username='super', password=self.password)
self.client.login(username=self.super_worker.user.username, password=self.password)
import logging
from django.urls import reverse
from django.contrib.auth import get_user_model
from django.urls import reverse
from web.forms import WorkerForm
from web.models import Worker
......@@ -72,11 +72,11 @@ class WorkerViewTests(LoggedInTestCase):
self.assertEqual(response.status_code, 200)
def test_render_worker_added_request(self):
self.assertEqual(4, Worker.objects.all().count())
self.assertEqual(4, get_user_model().objects.all().count())
self.login_as_admin()
worker_count = Worker.objects.all().count()
user_count = get_user_model().objects.all().count()
language = create_language()
location = create_location()
......@@ -87,8 +87,8 @@ class WorkerViewTests(LoggedInTestCase):
self.assertEqual(response.status_code, 302)
self.assertEqual(5, Worker.objects.all().count())
self.assertEqual(5, get_user_model().objects.all().count())
self.assertEqual(worker_count + 1, Worker.objects.all().count())
self.assertEqual(user_count + 1, get_user_model().objects.all().count())
def create_add_worker_form_data(self, language, location):
form_data = self.get_form_data(Worker())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment