diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-02-06 13:49:17 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-02-06 13:49:52 +0100 | 
| commit | 90aa89e5d40b948a4227df5a197aa54c2254cc6c (patch) | |
| tree | 45a3f957d8e43b6cf2030af7f3cfaf4b803648dc /archaeological_context_records/tests.py | |
| parent | 376cc82d102a66b6776ec96dcdab81bb87c3af20 (diff) | |
| download | Ishtar-90aa89e5d40b948a4227df5a197aa54c2254cc6c.tar.bz2 Ishtar-90aa89e5d40b948a4227df5a197aa54c2254cc6c.zip | |
Import tests: test limit model for context records - more explicit error message when dealing with limit model
Diffstat (limited to 'archaeological_context_records/tests.py')
| -rw-r--r-- | archaeological_context_records/tests.py | 88 | 
1 files changed, 84 insertions, 4 deletions
| diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index 032861d5d..f1e6581d7 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -1,6 +1,6 @@  #!/usr/bin/env python  # -*- coding: utf-8 -*- -# Copyright (C) 2015 Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2015-2017 Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet>  # This program is free software: you can redistribute it and/or modify  # it under the terms of the GNU Affero General Public License as @@ -20,13 +20,12 @@  import json  from django.conf import settings -from django.core.exceptions import ValidationError -from django.core.files.uploadedfile import SimpleUploadedFile +from django.core.exceptions import ValidationError, ImproperlyConfigured  from django.core.urlresolvers import reverse  from django.test import TestCase  from django.test.client import Client -from ishtar_common.models import ImporterType, IshtarSiteProfile +from ishtar_common.models import IshtarSiteProfile, ImporterModel  from ishtar_common.tests import create_superuser  from archaeological_operations.tests import OperationInitTest, \      ImportTest, ImportOperationTest @@ -61,6 +60,87 @@ class ImportContextRecordTest(ImportTest, TestCase):              models.ContextRecord.objects.filter(                  unit__txt_idx='layer').count(), 1) +    def test_model_limitation(self): +        old_nb = models.ContextRecord.objects.count() +        mcc, form = self.init_context_record_import() +        mcc.created_models.clear() + +        self.assertTrue(form.is_valid()) +        impt = form.save(self.ishtar_user) +        impt.initialize() + +        self.init_cr_targetkey(impt) +        impt.importation() +        # no model defined in created_models: normal import +        current_nb = models.ContextRecord.objects.count() +        self.assertEqual(current_nb, old_nb + 4) + +        # add an inadequate model to make created_models non empty +        for cr in models.ContextRecord.objects.all(): +            cr.delete() +        mcc, form = self.init_context_record_import() +        mcc.created_models.clear() +        mcc.created_models.add(ImporterModel.objects.get( +            klass='ishtar_common.models.Organization' +        )) +        impt = form.save(self.ishtar_user) +        impt.initialize() +        self.init_cr_targetkey(impt) +        # Dating is not in models that can be created but force new is +        # set for a column that references Dating +        with self.assertRaises(ImproperlyConfigured): +            impt.importation() + +        # retry with only Dating (no context record) +        for cr in models.ContextRecord.objects.all(): +            cr.delete() +        mcc, form = self.init_context_record_import() +        mcc.created_models.clear() +        dat_model, c = ImporterModel.objects.get_or_create( +            klass='archaeological_context_records.models.Dating', +            defaults={"name": 'Dating'}) +        mcc.created_models.add(dat_model) +        impt = form.save(self.ishtar_user) +        impt.initialize() +        self.init_cr_targetkey(impt) +        impt.importation() + +        current_nb = models.ContextRecord.objects.count() +        self.assertEqual(current_nb, 0) + +        # add a context record model +        for cr in models.ContextRecord.objects.all(): +            cr.delete() +        mcc, form = self.init_context_record_import() +        mcc.created_models.clear() +        mcc.created_models.add(ImporterModel.objects.get( +            klass='archaeological_context_records.models.ContextRecord' +        )) +        mcc.created_models.add(dat_model) +        impt = form.save(self.ishtar_user) +        impt.initialize() +        self.init_cr_targetkey(impt) +        impt.importation() +        current_nb = models.ContextRecord.objects.count() +        self.assertEqual(current_nb, 4) +        ''' + +        # add a context record model +        for cr in models.ContextRecord.objects.all(): +            cr.delete() +        mcc, form = self.init_context_record_import() +        mcc.created_models.clear() +        mcc.created_models.add(ImporterModel.objects.get( +            klass='archaeological_context_records.models.ContextRecord' +        )) +        impt = form.save(self.ishtar_user) +        impt.initialize() +        self.init_cr_targetkey(impt) +        impt.importation() +        current_nb = models.ContextRecord.objects.count() +        self.assertEqual(current_nb, 4) +        ''' +  class ContextRecordInit(OperationInitTest):      def create_context_record(self, user=None, data={}, force=False): | 
