Example #1
0
 def test_change_states_proposals(self):
     from voteit.core.models.agenda_item import AgendaItem
     from voteit.core.models.proposal import Proposal
     from voteit.core.models.poll import Poll
     register_workflows(self.config)
     request = testing.DummyRequest()
     self.config.begin(request)
     self.root['ai'] = ai = AgendaItem()
     ai['prop1'] = Proposal()
     ai['prop2'] = Proposal()
     ai['poll'] = Poll()
     ai['poll'].proposal_uids = (ai['prop1'].uid, ai['prop2'].uid)
     ai['poll'].set_workflow_state(request, 'upcoming')
     self.assertEqual(ai['prop1'].get_workflow_state(), 'voting')
     self.assertEqual(ai['prop2'].get_workflow_state(), 'voting')
Example #2
0
 def test_proposal_in_wrong_state(self):
     register_workflows(self.config)
     request = testing.DummyRequest()
     self.config.begin(request)
     from voteit.core.models.agenda_item import AgendaItem
     from voteit.core.models.proposal import Proposal
     from voteit.core.models.poll import Poll
     self.root['ai'] = ai = AgendaItem()
     ai['prop'] = Proposal()
     ai['poll'] = Poll()
     ai['poll'].proposal_uids = (ai['prop'].uid, )
     self.config.include('voteit.core.subscribers.poll')
     #Set state to something that doesn't have a transition to 'voting'
     ai['prop'].set_workflow_state(request, 'denied')
     self.assertRaises(HTTPForbidden, ai['poll'].set_workflow_state,
                       request, 'upcoming')
Example #3
0
    def test_proposal_in_wrong_state(self):
        register_workflows(self.config)
        request = testing.DummyRequest()
        self.config = testing.setUp(registry=self.config.registry,
                                    request=request)

        from voteit.core.models.agenda_item import AgendaItem
        from voteit.core.models.proposal import Proposal
        from voteit.core.models.poll import Poll
        ai = AgendaItem()
        ai['prop'] = Proposal()
        ai['poll'] = Poll()
        ai['poll'].proposal_uids = (ai['prop'].uid, )

        #Set state to something that doesn't have a transition to 'voting'
        ai['prop'].set_workflow_state(request, 'approved')

        self.assertRaises(HTTPForbidden, ai['poll'].set_workflow_state,
                          request, 'upcoming')
Example #4
0
 def setUp(self):
     self.request = testing.DummyRequest()
     self.config = testing.setUp(request=self.request)
     self.config.testing_securitypolicy(userid='admin')
     self.config.include('arche.testing')
     self.config.include('arche.models.catalog')
     #Enable workflows
     self.config.include('voteit.core.testing_helpers.register_workflows')
     #Register poll plugin
     self.config.include('voteit.core.plugins.majority_poll')
     #Add root
     from voteit.core.models.site import SiteRoot
     self.root = root = SiteRoot()
     #Add users
     from voteit.core.models.users import Users
     root['users'] = users = Users()
     from voteit.core.models.user import User
     users['admin'] = User()
     #Add meeting
     from voteit.core.models.meeting import Meeting
     root['m'] = self.meeting = m = Meeting()
     #Add agenda item - needed for lookups
     from voteit.core.models.agenda_item import AgendaItem
     m['ai'] = ai = AgendaItem()
     #Add a poll
     from voteit.core.models.poll import Poll
     ai['poll'] = Poll()
     #Wrap in correct context
     self.poll = ai['poll']
     #Select plugin to use
     from voteit.core.plugins.majority_poll import MajorityPollPlugin
     self.poll.set_field_value('poll_plugin', MajorityPollPlugin.name)
     #Add proposals
     from voteit.core.models.proposal import Proposal
     p1 = Proposal(text = 'p1', creators = ['admin'], aid = 'one')
     p1.uid = 'p1uid' #To make it simpler to test against
     ai['p1'] = p1
     p2 = Proposal(text = 'p2', creators = ['admin'], aid = 'two')
     p2.uid = 'p2uid' #To make it simpler to test against
     ai['p2'] = p2
     #Select proposals for this poll
     self.poll.proposal_uids = (p1.uid, p2.uid, )
     self.ai = ai
Example #5
0
 def _fixture(self):
     #register as adapter
     self.config.registry.registerAdapter(self._cut, name=self._cut.name)
     self.config.include('arche.testing.catalog')
     root = bootstrap_and_fixture(self.config)
     #Add agenda item - needed for lookups
     root['ai'] = ai = AgendaItem()
     #Add a poll
     ai['poll'] = Poll()
     #Wrap in correct context
     poll = ai['poll']
     #Add proposals
     ai['p1'] = p1 = Proposal(text='p1', uid='p1uid')
     ai['p2'] = p2 = Proposal(text='p2', uid='p2uid')
     #Select proposals for this poll
     poll.proposal_uids = (
         p1.uid,
         p2.uid,
     )
     poll.set_field_value('poll_plugin', 'dutt_poll')
     return ai
Example #6
0
 def test_verify_object(self):
     self.failUnless(verifyObject(IPollPlugin, self._cut(Poll())))
Example #7
0
 def test_poll_plugin(self):
     poll = Poll()
     self.failUnless(
         self.config.registry.queryAdapter(poll,
                                           IPollPlugin,
                                           name=u'dutt_poll'))
Example #8
0
 def test_get_settings_schema(self):
     obj = self._cut(Poll())
     schema = obj.get_settings_schema()
     self.assertIsInstance(schema, colander.SchemaNode)
     self.assertNotIn('winners', schema)
Example #9
0
 def test_verify_obj_implementation(self):
     obj = self._cut(Poll())
     self.failUnless(verifyObject(IPollPlugin, obj))