data=dict(reason=reason)
)
+ def finishMotion(self, user, motion):
+ return self.app.post(
+ '/motion/' + motion +'/finish',
+ environ_base={'USER_ROLES': user}
+ )
+
def buildResultText(self, motiontext, yes, no, abstain):
return '<p>'+motiontext+'</p></p>\n <p>\nYes <span class=\"badge badge-pill badge-secondary\">'+str(yes)+'</span><br>'\
+ '\nNo <span class=\"badge badge-pill badge-secondary\">'+str(no)+'</span><br>'\
def test_basic_results_data_details(self):
motion='g1.20200402.002'
result = self.app.get('/motion/' + motion, environ_base={'USER_ROLES': user}, follow_redirects=True)
- testtext= '<p>A second motion</p></p>\n </div>\n</div>\n<a href=\"/?start=2#motion-2\" class=\"btn btn-primary\">Back</a>\n</body>'
+ testtext= '<p>A second motion</p></p>\n </div>\n</div>\n<a href=\"/?start=2#motion-2\" class=\"btn btn-primary\">Back</a>'
self.assertIn(str.encode(testtext), result.data)
def test_vote(self):
def test_vote_closed(self):
motion='g1.20200402.002'
response = self.createVote(user, motion, 'abstain')
- self.assertEqual(response.status_code, 500)
- self.assertIn(str.encode('Error, motion deadline has passed'), response.data)
+ self.assertEqual(response.status_code, 403)
+ self.assertIn(str.encode('Error, out of time'), response.data)
def test_vote_canceled(self):
motion='g1.20200402.003'
response = self.createVote(user, motion, 'abstain')
- self.assertEqual(response.status_code, 500)
- self.assertIn(str.encode('Error, motion deadline has passed'), response.data)
+ self.assertEqual(response.status_code, 403)
+ self.assertIn(str.encode('Error, motion was canceled'), response.data)
def test_vote_not_given(self):
motion='g1.30190402.001'
self.assertEqual(response.status_code, 403)
self.assertIn(str.encode('Forbidden'), response.data)
+ def test_finishMotion(self):
+ motion='g1.20200402.004'
+ response = self.finishMotion(user, motion)
+ self.assertEqual(response.status_code, 403)
+ self.assertIn(str.encode('Forbidden'), response.data)
+
def test_see_old_vote(self):
motion='g1.20200402.002'
result = self.app.get('/motion/' + motion, environ_base={'USER_ROLES': user}, follow_redirects=True)
def setUp(self):
self.init_test()
global user
- user='testuser/vote:* create:* cancel:*'
+ user='testuser/vote:* create:* cancel:* finish:*'
self.db_clear()
def tearDown(self):
title='My Motion'
content='My body'
response = self.createMotion(user, title, content, '21', 'group1')
- self.assertEqual(response.status_code, 500)
+ self.assertEqual(response.status_code, 400)
self.assertIn(str.encode('Error, invalid length'), response.data)
+ def test_createMotionMissingData(self):
+ title=''
+ content=''
+ response = self.createMotion(user, title, content, '3', 'group1')
+ self.assertEqual(response.status_code, 400)
+ self.assertIn(str.encode('Error, missing title'), response.data)
+ title='New Motion'
+ response = self.createMotion(user, title, content, '3', 'group1')
+ self.assertEqual(response.status_code, 400)
+ self.assertIn(str.encode('Error, missing content'), response.data)
+ title=''
+ content='New Content'
+ response = self.createMotion(user, title, content, '3', 'group1')
+ self.assertEqual(response.status_code, 400)
+ self.assertIn(str.encode('Error, missing title'), response.data)
+
def test_createMotionWrongGroup(self):
title='My Motion'
content='My body'
self.assertEqual(response.status_code, 500)
self.assertIn(str.encode('Error, form requires reason'), response.data)
- reason='cancel test'
+ reason='cancel-test'
response = self.cancelMotion(user, motion, reason)
self.assertEqual(response.status_code, 302)
result = self.app.get('/', environ_base={'USER_ROLES': user})
self.assertIn(b'Cancelation reason: ' + str.encode(reason), result.data)
- motion='g1.30190402.001'
+ motion='g1.20190402.001'
reason="none"
response = self.cancelMotion(user, motion, reason)
self.assertEqual(response.status_code, 404)
self.assertIn(str.encode('Error, Not found'), response.data)
+ motion='g1.30200402.001'
+ reason="cancel-test"
+ response = self.cancelMotion(user, motion, reason)
+ self.assertEqual(response.status_code, 404)
+ self.assertIn(str.encode('Error, Not found'), response.data)
+
+ motion='g1.20200402.004'
+ response = self.cancelMotion(user, motion, reason)
+ self.assertEqual(response.status_code, 403)
+ self.assertIn(str.encode('Error, motion was canceled'), response.data)
+
+ def test_finishMotion(self):
+ self.db_sampledata()
+
+ motion='g1.20200402.004'
+ response = self.finishMotion(user, motion)
+ self.assertEqual(response.status_code, 302)
+ result = self.app.get('/', environ_base={'USER_ROLES': user})
+ self.assertIn(b'Motion D</span> (Finished)', result.data)
+
+ motion='g1.30190402.001'
+ response = self.finishMotion(user, motion)
+ self.assertEqual(response.status_code, 404)
+ self.assertIn(str.encode('Error, Not found'), response.data)
+
+ motion='g1.20200402.001'
+ response = self.finishMotion(user, motion)
+ self.assertEqual(response.status_code, 403)
+ self.assertIn(str.encode('Error, out of time'), response.data)
class AuditMotionTests(BasicTest):