mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 19:01:39 -04:00
58 lines
2 KiB
Python
58 lines
2 KiB
Python
from unittest import mock
|
|
|
|
import pytest
|
|
|
|
from modules.map import lib
|
|
|
|
|
|
def test_get_map_paths(test_directory):
|
|
pbf_dir = test_directory / 'map/pbf'
|
|
pbf_dir.mkdir(parents=True)
|
|
|
|
pbf = pbf_dir / 'map.osm.pbf'
|
|
pbf.touch()
|
|
dump = pbf_dir / 'map.dump'
|
|
dump.touch()
|
|
|
|
with mock.patch('modules.map.lib.subprocess.check_output') as mock_check_output:
|
|
mock_check_output.return_value = b'OpenStreetMap Protocolbuffer Binary Format'
|
|
assert lib.get_map_paths() == [pbf, ]
|
|
|
|
with mock.patch('modules.map.lib.subprocess.check_output') as mock_check_output:
|
|
mock_check_output.return_value = b'PostgreSQL custom database dump'
|
|
assert lib.get_map_paths() == [dump, ]
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_import_file(test_directory, mock_create_subprocess_shell):
|
|
"""
|
|
Import map files. Files to import are checked for validity before importing. Any errors returned by
|
|
asyncio.create_subprocess_shell are caught and reported.
|
|
"""
|
|
pbf_file = test_directory / 'foo.osm.pbf'
|
|
with pytest.raises(ValueError):
|
|
await lib.import_file(pbf_file)
|
|
|
|
pbf_file.touch()
|
|
with pytest.raises(ValueError):
|
|
await lib.import_file(pbf_file)
|
|
|
|
with mock.patch('modules.map.lib.asyncio') as mock_asyncio, \
|
|
mock.patch('modules.map.lib.is_pbf_file') as mock_is_pbf_file:
|
|
# Run the import, it succeeds.
|
|
mock_asyncio.create_subprocess_shell = mock_create_subprocess_shell(
|
|
communicate_return=(b'out', b'error')
|
|
)
|
|
mock_is_pbf_file.return_value = True
|
|
await lib.import_file(pbf_file)
|
|
|
|
with mock.patch('modules.map.lib.asyncio') as mock_asyncio, \
|
|
mock.patch('modules.map.lib.is_pbf_file') as mock_is_pbf_file:
|
|
# Run the import, it fails.
|
|
mock_asyncio.create_subprocess_shell = mock_create_subprocess_shell(
|
|
communicate_return=(b'out', b'error'),
|
|
return_code=1,
|
|
)
|
|
mock_is_pbf_file.return_value = True
|
|
with pytest.raises(ValueError):
|
|
await lib.import_file(pbf_file)
|