diff options
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 |
commit | 06027d5d33663c4eed552ecc7c632390b54f4326 (patch) | |
tree | 0be2daf2e502da9d3f520240725c27629349f836 | |
parent | ca959330516334a3eb4edd8112ebb6d180c978ea (diff) | |
download | Ishtar-06027d5d33663c4eed552ecc7c632390b54f4326.tar.bz2 Ishtar-06027d5d33663c4eed552ecc7c632390b54f4326.zip |
Refactor tests - first work on serialization restore test
-rw-r--r-- | archaeological_context_records/tests.py | 21 | ||||
-rw-r--r-- | archaeological_files/tests.py | 4 | ||||
-rw-r--r-- | archaeological_finds/tests.py | 23 | ||||
-rw-r--r-- | archaeological_operations/tests.py | 16 | ||||
-rw-r--r-- | archaeological_warehouse/tests.py | 3 | ||||
-rw-r--r-- | ishtar_common/serializers.py | 4 | ||||
-rw-r--r-- | ishtar_common/tests.py | 83 |
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): |