135
tests/conftest.py
Normal file
135
tests/conftest.py
Normal file
@@ -0,0 +1,135 @@
|
||||
"""Pytest configuration and fixtures."""
|
||||
import json
|
||||
|
||||
import pytest
|
||||
|
||||
from i18n_key_sync.locale import LocaleParser
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_python_code():
|
||||
"""Sample Python code with i18n keys."""
|
||||
return '''
|
||||
from gettext import gettext as _
|
||||
|
||||
def greet(name):
|
||||
return _("hello") + " " + name
|
||||
|
||||
def farewell():
|
||||
return _("goodbye")
|
||||
|
||||
messages = {
|
||||
"welcome": _("welcome_message"),
|
||||
"login": t("login_button"),
|
||||
}
|
||||
|
||||
|
||||
# Inline usage
|
||||
print(_("save"))
|
||||
print(_("cancel"))
|
||||
'''
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_js_code():
|
||||
"""Sample JavaScript code with i18n keys."""
|
||||
return '''
|
||||
import { t } from './i18n';
|
||||
|
||||
const message = _("hello_world");
|
||||
const greeting = t("greeting");
|
||||
|
||||
function showWelcome() {
|
||||
return i18n.t("welcome_message");
|
||||
}
|
||||
|
||||
// Template usage
|
||||
const text = `Hello ${name}, ${_("welcome_message")}`;
|
||||
|
||||
// JSX usage
|
||||
return <div>{_("submit")}</div>;
|
||||
'''
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_locale_json():
|
||||
"""Sample JSON locale file."""
|
||||
return {
|
||||
"hello": "Hello",
|
||||
"goodbye": "Goodbye",
|
||||
"welcome_message": "Welcome!",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"unused_key": "This key is not used",
|
||||
}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_locale_yaml():
|
||||
"""Sample YAML locale file."""
|
||||
return {
|
||||
"hello": "Hello",
|
||||
"goodbye": "Goodbye",
|
||||
"welcome_message": "Welcome!",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"unused_key": "This key is not used",
|
||||
"nested": {
|
||||
"key": "Nested value",
|
||||
"deep": {
|
||||
"key": "Deep nested value",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def temp_locale_dir(tmp_path, sample_locale_json):
|
||||
"""Create a temporary locale directory with sample files."""
|
||||
locale_dir = tmp_path / "locales"
|
||||
locale_dir.mkdir()
|
||||
|
||||
en_file = locale_dir / "en.json"
|
||||
en_file.write_text(json.dumps(sample_locale_json, indent=2))
|
||||
|
||||
es_file = locale_dir / "es.json"
|
||||
es_data = sample_locale_json.copy()
|
||||
es_data["hello"] = "Hola"
|
||||
es_file.write_text(json.dumps(es_data, indent=2))
|
||||
|
||||
return locale_dir
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def temp_locale_dir_yaml(tmp_path, sample_locale_yaml):
|
||||
"""Create a temporary locale directory with YAML files."""
|
||||
import yaml
|
||||
|
||||
locale_dir = tmp_path / "locales_yaml"
|
||||
locale_dir.mkdir()
|
||||
|
||||
en_file = locale_dir / "en.yaml"
|
||||
en_file.write_text(yaml.dump(sample_locale_yaml, default_flow_style=False))
|
||||
|
||||
return locale_dir
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def locale_parser():
|
||||
"""Create a LocaleParser instance."""
|
||||
return LocaleParser()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def temp_project_dir(tmp_path, sample_python_code, sample_js_code, temp_locale_dir):
|
||||
"""Create a temporary project directory with code and locales."""
|
||||
src_dir = tmp_path / "src"
|
||||
src_dir.mkdir()
|
||||
|
||||
python_file = src_dir / "main.py"
|
||||
python_file.write_text(sample_python_code)
|
||||
|
||||
js_file = src_dir / "app.js"
|
||||
js_file.write_text(sample_js_code)
|
||||
|
||||
return tmp_path
|
||||
Reference in New Issue
Block a user