summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-08-29 16:03:58 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-01 10:32:52 +0200
commitf61a128adca4cc9f8df3557d149137145a0d5885 (patch)
tree0be2daf2e502da9d3f520240725c27629349f836
parent857c17ea1f3f41dd17b0133f49e05c15229f97fb (diff)
downloadIshtar-f61a128adca4cc9f8df3557d149137145a0d5885.tar.bz2
Ishtar-f61a128adca4cc9f8df3557d149137145a0d5885.zip
Refactor tests - first work on serialization restore test
-rw-r--r--archaeological_context_records/tests.py21
-rw-r--r--archaeological_files/tests.py4
-rw-r--r--archaeological_finds/tests.py23
-rw-r--r--archaeological_operations/tests.py16
-rw-r--r--archaeological_warehouse/tests.py3
-rw-r--r--ishtar_common/serializers.py4
-rw-r--r--ishtar_common/tests.py83
7 files changed, 87 insertions, 67 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 8fee56c0e..354e41d55 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -40,28 +40,11 @@ from archaeological_context_records import models
from ishtar_common.utils import generate_relation_graph
from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
- create_superuser, create_user, TestCase, AutocompleteTestBase, AcItem
+ create_superuser, create_user, TestCase, AutocompleteTestBase, AcItem, \
+ CONTEXT_RECORD_FIXTURES, CONTEXT_RECORD_TOWNS_FIXTURES
from archaeological_context_records import views
-CONTEXT_RECORD_FIXTURES = FILE_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_context_records/fixtures/initial_data-fr.json',
- '../archaeological_context_records/fixtures/'
- 'initial_data_relation_type_norel-fr.json',
- '../archaeological_context_records/fixtures/'
- 'initial_data_relation_type-fr.json',
-]
-
-CONTEXT_RECORD_TOWNS_FIXTURES = FILE_TOWNS_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_context_records/fixtures/initial_data-fr.json',
- '../archaeological_context_records/fixtures/'
- 'initial_data_relation_type_norel-fr.json',
- '../archaeological_context_records/fixtures/'
- 'initial_data_relation_type-fr.json',
-]
-
class ImportContextRecordTest(ImportTest, TestCase):
fixtures = CONTEXT_RECORD_TOWNS_FIXTURES
diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py
index 0b72d505a..117cd369d 100644
--- a/archaeological_files/tests.py
+++ b/archaeological_files/tests.py
@@ -32,8 +32,8 @@ from ishtar_common.models import Town, IshtarSiteProfile
from archaeological_files import models
from archaeological_operations.models import Parcel, ParcelOwner, ActType, \
AdministrativeAct
-from archaeological_operations.tests import OperationInitTest, FileInit, \
- FILE_TOWNS_FIXTURES
+from ishtar_common.tests import FILE_TOWNS_FIXTURES
+from archaeological_operations.tests import OperationInitTest, FileInit
def create_administrativact(user, fle):
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index 8cde0f0d2..9d2ff8e8b 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -49,26 +49,11 @@ from archaeological_context_records.models import ContextRecord
from ishtar_common import forms_common
from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
- TestCase, create_user, create_superuser, AutocompleteTestBase, AcItem
-from archaeological_operations.tests import ImportTest, create_operation
-from archaeological_context_records.tests import ContextRecordInit, \
+ TestCase, create_user, create_superuser, AutocompleteTestBase, AcItem, \
+ FIND_FIXTURES, FIND_TOWNS_FIXTURES, WAREHOUSE_FIXTURES, \
CONTEXT_RECORD_FIXTURES, CONTEXT_RECORD_TOWNS_FIXTURES
-
-
-FIND_FIXTURES = CONTEXT_RECORD_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_finds/fixtures/initial_data-fr.json',
-]
-
-FIND_TOWNS_FIXTURES = CONTEXT_RECORD_TOWNS_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_finds/fixtures/initial_data-fr.json',
-]
-
-WAREHOUSE_FIXTURES = FIND_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_warehouse/fixtures/initial_data-fr.json',
-]
+from archaeological_operations.tests import ImportTest, create_operation
+from archaeological_context_records.tests import ContextRecordInit
class FindInit(ContextRecordInit):
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index 8e956c3ab..53ecba049 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -53,20 +53,8 @@ from archaeological_context_records.models import Unit, ContextRecord
from ishtar_common import forms_common
from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
create_superuser, create_user, TestCase, OPERATION_FIXTURES, \
- AutocompleteTestBase, AcItem
-
-
-OPERATION_TOWNS_FIXTURES = \
- OPERATION_FIXTURES + \
- [settings.ROOT_PATH + '../ishtar_common/fixtures/test_towns.json']
-
-FILE_FIXTURES = OPERATION_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_files/fixtures/initial_data-fr.json']
-
-FILE_TOWNS_FIXTURES = OPERATION_TOWNS_FIXTURES + [
- settings.ROOT_PATH +
- '../archaeological_files/fixtures/initial_data-fr.json']
+ AutocompleteTestBase, AcItem, OPERATION_TOWNS_FIXTURES, FILE_FIXTURES, \
+ FILE_TOWNS_FIXTURES
class FileInit(object):
diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py
index 3f4df9fad..07171ebb4 100644
--- a/archaeological_warehouse/tests.py
+++ b/archaeological_warehouse/tests.py
@@ -20,8 +20,7 @@
from archaeological_finds.tests import FindInit
from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \
- TestCase
-from archaeological_finds.tests import WAREHOUSE_FIXTURES
+ TestCase, WAREHOUSE_FIXTURES
from ishtar_common.models import IshtarSiteProfile, SpatialReferenceSystem
from archaeological_warehouse import models, views, forms
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py
index fdc3a6da5..f71109374 100644
--- a/ishtar_common/serializers.py
+++ b/ishtar_common/serializers.py
@@ -32,8 +32,8 @@ def serialization_info():
}, indent=2)
-def type_model_serialization(archive=False, return_empty_types=False,
- archive_name=None):
+def type_serialization(archive=False, return_empty_types=False,
+ archive_name=None):
"""
Serialize all types models to JSON
Used for import and export scripts
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 3289ad8f6..25be97692 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -48,7 +48,8 @@ from django.test.runner import DiscoverRunner
from ishtar_common import models
from ishtar_common import views
from ishtar_common.apps import admin_site
-from ishtar_common.serializers import type_model_serialization
+from ishtar_common.serializers import type_serialization, \
+ SERIALIZATION_VERSION
from ishtar_common.utils import post_save_geo, update_data, move_dict_data, \
rename_and_simplify_media_name, try_fix_file
@@ -70,6 +71,51 @@ OPERATION_FIXTURES = COMMON_FIXTURES + [
'../archaeological_operations/fixtures/initial_data_relation_type-fr.json',
]
+OPERATION_TOWNS_FIXTURES = \
+ OPERATION_FIXTURES + \
+ [settings.ROOT_PATH + '../ishtar_common/fixtures/test_towns.json']
+
+FILE_FIXTURES = OPERATION_FIXTURES + [
+ settings.ROOT_PATH +
+ '../archaeological_files/fixtures/initial_data-fr.json']
+
+FILE_TOWNS_FIXTURES = OPERATION_TOWNS_FIXTURES + [
+ settings.ROOT_PATH +
+ '../archaeological_files/fixtures/initial_data-fr.json']
+
+CONTEXT_RECORD_FIXTURES = FILE_FIXTURES + [
+ settings.ROOT_PATH +
+ '../archaeological_context_records/fixtures/initial_data-fr.json',
+ '../archaeological_context_records/fixtures/'
+ 'initial_data_relation_type_norel-fr.json',
+ '../archaeological_context_records/fixtures/'
+ 'initial_data_relation_type-fr.json',
+ ]
+
+CONTEXT_RECORD_TOWNS_FIXTURES = FILE_TOWNS_FIXTURES + [
+ settings.ROOT_PATH +
+ '../archaeological_context_records/fixtures/initial_data-fr.json',
+ '../archaeological_context_records/fixtures/'
+ 'initial_data_relation_type_norel-fr.json',
+ '../archaeological_context_records/fixtures/'
+ 'initial_data_relation_type-fr.json',
+ ]
+
+FIND_FIXTURES = CONTEXT_RECORD_FIXTURES + [
+ settings.ROOT_PATH +
+ '../archaeological_finds/fixtures/initial_data-fr.json',
+ ]
+
+FIND_TOWNS_FIXTURES = CONTEXT_RECORD_TOWNS_FIXTURES + [
+ settings.ROOT_PATH +
+ '../archaeological_finds/fixtures/initial_data-fr.json',
+ ]
+
+WAREHOUSE_FIXTURES = FIND_FIXTURES + [
+ settings.ROOT_PATH +
+ '../archaeological_warehouse/fixtures/initial_data-fr.json',
+ ]
+
def create_superuser():
username = 'username4277'
@@ -548,13 +594,10 @@ class CacheTest(TestCase):
class SerializationTest(TestCase):
- fixtures = [settings.ROOT_PATH +
- '../fixtures/initial_data-auth-fr.json',
- settings.ROOT_PATH +
- '../ishtar_common/fixtures/initial_data-fr.json',]
+ fixtures = COMMON_FIXTURES + WAREHOUSE_FIXTURES
def test_type_serialization(self):
- json_result = type_model_serialization()
+ json_result = type_serialization()
for k in json_result.keys():
module_name, model_name = k.split("__")
module = importlib.import_module(module_name + ".models")
@@ -562,11 +605,33 @@ class SerializationTest(TestCase):
self.assertEqual(model.objects.count(),
len(json.loads(json_result[k])))
- def test_type_serialization_zip(self):
- # only check the validity of the zip, the content is tested above
- zip_filename = type_model_serialization(archive=True)
+ def test_serialization_zip(self):
+ zip_filename = type_serialization(archive=True)
+ # only check the validity of the zip, the type content is tested above
+ self.assertTrue(zipfile.is_zipfile(zip_filename))
with zipfile.ZipFile(zip_filename, "r") as zip_file:
self.assertIsNone(zip_file.testzip())
+ info = json.loads(zip_file.read("info.json").decode("utf-8"))
+ self.assertEqual(info["serialize-version"], SERIALIZATION_VERSION)
+ print(info)
+
+ def test_type_restore(self):
+ zip_filename = type_serialization(archive=True)
+ initial_count = {}
+ with zipfile.ZipFile(zip_filename, "r") as zip_file:
+ for json_filename in zip_file.namelist():
+ path = json_filename.split(os.sep)
+ if len(path) != 2 or path[0] != "types":
+ continue
+ filename = path[-1].split(".")[0]
+ module_name, model_name = filename.split("__")
+ module = importlib.import_module(module_name + ".models")
+ model = getattr(module, model_name)
+ initial_count[json_filename] = model.objects.count()
+ model.objects.all().delete()
+ print(initial_count)
+
+
class AccessControlTest(TestCase):