summaryrefslogtreecommitdiff
path: root/archaeological_context_records/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-01-24 18:46:27 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2015-01-24 18:46:27 +0100
commite874b48bc99c2081ca918bf3e6ef6602f8148307 (patch)
tree240a04d141dbbce702de39f17b6859fb888a342e /archaeological_context_records/tests.py
parent73d21de642443d03a76285a9038389a5acbdd92d (diff)
downloadIshtar-e874b48bc99c2081ca918bf3e6ef6602f8148307.tar.bz2
Ishtar-e874b48bc99c2081ca918bf3e6ef6602f8148307.zip
Prevent incoherent RelationType
* check that no relation type with symmetrical=True and an inverse relation are set * after saving check that theinverse_relation of the inverse_relation point to the saved object * test update
Diffstat (limited to 'archaeological_context_records/tests.py')
-rw-r--r--archaeological_context_records/tests.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
new file mode 100644
index 000000000..2d144de3a
--- /dev/null
+++ b/archaeological_context_records/tests.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2015 É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
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
+"""
+Unit tests
+"""
+import json
+
+from django.conf import settings
+from django.core.exceptions import ValidationError
+from django.test import TestCase
+
+from archaeological_operations.tests import OperationInitTest
+from archaeological_operations.models import Parcel
+from archaeological_context_records import models
+
+
+class ContextRecordInit(OperationInitTest):
+
+ def create_context_record(self, user=None, data={}):
+ if not getattr(self, 'context_records', None):
+ self.context_records = []
+
+ default = {'label':"Context record"}
+ if not data.get('operation'):
+ data['operation'] = self.get_default_operation()
+ if not data.get('parcel'):
+ data['parcel'] = self.get_default_parcel()
+ if not data.get('user'):
+ data['user'] = self.get_default_user()
+
+ default.update(data)
+ context_records.append(models.ContextRecord.create(**default))
+ return context_records
+
+ def get_default_context_record(self):
+ return self.create_context_record()[0]
+
+class RecordRelationsTest(TestCase, ContextRecordInit):
+ fixtures = [settings.ROOT_PATH +
+ '../fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../ishtar_common/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_files/fixtures/initial_data.json',
+ settings.ROOT_PATH +
+ '../archaeological_operations/fixtures/initial_data-fr.json']
+ model = models.ContextRecord
+
+ def setUp(self):
+ # two different context record
+ print(1333)
+ self.create_context_record({"label":u"CR 1"})
+ print(1444)
+ self.create_context_record({"label":u"CR 2"})
+ print(15555)
+
+ def testRelations(self):
+ print(1)
+ sym_rel = models.RelationType.objects.create(symmetrical=True)
+ print(12)
+ rel_1 = models.RelationType.objects.create(symmetrical=False)
+ print(13)
+ rel_2 = models.RelationType.objects.create(symmetrical=False,
+ inverse_relation=rel_1)
+ print(14)
+ # cannot have symmetrical and an inverse_relation
+ with self.assertRaises(ValidationError):
+ rel_3 = models.RelationType.objects.create(symmetrical=True,
+ inverse_relation=rel_1)
+ print(15)
+ # auto fill inverse relations
+ self.assertEqual(rel_1.inverse_relation, rel_2)
+