Prepare public release with MIT license and private user storage
This commit is contained in:
parent
41772b4d1a
commit
eb8932134a
12 changed files with 175 additions and 26 deletions
60
tests/test_paths.py
Normal file
60
tests/test_paths.py
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
from pathlib import Path
|
||||
|
||||
from click.testing import CliRunner
|
||||
|
||||
from ocado_grocy import paths
|
||||
from ocado_grocy.history import main
|
||||
|
||||
|
||||
def isolate(tmp_path, monkeypatch):
|
||||
monkeypatch.chdir(tmp_path)
|
||||
for name, directory in [('XDG_CONFIG_HOME', 'config'), ('XDG_STATE_HOME', 'state'), ('XDG_DATA_HOME', 'data')]:
|
||||
monkeypatch.setenv(name, str(tmp_path / directory))
|
||||
|
||||
|
||||
def test_xdg_paths_and_shared_journal(tmp_path, monkeypatch):
|
||||
isolate(tmp_path, monkeypatch)
|
||||
assert paths.config_file() == tmp_path / 'config/ocado-grocy/config.toml'
|
||||
assert paths.browser_directory() == tmp_path / 'state/ocado-grocy/browser'
|
||||
assert paths.archive_directory() == tmp_path / 'data/ocado-grocy/history'
|
||||
assert paths.journal_file({}, paths.config_file()) == tmp_path / 'state/ocado-grocy/imports.sqlite3'
|
||||
|
||||
|
||||
def test_legacy_installation_keeps_its_journal_and_archive(tmp_path, monkeypatch):
|
||||
isolate(tmp_path, monkeypatch)
|
||||
(tmp_path / 'config.toml').write_text('')
|
||||
assert paths.config_file() == Path('config.toml')
|
||||
assert paths.browser_directory() == Path('.ocado-browser')
|
||||
assert paths.archive_directory() == Path('history')
|
||||
assert paths.journal_file({}, paths.config_file()) == tmp_path / 'imports.sqlite3'
|
||||
|
||||
|
||||
def test_custom_journal_paths(tmp_path, monkeypatch):
|
||||
isolate(tmp_path, monkeypatch)
|
||||
config = tmp_path / 'custom/config.toml'
|
||||
assert paths.journal_file({}, config) == config.parent / 'imports.sqlite3'
|
||||
assert paths.journal_file({'import': {'state_file': 'journal.db'}}, config) == config.parent / 'journal.db'
|
||||
target = tmp_path / 'journal.db'
|
||||
assert paths.journal_file({'import': {'state_file': str(target)}}, config) == target
|
||||
|
||||
|
||||
def test_invalid_xdg_values_use_home(tmp_path, monkeypatch):
|
||||
isolate(tmp_path, monkeypatch)
|
||||
monkeypatch.setattr(Path, 'home', classmethod(lambda cls: tmp_path))
|
||||
monkeypatch.setenv('XDG_CONFIG_HOME', 'relative')
|
||||
monkeypatch.setenv('XDG_STATE_HOME', '')
|
||||
assert paths.config_file() == tmp_path / '.config/ocado-grocy/config.toml'
|
||||
assert paths.state_directory() == tmp_path / '.local/state/ocado-grocy'
|
||||
|
||||
|
||||
def test_cli_defaults_are_resolved_at_invocation(tmp_path, monkeypatch):
|
||||
isolate(tmp_path, monkeypatch)
|
||||
calls = []
|
||||
def download(profile, archive, **kwargs):
|
||||
calls.append((profile, archive))
|
||||
return [], []
|
||||
monkeypatch.setattr('ocado_grocy.history.download_orders', download)
|
||||
result = CliRunner().invoke(main, ['--no-images', '--no-openfoodfacts'])
|
||||
assert result.exit_code == 0, result.output
|
||||
assert calls == [(paths.browser_directory(), paths.archive_directory())]
|
||||
assert not (tmp_path / 'imports.sqlite3').exists()
|
||||
Loading…
Add table
Add a link
Reference in a new issue