-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathtest_config_manager.py
More file actions
68 lines (56 loc) · 2.51 KB
/
Copy pathtest_config_manager.py
File metadata and controls
68 lines (56 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""Tests for config_manager module."""
import json
import os
import tempfile
from bigocrpdf.utils.config_manager import ConfigManager
class TestConfigManager:
def _make_manager(self, tmp_dir, initial=None):
path = os.path.join(tmp_dir, "config.json")
if initial:
with open(path, "w") as f:
json.dump(initial, f)
return ConfigManager(config_path=path)
def test_get_default_value(self):
with tempfile.TemporaryDirectory() as d:
cm = self._make_manager(d)
assert cm.get("nonexistent.key", "fallback") == "fallback"
def test_set_and_get(self):
with tempfile.TemporaryDirectory() as d:
cm = self._make_manager(d)
cm.set("ocr.language", "deu", save_immediately=False)
assert cm.get("ocr.language") == "deu"
def test_save_and_reload(self):
with tempfile.TemporaryDirectory() as d:
path = os.path.join(d, "config.json")
cm = ConfigManager(config_path=path)
cm.set("test.key", "value123")
# Reload from disk
cm2 = ConfigManager(config_path=path)
assert cm2.get("test.key") == "value123"
def test_nested_key_path(self):
with tempfile.TemporaryDirectory() as d:
cm = self._make_manager(d)
cm.set("a.b.c", 42, save_immediately=False)
assert cm.get("a.b.c") == 42
def test_default_config_ocr_language_absent(self):
# Language is intentionally omitted from defaults so Settings can
# auto-detect from system locale on first run; see config_manager
# DEFAULT_CONFIG and services.settings._load_language_settings.
with tempfile.TemporaryDirectory() as d:
cm = self._make_manager(d)
assert cm.get("ocr.language") is None
def test_load_existing_config(self):
with tempfile.TemporaryDirectory() as d:
initial = {"ocr": {"language": "jpn"}}
cm = self._make_manager(d, initial=initial)
assert cm.get("ocr.language") == "jpn"
def test_save_returns_true(self):
with tempfile.TemporaryDirectory() as d:
cm = self._make_manager(d)
assert cm.save() is True
def test_set_overwrites_existing(self):
with tempfile.TemporaryDirectory() as d:
cm = self._make_manager(d)
cm.set("ocr.language", "fra", save_immediately=False)
cm.set("ocr.language", "deu", save_immediately=False)
assert cm.get("ocr.language") == "deu"