Wrote tests for openslides.motion.models.Motion
This commit is contained in:
parent
6c3eb0f765
commit
bd317aed31
@ -113,7 +113,9 @@ class Motion(SlideMixin, models.Model):
|
|||||||
_attr = '_%s' % attr
|
_attr = '_%s' % attr
|
||||||
try:
|
try:
|
||||||
setattr(version, attr, getattr(self, _attr))
|
setattr(version, attr, getattr(self, _attr))
|
||||||
|
delattr(self, _attr)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
# If the _attr was not set, use the value from last_version
|
||||||
setattr(version, attr, getattr(self.last_version, attr))
|
setattr(version, attr, getattr(self.last_version, attr))
|
||||||
version.save()
|
version.save()
|
||||||
|
|
||||||
@ -190,14 +192,6 @@ class Motion(SlideMixin, models.Model):
|
|||||||
self._new_version = MotionVersion(motion=self)
|
self._new_version = MotionVersion(motion=self)
|
||||||
return self._new_version
|
return self._new_version
|
||||||
|
|
||||||
def get_version(self, version_id):
|
|
||||||
"""
|
|
||||||
Return a specific version from version_id
|
|
||||||
"""
|
|
||||||
# TODO: Check case, if version_id is not one of this motion
|
|
||||||
return self.versions.get(pk=version_id)
|
|
||||||
|
|
||||||
|
|
||||||
def get_version(self):
|
def get_version(self):
|
||||||
"""
|
"""
|
||||||
Get the "active" version object. This version will be used to get the
|
Get the "active" version object. This version will be used to get the
|
||||||
@ -206,7 +200,6 @@ class Motion(SlideMixin, models.Model):
|
|||||||
try:
|
try:
|
||||||
return self._version
|
return self._version
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# TODO: choose right version via config
|
|
||||||
return self.last_version
|
return self.last_version
|
||||||
|
|
||||||
def set_version(self, version):
|
def set_version(self, version):
|
||||||
@ -245,10 +238,7 @@ class Motion(SlideMixin, models.Model):
|
|||||||
return self.new_version
|
return self.new_version
|
||||||
|
|
||||||
def is_supporter(self, person):
|
def is_supporter(self, person):
|
||||||
try:
|
|
||||||
return self.supporter.filter(person=person).exists()
|
return self.supporter.filter(person=person).exists()
|
||||||
except AttributeError:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def support(self, person):
|
def support(self, person):
|
||||||
"""
|
"""
|
||||||
@ -267,13 +257,7 @@ class Motion(SlideMixin, models.Model):
|
|||||||
Remove a supporter from the list of supporters of the motion
|
Remove a supporter from the list of supporters of the motion
|
||||||
"""
|
"""
|
||||||
if self.state.support:
|
if self.state.support:
|
||||||
try:
|
|
||||||
self.supporter.filter(person=person).delete()
|
self.supporter.filter(person=person).delete()
|
||||||
except MotionSupporter.DoesNotExist:
|
|
||||||
# TODO: Don't do nothing but raise a precise exception for the view
|
|
||||||
pass
|
|
||||||
#else:
|
|
||||||
#self.writelog(_("Supporter: -%s") % (person))
|
|
||||||
else:
|
else:
|
||||||
raise WorkflowError("You can not unsupport a motion in state %s" % self.state.name)
|
raise WorkflowError("You can not unsupport a motion in state %s" % self.state.name)
|
||||||
|
|
||||||
|
0
tests/motion/__init__.py
Normal file
0
tests/motion/__init__.py
Normal file
117
tests/motion/test_models.py
Normal file
117
tests/motion/test_models.py
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
Tests for openslides.motion.models
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
:copyright: 2011, 2012 by OpenSlides team, see AUTHORS.
|
||||||
|
:license: GNU GPL, see LICENSE for more details.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
from openslides.participant.models import User
|
||||||
|
from openslides.config.models import config
|
||||||
|
from openslides.motion.models import Motion
|
||||||
|
from openslides.motion.workflow import WorkflowError
|
||||||
|
|
||||||
|
|
||||||
|
class ModelTest(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.motion = Motion.objects.create(title='v1')
|
||||||
|
self.test_user = User.objects.create(username='blub')
|
||||||
|
|
||||||
|
def test_create_new_version(self):
|
||||||
|
config['motion_create_new_version'] = 'ALLWASY_CREATE_NEW_VERSION'
|
||||||
|
motion = Motion.objects.create(title='m1')
|
||||||
|
self.assertEqual(motion.versions.count(), 1)
|
||||||
|
|
||||||
|
motion.new_version
|
||||||
|
motion.save()
|
||||||
|
self.assertEqual(motion.versions.count(), 2)
|
||||||
|
|
||||||
|
motion.title = 'new title'
|
||||||
|
motion.save()
|
||||||
|
self.assertEqual(motion.versions.count(), 3)
|
||||||
|
|
||||||
|
motion.save()
|
||||||
|
self.assertEqual(motion.versions.count(), 3)
|
||||||
|
|
||||||
|
config['motion_create_new_version'] = 'NEVER_CREATE_NEW_VERSION'
|
||||||
|
motion.text = 'new text'
|
||||||
|
motion.save()
|
||||||
|
self.assertEqual(motion.versions.count(), 3)
|
||||||
|
|
||||||
|
def test_version_data(self):
|
||||||
|
motion = Motion()
|
||||||
|
self.assertEqual(motion.title, '')
|
||||||
|
with self.assertRaises(AttributeError):
|
||||||
|
self._title
|
||||||
|
|
||||||
|
motion.title = 'title'
|
||||||
|
self.assertEqual(motion._title, 'title')
|
||||||
|
|
||||||
|
motion.reason = 'reason'
|
||||||
|
self.assertEqual(motion._reason, 'reason')
|
||||||
|
|
||||||
|
def test_version(self):
|
||||||
|
motion = Motion.objects.create(title='v1')
|
||||||
|
motion.title = 'v2'
|
||||||
|
motion.save()
|
||||||
|
v2_version = motion.version
|
||||||
|
motion.title = 'v3'
|
||||||
|
motion.save()
|
||||||
|
with self.assertRaises(AttributeError):
|
||||||
|
self._title
|
||||||
|
self.assertEqual(motion.title, 'v3')
|
||||||
|
|
||||||
|
motion.version = 0
|
||||||
|
self.assertEqual(motion.title, 'v1')
|
||||||
|
|
||||||
|
motion.version = v2_version
|
||||||
|
self.assertEqual(motion.title, 'v2')
|
||||||
|
|
||||||
|
motion.version = None
|
||||||
|
motion.version = None # Test to set a version to None, which is already None
|
||||||
|
self.assertEqual(motion.title, 'v3')
|
||||||
|
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
motion.version = 'wrong'
|
||||||
|
|
||||||
|
def test_absolute_url(self):
|
||||||
|
motion_id = self.motion.id
|
||||||
|
|
||||||
|
self.assertEqual(self.motion.get_absolute_url('detail'), '/motion/%d/' % motion_id)
|
||||||
|
self.assertEqual(self.motion.get_absolute_url('edit'), '/motion/%d/edit/' % motion_id)
|
||||||
|
#self.assertEqual(self.motion.get_absolute_url('delete'), '/motion/%d/del/' % motion_id)
|
||||||
|
|
||||||
|
def test_supporter(self):
|
||||||
|
self.assertFalse(self.motion.is_supporter(self.test_user))
|
||||||
|
self.motion.support(self.test_user)
|
||||||
|
self.assertTrue(self.motion.is_supporter(self.test_user))
|
||||||
|
self.motion.unsupport(self.test_user)
|
||||||
|
self.assertFalse(self.motion.is_supporter(self.test_user))
|
||||||
|
self.motion.unsupport(self.test_user)
|
||||||
|
|
||||||
|
def test_poll(self):
|
||||||
|
self.motion.state = 'per'
|
||||||
|
poll = self.motion.create_poll()
|
||||||
|
self.assertEqual(poll.poll_number, 1)
|
||||||
|
|
||||||
|
def test_state(self):
|
||||||
|
self.motion.reset_state()
|
||||||
|
self.assertEqual(self.motion.state.id, 'pub')
|
||||||
|
|
||||||
|
with self.assertRaises(WorkflowError):
|
||||||
|
self.motion.create_poll()
|
||||||
|
|
||||||
|
self.motion.set_state('per')
|
||||||
|
self.assertEqual(self.motion.state.id, 'per')
|
||||||
|
with self.assertRaises(WorkflowError):
|
||||||
|
self.motion.support(self.test_user)
|
||||||
|
with self.assertRaises(WorkflowError):
|
||||||
|
self.motion.unsupport(self.test_user)
|
||||||
|
|
||||||
|
with self.assertRaises(WorkflowError):
|
||||||
|
self.motion.set_state('per')
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
|
||||||
openslides.motion.tests
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Unit tests for the motion app.
|
|
||||||
|
|
||||||
:copyright: 2011, 2012 by OpenSlides team, see AUTHORS.
|
|
||||||
:license: GNU GPL, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
from openslides.participant.models import User
|
|
||||||
from openslides.motion.models import Motion
|
|
||||||
|
|
||||||
|
|
||||||
class MotionTest(TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
self.admin = User(username='testadmin')
|
|
||||||
self.admin.save()
|
|
||||||
self.anonym = User(username='testanoym')
|
|
||||||
self.anonym.save()
|
|
||||||
self.app1 = Motion(submitter=self.admin)
|
|
||||||
self.app1.save()
|
|
||||||
|
|
||||||
def refresh(self):
|
|
||||||
self.app1 = Motion.objects.get(pk=self.app1.id)
|
|
||||||
|
|
||||||
def testVersion(self):
|
|
||||||
self.assertTrue(self.app1.versions.exists())
|
|
||||||
self.assertEqual(self.app1.last_version, self.app1.versions[0])
|
|
||||||
self.assertEqual(self.app1.creation_time, self.app1.last_version.time)
|
|
||||||
|
|
||||||
self.app1.title = "app1"
|
|
||||||
self.app1.save()
|
|
||||||
self.refresh()
|
|
||||||
|
|
||||||
self.assertEqual(self.app1.versions.count(), 2)
|
|
||||||
self.assertEqual(self.app1.last_version, self.app1.versions[1])
|
|
Loading…
Reference in New Issue
Block a user