Ejemplo n.º 1
0
 def test_search_catalog(self):
     register_catalog(self.config)
     self.config.testing_securitypolicy('admin', permissive=True)
     root = bootstrap_and_fixture(self.config)
     from voteit.core.models.meeting import Meeting
     root['m'] = Meeting(title='Hello world')
     root['m2'] = Meeting(title='Goodbye')
     request = testing.DummyRequest()
     obj = self._cut(root, request)
     self.assertEqual(obj.search_catalog(title='Hello world')[0], 1)
     #Context search should remove the result if the context is another tree
     self.assertEqual(
         obj.search_catalog(context=root['m2'], title='Hello world')[0], 0)
Ejemplo n.º 2
0
 def test_meeting_bad_group(self):
     from voteit.core.models.meeting import Meeting
     self.config.testing_securitypolicy(userid='dummy', permissive=True)
     context = Meeting()
     request = testing.DummyRequest()
     obj = self._cut(context, request)
     self.assertRaises(colander.Invalid, obj, None, ['role:Admin'])
Ejemplo n.º 3
0
 def _fixture(self):
     from voteit.core.models.meeting import Meeting
     from voteit.core.models.user import User
     root = bootstrap_and_fixture(self.config)
     root['m'] = Meeting()
     root['users']['dummy'] = User(first_name = 'John', last_name = 'Doe')
     return root
Ejemplo n.º 4
0
 def _fixture(self):
     from voteit.core.models.meeting import Meeting
     from voteit.core.models.user import User
     root = bootstrap_and_fixture(self.config)
     root['m'] = meeting = Meeting()
     root.users['dummy'] = User()
     return meeting
Ejemplo n.º 5
0
def active_poll_fixture(config):
    """ This method sets up a site the way it will be when a poll is ready to start
        with admin as voter.
        You can use this if you want a fixture for your poll plugin tests
    """
    from voteit.core.models.poll import Poll
    from voteit.core.models.meeting import Meeting
    from voteit.core.models.agenda_item import AgendaItem
    from voteit.core.models.proposal import Proposal
    root = bootstrap_and_fixture(config)
    request = testing.DummyRequest()
    config = testing.setUp(request = request, registry = config.registry)
    config.include('pyramid_mailer.testing')
    config.include('voteit.core.subscribers.poll')
    root['users']['admin'].set_field_value('email', '*****@*****.**')
    meeting = root['meeting'] = Meeting()
    meeting.add_groups('admin', [ROLE_VOTER])
    meeting.set_workflow_state(request, 'ongoing')
    ai = meeting['ai'] = AgendaItem()
    ai['prop1'] = Proposal(text = u"Proposal 1")
    ai['prop2'] = Proposal(text = u"Proposal 2")
    ai.set_workflow_state(request, 'upcoming')
    ai.set_workflow_state(request, 'ongoing')
    ai['poll'] = Poll(title = 'A poll')
    poll = ai['poll']
    poll.set_field_value('proposals', set([ai['prop1'].uid, ai['prop2'].uid]))
    poll.set_workflow_state(request, 'upcoming')
    return root
Ejemplo n.º 6
0
def _setup_poll_fixture(config):
    # type: (Configurator) -> Poll
    config.testing_securitypolicy('admin', permissive=True)
    # config.include('pyramid_chameleon')
    # Register plugin
    config.include('voteit.stv')
    config.include('arche.testing')
    config.include('arche.testing.workflow')
    config.include('arche.testing.catalog')
    config.include('voteit.core.models.catalog')
    root = bootstrap_and_fixture(config)
    root['m'] = Meeting()
    unrestricted_wf_transition_to(root['m'], 'ongoing')
    root['m']['ai'] = ai = AgendaItem()
    unrestricted_wf_transition_to(ai, 'upcoming')
    unrestricted_wf_transition_to(ai, 'ongoing')
    #Setup poll
    ai['poll'] = Poll()
    poll = ai['poll']
    #Add proposals
    p1 = Proposal(creators = ['dummy'], text = 'first proposal')
    p1.uid = 'p1uid' #To make it simpler to test against
    ai['p1'] = p1
    p2 = Proposal(creators = ['dummy'], text = 'second proposal')
    p2.uid = 'p2uid'
    ai['p2'] = p2
    p3 = Proposal(creators = ['dummy'], text = 'third proposal')
    p3.uid = 'p3uid'
    ai['p3'] = p3
    #Select proposals for this poll
    poll.proposal_uids = (p1.uid, p2.uid, p3.uid)
    #Set poll as ongoing
    unrestricted_wf_transition_to(poll, 'upcoming')
    return poll
Ejemplo n.º 7
0
 def test_meeting_state(self):
     from voteit.core.models.meeting import Meeting
     root = bootstrap_and_fixture(self.config)
     meeting = root['m'] = Meeting()
     request = testing.DummyRequest()
     obj = self._cut(meeting, request)
     self.assertEqual(obj.meeting_state, u'upcoming')
Ejemplo n.º 8
0
    def test_get_content_states(self):
        """ To test content states we need to setup workflow and use real content types."""
        from voteit.core.models.meeting import Meeting
        from voteit.core.models.agenda_item import AgendaItem
        self.config.include('pyramid_zcml')
        self.config.load_zcml('voteit.core:configure.zcml')

        meeting = Meeting()
        meeting.title = 'Hello Meeting'
        ai1 = AgendaItem()
        ai1.title = 'Stuff to do'
        ai2 = AgendaItem()
        ai2.title = 'More important things'
        meeting['ai1'] = ai1
        meeting['ai2'] = ai2
        meeting['b1'] = self._cut()

        self.assertEqual(
            meeting.get_content(sort_on='title', states='private'), (ai2, ai1))
        self.assertEqual(
            meeting.get_content(sort_on='title',
                                states=('private', 'upcoming')), (ai2, ai1))
        request = testing.DummyRequest()
        ai1.set_workflow_state(request, 'upcoming')
        self.assertEqual(
            meeting.get_content(sort_on='title', states='private'), (ai2, ))
        self.assertEqual(
            meeting.get_content(sort_on='title',
                                states=('private', 'some_other')), (ai2, ))
        self.assertEqual(
            meeting.get_content(sort_on='title',
                                states=(
                                    'private',
                                    'upcoming',
                                )), (ai2, ai1))
Ejemplo n.º 9
0
 def _fixture(self):
     from voteit.core.models.agenda_item import AgendaItem
     from voteit.core.models.meeting import Meeting
     root = bootstrap_and_fixture(self.config)
     root['m'] = meeting = Meeting()
     meeting['ai'] = ai = AgendaItem()
     return ai
Ejemplo n.º 10
0
 def test_update_contained_in_ai(self):
     self.config.include('arche.testing.setup_auth')
     self.config.include('arche.testing')
     self.config.include('voteit.core.models.meeting')
     self.config.include('voteit.core.models.discussion_post')
     from voteit.core.models.discussion_post import DiscussionPost
     from voteit.core.models.meeting import Meeting
     from voteit.core.models.user import User
     root = self._fixture()
     root['users']['john'] = User()
     root['m'] = Meeting()
     root['m'].add_groups('john', [security.ROLE_VIEWER])
     root['m']['ai'] = ai = self._ai(title='New object')
     ai['dp'] = dp = DiscussionPost()
     #To make sure dp got catalogued
     self.assertEqual(root.catalog.search(uid=dp.uid)[0], 1)
     #The discussion post shouldn't be visible now, since the ai is private
     self.assertEqual(
         root.catalog.search(uid=dp.uid,
                             allowed_to_view=[security.ROLE_VIEWER])[0], 0)
     #When the ai is made upcoming, it should be visible
     security.unrestricted_wf_transition_to(ai, 'upcoming')
     self.assertEqual(
         root.catalog.search(uid=dp.uid,
                             allowed_to_view=[security.ROLE_VIEWER])[0], 1)
Ejemplo n.º 11
0
def _fixture(config):
    from voteit.core.models.user import User
    from voteit.core.models.meeting import Meeting
    config.include('pyramid_chameleon')
    root = bootstrap_and_fixture(config)
    config.include('arche.testing.setup_auth')
    config.include('voteit.core.models.meeting')
    tester = User(
        password='******',
        creators=['tester'],
        first_name=u'Tester',
        email="*****@*****.**",
    )
    root.users['tester'] = tester
    moderator = User(
        password='******',
        creators=['moderator'],
        first_name=u'Moderator',
        email="*****@*****.**",
    )
    root.users['moderator'] = moderator
    meeting = Meeting()
    meeting.add_groups('tester', [
        security.ROLE_DISCUSS, security.ROLE_PROPOSE, security.ROLE_VOTER,
        security.ROLE_VIEWER
    ])
    meeting.add_groups('moderator', [security.ROLE_MODERATOR])
    root['meeting'] = meeting
    return root
Ejemplo n.º 12
0
    def test_meeting_states(self):
        obj = Meeting()
        request = testing.DummyRequest()

        self.assertEqual(obj.get_workflow_state(), u'upcoming')

        obj.make_workflow_transition(request, 'upcoming_to_ongoing')
        self.assertEqual(obj.get_workflow_state(), u'ongoing')

        obj.workflow.initialize(obj)
        obj.make_workflow_transition(request, 'upcoming_to_closed')
        self.assertEqual(obj.get_workflow_state(), u'closed')

        obj.workflow.initialize(obj)
        obj.make_workflow_transition(request, 'upcoming_to_ongoing')
        obj.make_workflow_transition(request, 'ongoing_to_upcoming')
        self.assertEqual(obj.get_workflow_state(), u'upcoming')

        obj.workflow.initialize(obj)
        obj.make_workflow_transition(request, 'upcoming_to_ongoing')
        obj.make_workflow_transition(request, 'ongoing_to_closed')
        self.assertEqual(obj.get_workflow_state(), u'closed')

        obj.workflow.initialize(obj)
        obj.make_workflow_transition(request, 'upcoming_to_closed')
        obj.make_workflow_transition(request, 'closed_to_ongoing')
        self.assertEqual(obj.get_workflow_state(), u'ongoing')
Ejemplo n.º 13
0
 def test_meeting_good_group(self):
     from voteit.core.models.meeting import Meeting
     context = Meeting()
     self._reg_dummy_policy(context)
     request = testing.DummyRequest()
     obj = self._cut(context, request)
     self.assertIsNone(obj(None, ['role:Moderator', 'role:Discussion']))
Ejemplo n.º 14
0
 def test_group_form_meeting_cancel(self):
     root = self._fixture()
     from voteit.core.models.meeting import Meeting
     root['m'] = context = Meeting()
     request = testing.DummyRequest(post={'cancel': 'cancel'})
     obj = self._cut(context, request)
     response = obj.group_form()
     self.assertEqual(response.location, 'http://example.com/m/')
Ejemplo n.º 15
0
 def test_meeting_url(self):
     from voteit.core.models.meeting import Meeting
     root = bootstrap_and_fixture(self.config)
     meeting = root['m'] = Meeting()
     request = testing.DummyRequest()
     obj = self._cut(meeting, request)
     #example.com is from Pyramids testing env
     self.assertEqual(obj.meeting_url, 'http://example.com/m/')
Ejemplo n.º 16
0
def _fixture(config):
    from voteit.core.models.meeting import Meeting
    config.testing_securitypolicy(userid='dummy', permissive=True)
    config.include('voteit.core.testing_helpers.register_catalog')
    root = bootstrap_and_fixture(config)
    root['users']['admin'].about_me = u"The story of an administrator"
    root['m'] = Meeting()
    return root
Ejemplo n.º 17
0
 def test_add_permission_meeting(self):
     root = self._fixture()
     from voteit.core.models.meeting import Meeting
     root['m'] = context = Meeting()
     request = testing.DummyRequest()
     obj = self._cut(context, request)
     response = obj.add_permission()
     self.assertIn('form', response)
 def test_populate_meeting(self):
     obj = self._make_obj()
     self._fill_obj(obj)
     from voteit.core.models.meeting import Meeting
     meeting = Meeting()
     obj.populate_meeting(meeting)
     self.assertEqual(len(meeting), 3)
     self.assertEqual(meeting.values()[0].get_field_value('title'), 'A1')
Ejemplo n.º 19
0
def _fixture(config):
    from voteit.core.models.meeting import Meeting
    config.include('arche.testing')
    config.include('voteit.core.schemas.contact')
    config.include('pyramid_mailer.testing')
    root = bootstrap_and_fixture(config)
    root['m'] = Meeting()
    return root
Ejemplo n.º 20
0
 def _fixture(self):
     from voteit.core.models.agenda_item import AgendaItem
     from voteit.core.models.meeting import Meeting
     root = bootstrap_and_fixture(self.config)
     root['users']['admin'].email = '*****@*****.**'
     root['m'] = meeting = Meeting()
     meeting['ai'] = ai = AgendaItem()
     return ai
Ejemplo n.º 21
0
    def _fixture(self):
        from voteit.core.models.meeting import Meeting
        from voteit.core.models.invite_ticket import InviteTicket
        meeting = Meeting()

        ticket = InviteTicket('*****@*****.**', ['role:Moderator'],
                              'Welcome to the meeting!')
        meeting.invite_tickets['*****@*****.**'] = ticket
        return meeting
 def _fixture(self):
     from voteit.core.models.meeting import Meeting
     from voteit.core.models.agenda_item import AgendaItem
     from voteit.core.models.user import User
     root = bootstrap_and_fixture(self.config)
     root.users['some_user'] = User()
     root['m'] = Meeting()
     root['m']['ai'] = AgendaItem()
     return root['m']['ai']
Ejemplo n.º 23
0
 def test_get_userinfo_url(self):
     from voteit.core.models.meeting import Meeting
     root = bootstrap_and_fixture(self.config)
     meeting = root['m'] = Meeting()
     request = testing.DummyRequest()
     obj = self._cut(meeting, request)
     #example.com is from Pyramids testing suite
     self.assertEqual(obj.get_userinfo_url('somebody'),
                      'http://example.com/m/_userinfo?userid=somebody')
Ejemplo n.º 24
0
 def _fixture(self):
     from voteit.core.models.meeting import Meeting
     self.config.include('arche.models.catalog')
     self.config.include('voteit.core.models.catalog')
     root = bootstrap_and_fixture(self.config)
     self.config.include('voteit.core.models.invite_ticket')
     root['m'] = Meeting()
     root['users']['admin'].email = '*****@*****.**'
     return root
Ejemplo n.º 25
0
 def _fixture(self):
     from voteit.core.models.meeting import Meeting
     from voteit.core.models.proposal import Proposal
     from voteit.core.models.poll import Poll
     self.root['m'] = m = Meeting()
     m['ai'] = ai = self._cut()
     ai['prop'] = prop = Proposal()
     ai['poll'] = Poll(proposals=[prop.uid])
     return ai
Ejemplo n.º 26
0
 def test_get_content_specific_content_type(self):
     from voteit.core.models.meeting import Meeting
     from voteit.core.models.agenda_item import AgendaItem
     meeting = Meeting()
     meeting['ai1'] = AgendaItem()
     meeting['ai2'] = AgendaItem()
     meeting['b1'] = self._cut()
     res = meeting.get_content(content_type = 'AgendaItem')
     self.assertEqual(len(res), 2)
Ejemplo n.º 27
0
 def _fixture(self):
     from arche.resources import Document
     from voteit.core.models.agenda_item import AgendaItem
     from voteit.core.models.proposal import Proposal
     from voteit.core.models.meeting import Meeting
     root = bootstrap_and_fixture(self.config)
     root['m'] = m = Meeting()
     m['ai'] = ai = AgendaItem(title='ai')
     ai['p'] = Proposal(text='Some animlas are more equal than others')
     ai['p']['d'] = Document()
     ai['p2'] = Proposal(text='Me wont be there')
     unrestricted_wf_transition_to(ai['p2'], 'retracted')
     root['m2'] = Meeting()
     request = testing.DummyRequest()
     request.root = root
     apply_request_extensions(request)
     self.config.begin(request)
     return root, request
Ejemplo n.º 28
0
 def _fixture(self):
     self.config.include('pyramid_mailer.testing')
     from voteit.core.models.agenda_item import AgendaItem
     from voteit.core.models.meeting import Meeting
     from voteit.core.models.proposal import Proposal
     root = bootstrap_and_fixture(self.config)
     root['users']['admin'].set_field_value('email', '*****@*****.**')
     root['m'] = meeting = Meeting()
     meeting['ai'] = ai = AgendaItem()
     return ai
Ejemplo n.º 29
0
 def test_resolve_catalog_docid(self):
     register_catalog(self.config)
     self.config.testing_securitypolicy('admin', permissive=True)
     root = bootstrap_and_fixture(self.config)
     from voteit.core.models.meeting import Meeting
     root['m'] = Meeting(title='Hello world')
     request = testing.DummyRequest()
     obj = self._cut(root, request)
     docid = root.catalog.search(title='Hello world')[1][0]
     self.assertEqual(obj.resolve_catalog_docid(docid), root['m'])
Ejemplo n.º 30
0
 def test_get_metadata_for_query(self):
     register_catalog(self.config)
     self.config.testing_securitypolicy('admin', permissive=True)
     root = bootstrap_and_fixture(self.config)
     from voteit.core.models.meeting import Meeting
     root['m'] = Meeting(title='Hello world')
     request = testing.DummyRequest()
     obj = self._cut(root, request)
     brain = obj.get_metadata_for_query(title='Hello world')[0]
     self.assertEqual(brain['title'], 'Hello world')