80 lines
3.0 KiB
Python
Executable File
80 lines
3.0 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
|
|
from click.testing import CliRunner
|
|
|
|
from camelot.cli import cli
|
|
from camelot.utils import TemporaryDirectory
|
|
|
|
|
|
testdir = os.path.dirname(os.path.abspath(__file__))
|
|
testdir = os.path.join(testdir, 'files')
|
|
|
|
|
|
def test_cli_lattice():
|
|
with TemporaryDirectory() as tempdir:
|
|
infile = os.path.join(testdir, 'foo.pdf')
|
|
outfile = os.path.join(tempdir, 'foo.csv')
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
|
'lattice', infile])
|
|
assert result.exit_code == 0
|
|
assert result.output == 'Found 1 tables\n'
|
|
|
|
result = runner.invoke(cli, ['--format', 'csv',
|
|
'lattice', infile])
|
|
output_error = 'Error: Please specify output file path using --output'
|
|
assert output_error in result.output
|
|
|
|
result = runner.invoke(cli, ['--output', outfile,
|
|
'lattice', infile])
|
|
format_error = 'Please specify output file format using --format'
|
|
assert format_error in result.output
|
|
|
|
|
|
def test_cli_stream():
|
|
with TemporaryDirectory() as tempdir:
|
|
infile = os.path.join(testdir, 'budget.pdf')
|
|
outfile = os.path.join(tempdir, 'budget.csv')
|
|
runner = CliRunner()
|
|
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
|
'stream', infile])
|
|
assert result.exit_code == 0
|
|
assert result.output == 'Found 1 tables\n'
|
|
|
|
result = runner.invoke(cli, ['--format', 'csv', 'stream', infile])
|
|
output_error = 'Error: Please specify output file path using --output'
|
|
assert output_error in result.output
|
|
|
|
result = runner.invoke(cli, ['--output', outfile, 'stream', infile])
|
|
format_error = 'Please specify output file format using --format'
|
|
assert format_error in result.output
|
|
|
|
|
|
def test_cli_output_format():
|
|
with TemporaryDirectory() as tempdir:
|
|
infile = os.path.join(testdir, 'health.pdf')
|
|
outfile = os.path.join(tempdir, 'health.{}')
|
|
runner = CliRunner()
|
|
|
|
# json
|
|
result = runner.invoke(cli, ['--format', 'json', '--output', outfile.format('json'),
|
|
'stream', infile])
|
|
assert result.exit_code == 0
|
|
|
|
# excel
|
|
result = runner.invoke(cli, ['--format', 'excel', '--output', outfile.format('xlsx'),
|
|
'stream', infile])
|
|
assert result.exit_code == 0
|
|
|
|
# html
|
|
result = runner.invoke(cli, ['--format', 'html', '--output', outfile.format('html'),
|
|
'stream', infile])
|
|
assert result.exit_code == 0
|
|
|
|
# zip
|
|
result = runner.invoke(cli, ['--zip', '--format', 'csv', '--output', outfile.format('csv'),
|
|
'stream', infile])
|
|
assert result.exit_code == 0
|