예제 #1
0
    def _test_command(self, command, datafile=DATA_FILE, electiondate=None):
        """
        Execute an `elex` sub-command; returns fieldnames and rows
        """
        stdout_backup = sys.stdout
        sys.stdout = StringIO()

        argv = [command]

        if electiondate is not None:
            argv.append(electiondate)

        argv = argv + ['--data-file', datafile]

        app = ElexApp(argv=argv)

        app.setup()
        app.log.set_level('FATAL')
        app.run()

        lines = sys.stdout.getvalue().split('\n')
        reader = csv.DictReader(lines)

        sys.stdout.close()
        sys.stdout = stdout_backup

        return reader.fieldnames, list(reader)
예제 #2
0
파일: test_cli.py 프로젝트: ryanpitts/elex
    def _test_command(
        self,
        command,
        datafile=DATA_FILE,
        delsum_datafile=DELSUM_DATA_FILE,
        delsuper_datafile=DELSUPER_DATA_FILE,
        electiondate=DATA_ELECTION_DATE
    ):
        """
        Execute an `elex` sub-command; returns fieldnames and rows
        """
        stdout_backup = sys.stdout
        sys.stdout = StringIO()

        argv = [command]

        argv.append(electiondate)

        argv = argv + ['--data-file', datafile, '-o', 'json']
        argv = argv + ['--delegate-sum-file', delsum_datafile]
        argv = argv + ['--delegate-super-file', delsuper_datafile]

        app = ElexApp(argv=argv)

        app.setup()
        app.log.set_level('FATAL')
        app.run()

        json_data = sys.stdout.getvalue()
        data = json.loads(json_data, object_pairs_hook=OrderedDict)

        sys.stdout.close()
        sys.stdout = stdout_backup

        return list(data[0].keys()), data
예제 #3
0
    def _test_command(self, command, datafile=DATA_FILE, electiondate=None):
        """
        Execute an `elex` sub-command; returns fieldnames and rows
        """
        stdout_backup = sys.stdout
        sys.stdout = StringIO()

        argv = [command]

        if electiondate is not None:
            argv.append(electiondate)

        argv = argv + ['--data-file', datafile, '-o', 'json']

        app = ElexApp(argv=argv)

        app.setup()
        app.log.set_level('FATAL')
        app.run()

        json_data = sys.stdout.getvalue()
        data = json.loads(json_data, object_pairs_hook=OrderedDict)

        sys.stdout.close()
        sys.stdout = stdout_backup

        return data[0].keys(), data
예제 #4
0
 def test_elex_cache_hit_exit_code(self):
     uncached_app = ElexApp(argv=['results', '2016-02-01', '--quiet'])
     uncached_app.setup()
     uncached_app.run()
     cached_app = ElexApp(argv=['results', '2016-02-01', '--quiet'])
     cached_app.setup()
     cached_app.run()
     self.assertEqual(cached_app.exit_code, 64)
예제 #5
0
    def _test_command(
        self,
        command,
        datafile=DATA_FILE,
        delsum_datafile=DELSUM_DATA_FILE,
        delsuper_datafile=DELSUPER_DATA_FILE,
        electiondate=DATA_ELECTION_DATE,
        resultslevel=None,
        with_timestamp=False,
        batch_name=False
    ):
        """
        Execute an `elex` sub-command; returns fieldnames and rows
        """
        stdout_backup = sys.stdout
        sys.stdout = StringIO()

        argv = [command]

        if electiondate is not None:
            argv.append(electiondate)

        argv = argv + ['--data-file', datafile]
        argv = argv + ['--delegate-sum-file', delsum_datafile]
        argv = argv + ['--delegate-super-file', delsuper_datafile]
        argv = argv + ['--results-level', resultslevel]

        if with_timestamp:
            argv = argv + ['--with-timestamp']

        if batch_name:
            argv = argv + ['--batch-name', batch_name]

        app = ElexApp(argv=argv)

        app.setup()
        app.log.set_level('FATAL')
        app.run()

        lines = sys.stdout.getvalue().split('\n')
        reader = csv.DictReader(lines)

        sys.stdout.close()
        sys.stdout = stdout_backup

        return reader.fieldnames, list(reader)
예제 #6
0
    def _test_command(
        self,
        command,
        datafile=DATA_FILE,
        delsum_datafile=DELSUM_DATA_FILE,
        delsuper_datafile=DELSUPER_DATA_FILE,
        electiondate=DATA_ELECTION_DATE,
        resultslevel=None,
        with_timestamp=False,
        batch_name=False
    ):
        """
        Execute an `elex` sub-command; returns fieldnames and rows
        """
        stdout_backup = sys.stdout
        sys.stdout = StringIO()

        argv = [command]

        argv.append(electiondate)

        argv = argv + ['--data-file', datafile, '-o', 'json']
        argv = argv + ['--delegate-sum-file', delsum_datafile]
        argv = argv + ['--delegate-super-file', delsuper_datafile]
        argv = argv + ['--results-level', resultslevel]

        if with_timestamp:
            argv = argv + ['--with-timestamp']

        if batch_name:
            argv = argv + ['--batch-name', batch_name]

        app = ElexApp(argv=argv)

        app.setup()
        app.log.set_level('FATAL')
        app.run()

        json_data = sys.stdout.getvalue()
        data = json.loads(json_data, object_pairs_hook=OrderedDict)

        sys.stdout.close()
        sys.stdout = stdout_backup

        return list(data[0].keys()), data
예제 #7
0
 def test_elex_cache_hit_exit_code(self):
     uncached_app = ElexApp(argv=['results', '2016-02-01', '--quiet'])
     uncached_app.setup()
     uncached_app.run()
     cached_app = ElexApp(argv=['results', '2016-02-01', '--quiet'])
     cached_app.setup()
     cached_app.run()
     self.assertEqual(cached_app.exit_code, 64)
예제 #8
0
 def test_elex_cache_clear_command_no_cache(self):
     app = ElexApp(argv=['clear-cache', '--quiet'])
     app.setup()
     app.run()
     self.assertEqual(app.exit_code, 65)
예제 #9
0
 def test_elex_cache_clear_command_after_caching(self):
     self.api_request('/elections/2016-02-01')
     app = ElexApp(argv=['clear-cache', '--quiet'])
     app.setup()
     app.run()
     self.assertEqual(app.exit_code, 0)
예제 #10
0
 def test_elex_cache_clear_command_no_cache(self):
     app = ElexApp(argv=['clear-cache'])
     app.setup()
     app.run()
     self.assertEqual(app.exit_code, 64)
예제 #11
0
 def test_elex_cache_clear_command_after_caching(self):
     self.api_request('/elections/2016-02-01')
     app = ElexApp(argv=['clear-cache'])
     app.setup()
     app.run()
     self.assertEqual(app.exit_code, 0)