diff options
Diffstat (limited to 'ishtar/ishtar_base/tests.py')
| -rw-r--r-- | ishtar/ishtar_base/tests.py | 125 | 
1 files changed, 125 insertions, 0 deletions
diff --git a/ishtar/ishtar_base/tests.py b/ishtar/ishtar_base/tests.py new file mode 100644 index 000000000..5a433b381 --- /dev/null +++ b/ishtar/ishtar_base/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) +  | 
