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
|
||||
try:
|
||||
setattr(version, attr, getattr(self, _attr))
|
||||
delattr(self, _attr)
|
||||
except AttributeError:
|
||||
# If the _attr was not set, use the value from last_version
|
||||
setattr(version, attr, getattr(self.last_version, attr))
|
||||
version.save()
|
||||
|
||||
@ -190,14 +192,6 @@ class Motion(SlideMixin, models.Model):
|
||||
self._new_version = MotionVersion(motion=self)
|
||||
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):
|
||||
"""
|
||||
Get the "active" version object. This version will be used to get the
|
||||
@ -206,7 +200,6 @@ class Motion(SlideMixin, models.Model):
|
||||
try:
|
||||
return self._version
|
||||
except AttributeError:
|
||||
# TODO: choose right version via config
|
||||
return self.last_version
|
||||
|
||||
def set_version(self, version):
|
||||
@ -245,10 +238,7 @@ class Motion(SlideMixin, models.Model):
|
||||
return self.new_version
|
||||
|
||||
def is_supporter(self, person):
|
||||
try:
|
||||
return self.supporter.filter(person=person).exists()
|
||||
except AttributeError:
|
||||
return False
|
||||
return self.supporter.filter(person=person).exists()
|
||||
|
||||
def support(self, person):
|
||||
"""
|
||||
@ -267,13 +257,7 @@ class Motion(SlideMixin, models.Model):
|
||||
Remove a supporter from the list of supporters of the motion
|
||||
"""
|
||||
if self.state.support:
|
||||
try:
|
||||
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))
|
||||
self.supporter.filter(person=person).delete()
|
||||
else:
|
||||
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