diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-09-08 12:12:33 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-09-08 12:12:33 +0200 |
commit | 6822016883796d8938bf74a1372222f44f91f16c (patch) | |
tree | 34d628d117acf0222768243080c3799b7c0c21d3 /archaeological_files/tests.py | |
parent | 5f133656982aa768fc83f9775ed963dce05f8319 (diff) | |
download | Ishtar-6822016883796d8938bf74a1372222f44f91f16c.tar.bz2 Ishtar-6822016883796d8938bf74a1372222f44f91f16c.zip |
Fix archaeological operation wizard when no town is available
Diffstat (limited to 'archaeological_files/tests.py')
-rw-r--r-- | archaeological_files/tests.py | 125 |
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) + |