OpenDroneMap-WebODM/app/tests/classes.py

88 wiersze
2.5 KiB
Python
Czysty Zwykły widok Historia

2017-11-09 20:45:29 +00:00
import os
2017-02-01 23:11:39 +00:00
from django import db
2016-11-01 19:11:36 +00:00
from django.contrib.auth.models import User
2016-10-12 14:44:14 +00:00
from django.test import TestCase
2017-02-01 23:11:39 +00:00
from django.test import TransactionTestCase
2017-11-09 20:45:29 +00:00
from shutil import rmtree
2016-11-01 19:11:36 +00:00
2016-10-12 14:44:14 +00:00
from app.boot import boot
2016-11-01 19:11:36 +00:00
from app.models import Project
2017-11-09 20:45:29 +00:00
from webodm import settings
2016-11-01 19:11:36 +00:00
2016-10-12 14:44:14 +00:00
2017-02-01 23:11:39 +00:00
def setupUsers():
User.objects.create_superuser(username='testsuperuser',
email='superuser@test.com',
password='test1234')
User.objects.create_user(username='testuser',
email='user@test.com',
password='test1234')
User.objects.create_user(username='testuser2',
email='user2@test.com',
password='test1234')
def setupProjects():
Project.objects.create(
owner=User.objects.get(username="testsuperuser"),
name="Super User Test Project",
description="This is a test project"
)
Project.objects.create(
owner=User.objects.get(username="testuser"),
name="User Test Project",
description="This is a test project"
)
Project.objects.create(
owner=User.objects.get(username="testuser2"),
name="User 2 Test Project",
description="This is a test project"
)
2017-11-09 20:45:29 +00:00
def cleanup():
if settings.TESTING and \
os.path.exists(settings.MEDIA_ROOT) and \
"_test" in settings.MEDIA_ROOT[-6:]:
rmtree(settings.MEDIA_ROOT)
print("Cleaned " + settings.MEDIA_ROOT)
2016-10-12 14:44:14 +00:00
class BootTestCase(TestCase):
'''
This class provides optional default mock data as well as
proper boot initialization code. All tests for the app
module should derive from this class instead of TestCase.
We don't use fixtures because we have signal initialization login
for some models, which doesn't play well with them.
2016-10-12 14:44:14 +00:00
'''
@classmethod
2017-02-01 23:11:39 +00:00
def setUpTestData(cls):
super(BootTestCase, cls).setUpTestData()
2017-11-09 20:45:29 +00:00
cleanup()
2016-10-12 14:44:14 +00:00
boot()
setupUsers()
setupProjects()
@classmethod
def tearDownClass(cls):
super(BootTestCase, cls).tearDownClass()
2017-02-01 23:11:39 +00:00
2017-02-01 23:11:39 +00:00
class BootTransactionTestCase(TransactionTestCase):
'''
Same as above, but inherits from TransactionTestCase
'''
def setUp(self):
super().setUp()
2017-11-09 20:45:29 +00:00
cleanup()
2017-02-01 23:11:39 +00:00
boot()
setupUsers()
setupProjects()
@classmethod
def tearDownClass(cls):
super(BootTransactionTestCase, cls).tearDownClass()