def test_select__already_voted(self): from nuorisovaalit.models import Voter from nuorisovaalit.models import VotingLog from nuorisovaalit.views.voting import select from pyramid.url import route_url from webob.exc import HTTPFound session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('vote-finish', '/valmis') session = DBSession() session.add(VotingLog(voter.id)) request = DummyRequest() response = select(request) self.assertTrue(isinstance(response, HTTPFound)) self.assertEquals(route_url('vote-finish', request), response.location)
def test_select__with_candidates(self): from itertools import cycle from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import select session = DBSession() populate_testing_db() voter = session.query(Voter).first() self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('vote', '/aanesta/{number}') options = select(DummyRequest()) for party in options['parties']: self.assertTrue(isinstance(party.pop('positions'), cycle)) party['candidates'] = list(party['candidates']) self.assertEquals({ 'coalitions': [], 'columns': 3, 'district': u'Ahvenanmaan maakunnan vaalipiiri', 'empty_vote_url': 'http://example.com/aanesta/0', 'parties': [{ 'candidates': [[{'name': u'Turhapuro, Uuno', 'number': 1, 'url': 'http://example.com/aanesta/1'}]], 'title': u'Köyhien asialla' }, { 'candidates': [[{'name': u'Hartikainen, Härski', 'number': 2, 'url': 'http://example.com/aanesta/2'}]], 'title': u'Piraattipuolue' }, { 'candidates': [[{'name': u'Sörsselssön, Sami', 'number': 3, 'url': 'http://example.com/aanesta/3'}]], 'title': u'Suomen työväenpuolue'} ] }, options)
def test_select_party_grouping_with_coalitions(self): from datetime import datetime from itertools import cycle from nuorisovaalit.models import Candidate from nuorisovaalit.models import Coalition from nuorisovaalit.models import District from nuorisovaalit.models import Party from nuorisovaalit.models import School from nuorisovaalit.models import Voter from nuorisovaalit.views.voting import select session = DBSession() # Populate the db. district = District(u'Distrïct', 1) session.add(district) session.flush() school = School(u'Schööl', district) session.add(school) session.flush() voter = Voter(u'http://[email protected]', u'test', u'user', datetime(2011, 1, 1), gsm=None, email=None, address=None, school_or_id=school) session.add(voter) session.flush() party1 = Party(u'Först party') party2 = Party(u'Secönd party') session.add(party1) session.add(party2) session.flush() coalition = Coalition(u'Red coalition', district) coalition.parties.append(party1) coalition.parties.append(party2) session.add(coalition) party1.candidates.append(Candidate(2, u'Mätti2', u'Meikäläinen', datetime(2011, 1, 1), u'', u'', party1, district)) party1.candidates.append(Candidate(3, u'Mätti3', u'Meikäläinen', datetime(2011, 1, 1), u'', u'', party1, district)) party1.candidates.append(Candidate(4, u'Mätti4', u'Meikäläinen', datetime(2011, 1, 1), u'', u'', party1, district)) party1.candidates.append(Candidate(5, u'Mätti5', u'Meikäläinen', datetime(2011, 1, 1), u'', u'', party1, district)) party2.candidates.append(Candidate(2, u'Mäijä2', u'Meikäläinen', datetime(2011, 1, 1), u'', u'', party2, district)) session.flush() self.config.testing_securitypolicy(userid=voter.openid) self.config.add_route('vote', '/aanesta/{number}') options = select(DummyRequest()) # Remove the cycle generators and serialize the candidate generators # for easiear comparison. for party in options['parties']: self.assertTrue(isinstance(party.pop('positions'), cycle)) party['candidates'] = list(party['candidates']) self.assertEquals(options, { 'empty_vote_url': 'http://example.com/aanesta/0', 'district': u'Distrïct', 'coalitions': [u'Först party, Secönd party'], 'columns': 3, 'parties': [ {'candidates': [ [{'url': 'http://example.com/aanesta/2', 'number': 2, 'name': u'Meikäläinen, Mätti2'}, {'url': 'http://example.com/aanesta/3', 'number': 3, 'name': u'Meikäläinen, Mätti3'}], [{'url': 'http://example.com/aanesta/4', 'number': 4, 'name': u'Meikäläinen, Mätti4'}], [{'url': 'http://example.com/aanesta/5', 'number': 5, 'name': u'Meikäläinen, Mätti5'}]], 'title': u'Först party'}, {'candidates': [ [{'url': 'http://example.com/aanesta/2', 'number': 2, 'name': u'Meikäläinen, Mäijä2'}]], 'title': u'Secönd party'}]})
def test_select__unauthenticated(self): from nuorisovaalit.views.voting import select self.assertRaises(Forbidden, lambda: select(DummyRequest()))