Files
ipars/tests/test_json.py

66 lines
1.4 KiB
Python

import pytest
from ipars import JsonManager
def test_dump_and_load(tmp_path):
jm = JsonManager()
filepath = str(tmp_path / 'data.json')
data = {'name': 'ipars', 'version': 3, 'active': True}
jm.dump(filepath, data)
result = jm.load(filepath)
assert result == data
def test_dump_and_load_list(tmp_path):
jm = JsonManager()
filepath = str(tmp_path / 'list.json')
data = [1, 2, 3, 'hello']
jm.dump(filepath, data)
result = jm.load(filepath)
assert result == data
def test_dump_and_load_with_cyrillic(tmp_path):
jm = JsonManager()
filepath = str(tmp_path / 'cyrillic.json')
data = {'текст': 'привет'}
jm.dump(filepath, data)
result = jm.load(filepath)
assert result == data
def test_load_nonexistent_file():
jm = JsonManager()
with pytest.raises(FileNotFoundError):
jm.load('nonexistent_file_xyz.json')
def test_invalid_encoding_raises():
with pytest.raises(ValueError):
JsonManager(encoding=123)
def test_load_invalid_path_type():
jm = JsonManager()
with pytest.raises(ValueError):
jm.load(123)
def test_dump_invalid_path_type(tmp_path):
jm = JsonManager()
with pytest.raises(ValueError):
jm.dump(123, {'key': 'value'})
def test_pprint_does_not_raise(capsys):
jm = JsonManager()
jm.pprint({'key': 'value'})
captured = capsys.readouterr()
assert 'key' in captured.out