Django1.7 tests: load initial_data w/ migration

This commit is contained in:
Simon Thépot 2015-01-14 15:36:37 +01:00
parent afb0bd25b3
commit f68c1b3ae9
2 changed files with 51 additions and 3 deletions

View File

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
from sys import path
from django.db import models, migrations
from django.core import serializers
fixture_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../fixtures'))
fixture_filename = 'initial_data.json'
def deserialize_fixture():
fixture_file = os.path.join(fixture_dir, fixture_filename)
with open(fixture_file, 'rb') as fixture:
return list(serializers.deserialize('json', fixture, ignorenonexistent=True))
def load_fixture(apps, schema_editor):
objects = deserialize_fixture()
for obj in objects:
obj.save()
def unload_fixture(apps, schema_editor):
"Delete all EmailTemplate objects"
objects = deserialize_fixture()
EmailTemplate = apps.get_model("helpdesk", "emailtemplate")
EmailTemplate.objects.filter(pk__in=[ obj.object.pk for obj in objects ]).delete()
class Migration(migrations.Migration):
dependencies = [
('helpdesk', '0003_populate_usersettings'),
]
operations = [
migrations.RunPython(load_fixture, reverse_code=unload_fixture),
]

View File

@ -28,6 +28,7 @@ class QuickDjangoTest(object):
'django.contrib.humanize', 'django.contrib.humanize',
'bootstrapform', 'bootstrapform',
) )
MIDDLEWARE_CLASSES = []
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.apps = args self.apps = args
@ -43,8 +44,7 @@ class QuickDjangoTest(object):
""" """
Figure out which version of Django's test suite we have to play with. Figure out which version of Django's test suite we have to play with.
""" """
from django import VERSION if django.VERSION > (1, 2):
if VERSION[0] == 1 and VERSION[1] >= 2:
return 'new' return 'new'
else: else:
return 'old' return 'old'
@ -67,6 +67,7 @@ class QuickDjangoTest(object):
""" """
Fire up the Django test suite developed for version 1.2 Fire up the Django test suite developed for version 1.2
""" """
settings.configure( settings.configure(
DEBUG = True, DEBUG = True,
DATABASES = { DATABASES = {
@ -80,8 +81,11 @@ class QuickDjangoTest(object):
} }
}, },
INSTALLED_APPS = self.INSTALLED_APPS + self.apps, INSTALLED_APPS = self.INSTALLED_APPS + self.apps,
MIDDLEWARE_CLASSES = self.MIDDLEWARE_CLASSES,
ROOT_URLCONF = self.apps[0] + '.urls', ROOT_URLCONF = self.apps[0] + '.urls',
) )
if django.VERSION > (1, 7):
django.setup() django.setup()
from django.test.simple import DjangoTestSuiteRunner from django.test.simple import DjangoTestSuiteRunner