summaryrefslogtreecommitdiff
path: root/archaeological_files/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_files/tests.py')
-rw-r--r--archaeological_files/tests.py125
1 files changed, 125 insertions, 0 deletions
diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py
new file mode 100644
index 000000000..5a433b381
--- /dev/null
+++ b/archaeological_files/tests.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2010-2011 É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.test import TestCase
+
+import models
+
+class FileTest(TestCase):
+ fixtures = ['user.json', 'person_type-fr.json', 'organization_type-fr.json',
+ 'treatment_type-fr.json']
+ model = models.File
+
+ def setUp(self):
+ self.extra_models, self.model_list = {}, []
+ user = models.IshtarUser.objects.get(pk=1)
+ person_type = models.PersonType(label=u'Test person type',
+ txt_idx='test_person', available=True)
+ person_type.save()
+ self.extra_models['person_type'] = person_type
+ self.model_list.append(person_type)
+
+ person = models.Person(title='Mr', surname='Surname', name='Name',
+ person_type=person_type, history_modifier=user)
+ person.save()
+ self.extra_models['person'] = person
+ self.model_list.append(person)
+
+ file_type = models.FileType(label=u'Test file type',
+ txt_idx='test_file', available=True)
+ file_type.save()
+ self.extra_models['file_type'] = file_type
+ self.model_list.append(file_type)
+
+ dct = {'year':2010, 'numeric_reference':1000, 'file_type':file_type,
+ 'internal_reference':u'UNIT_testÉ ?', 'in_charge':person,
+ 'history_modifier':user, 'total_surface':10000}
+ self.item = self.model(**dct)
+ self.item.save()
+
+ def tearDown(self):
+ self.item.delete()
+ for item in reversed(self.model_list):
+ item.delete()
+
+ def testAddAndGetHistorized(self):
+ """
+ Test correct new version and correct access to history
+ """
+ nb_hist = self.item.history.count()
+ self.assertTrue(self.item.history.count() >= 1)
+ base_label = self.item.internal_reference
+ self.item.internal_reference = u"Unité_Test"
+ self.item.save()
+ self.failUnlessEqual(self.item.history.count(), nb_hist+1)
+ self.failUnlessEqual(self.item.history.all()[1].internal_reference,
+ base_label)
+
+ def testIntelligentHistorisation(self):
+ """
+ Test that to identical version are not recorded twice in the history
+ """
+ nb_hist = self.item.history.count()
+ self.item.internal_reference = u"Unité_Test"
+ self.item.save()
+ self.failUnlessEqual(self.item.history.count(), nb_hist+1)
+ nb_hist = self.item.history.count()
+ self.item.save()
+ self.failUnlessEqual(self.item.history.count(), nb_hist)
+
+ def testRollbackFile(self):
+ nb_hist = self.item.history.count()
+ initial_values = self.item.values()
+ backup_date = self.item.history.all()[0].history_date
+ self.item.internal_reference = u"Unité_Test"
+ self.item.save()
+ self.item.rollback(backup_date)
+ self.failUnlessEqual(self.item.history.count(), nb_hist)
+ new_values = self.item.values()
+ for k in initial_values.keys():
+ self.assertTrue(k in new_values)
+ self.assertEqual(new_values[k], initial_values[k])
+
+ def testRESTGetFile(self):
+ response = self.client.post('/get-file/',
+ {'numeric_reference':self.item.numeric_reference})
+ self.assertEqual(response.status_code, 200)
+ data = json.loads(response.content)
+ self.assertTrue('records' in data)
+ self.assertTrue(data['records'] == 1)
+
+ def testRESTGetOldFile(self):
+ initial_ref = self.item.internal_reference
+ new_ref = u"Unité_Test_old_file"
+ new_ref = initial_ref != new_ref and new_ref or new_ref + u"extra"
+ self.item.internal_reference = new_ref
+ self.item.save()
+ response = self.client.post('/get-file/',
+ {'numeric_reference':self.item.numeric_reference, 'old':1})
+ self.assertEqual(response.status_code, 200)
+ data = json.loads(response.content)
+ self.assertTrue('records' in data)
+ self.assertTrue(data['records'] == 1)
+ self.assertEqual(data['rows'][0]['internal_reference'], initial_ref)
+