def test_voter_submission_stats__submissions(self):
        from nuorisovaalit.models import School
        from nuorisovaalitadmin.models import CSVSubmission
        from nuorisovaalitadmin.models import User
        from nuorisovaalitadmin.views.allianssi import voter_submission_stats

        session = DBSession()
        populate_testing_db()

        eschools = session.query(School)\
                 .join(User)\
                 .filter(User.eparticipation == True)\
                 .all()
        self.assertTrue(len(eschools) > 0)
        school = eschools[0]

        # Check that there is no submission to begin with.
        self.assertEquals(0, session.query(CSVSubmission).count())

        # Add a submission for the school.
        session.add(CSVSubmission({}, school, CSVSubmission.VOTER))
        session.flush()

        school_count = len(eschools)
        school_names_not_submitted = [s.name for s in eschools if s.name != school.name]

        options = voter_submission_stats(DummyRequest())
        options_not_submitted = [s.name for s in options['schools_not_submitted']]
        self.assertEquals(school_count - 1, len(options_not_submitted))
        self.assertEquals(school_names_not_submitted, options_not_submitted)
    def test_voter_submission_stats__no_schools(self):
        from nuorisovaalit.models import School
        from nuorisovaalitadmin.views.allianssi import voter_submission_stats

        session = DBSession()
        # Check that there is no schools.
        self.assertEquals(0, session.query(School).count())

        options = voter_submission_stats(DummyRequest())
        self.assertEquals(u'Äänestäjälista-info', options['title'])
        self.assertEquals(0, options['school_count'])
        self.assertEquals(0, options['school_count_submitted'])
        self.assertEquals('0.00', options['submitted'])
        self.assertEquals([], list(options['schools_not_submitted']))
    def test_voter_submission_stats__no_submissions(self):
        from nuorisovaalit.models import School
        from nuorisovaalitadmin.models import User
        from nuorisovaalitadmin.views.allianssi import voter_submission_stats

        session = DBSession()
        populate_testing_db()

        school_names = session.query(School.name)\
                       .join(User)\
                       .filter(User.eparticipation == True)\
                       .order_by(School.name)\
                       .all()
        self.assertTrue(len(school_names) > 0)

        options = voter_submission_stats(DummyRequest())

        # Check that all schools have not submitted by default.
        self.assertEquals(school_names, [(s.name,) for s in options['schools_not_submitted']])
    def test_voter_submission_stats__submission_with_wrong_kind(self):
        from nuorisovaalit.models import School
        from nuorisovaalitadmin.models import CSVSubmission
        from nuorisovaalitadmin.models import User
        from nuorisovaalitadmin.views.allianssi import voter_submission_stats

        session = DBSession()
        populate_testing_db()

        eschools = session.query(School)\
                 .join(User)\
                 .filter(User.eparticipation == True)\
                 .all()
        self.assertTrue(len(eschools) > 0)
        school = eschools[0]

        # Add a submission for the school.
        session.add(CSVSubmission({}, school, CSVSubmission.RESULT))
        session.flush()

        options = voter_submission_stats(DummyRequest())
        self.assertEquals(len(eschools), len(list(options['schools_not_submitted'])))