Add tests - part 1
This commit is contained in:
125
tests/conftest.py
Normal file
125
tests/conftest.py
Normal file
@@ -0,0 +1,125 @@
|
||||
"""Pytest configuration and fixtures for i18n-guardian tests."""
|
||||
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def temp_dir():
|
||||
"""Create a temporary directory for tests."""
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
yield Path(tmpdir)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_python_file(temp_dir):
|
||||
"""Create a sample Python file with hardcoded strings."""
|
||||
content = '''
|
||||
def greet(name):
|
||||
return "Hello, " + name
|
||||
|
||||
def farewell():
|
||||
return "Goodbye, world!"
|
||||
|
||||
message = "This is a test message"
|
||||
url = "https://example.com"
|
||||
email = "test@example.com"
|
||||
regex = r"^pattern$"
|
||||
'''
|
||||
file_path = temp_dir / "test.py"
|
||||
file_path.write_text(content, encoding="utf-8")
|
||||
return file_path
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_js_file(temp_dir):
|
||||
"""Create a sample JavaScript file with hardcoded strings."""
|
||||
content = '''
|
||||
function greet(name) {
|
||||
return "Hello, " + name;
|
||||
}
|
||||
|
||||
function farewell() {
|
||||
return "Goodbye, world!";
|
||||
}
|
||||
|
||||
const message = "This is a test message";
|
||||
const url = "https://example.com";
|
||||
const email = "test@example.com";
|
||||
'''
|
||||
file_path = temp_dir / "test.js"
|
||||
file_path.write_text(content, encoding="utf-8")
|
||||
return file_path
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_tsx_file(temp_dir):
|
||||
"""Create a sample TypeScript React file."""
|
||||
content = '''
|
||||
import React from 'react';
|
||||
|
||||
export function Welcome() {
|
||||
return (
|
||||
<div>
|
||||
<h1>Welcome to our app</h1>
|
||||
<p>This is a translated message</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
'''
|
||||
file_path = temp_dir / "Welcome.tsx"
|
||||
file_path.write_text(content, encoding="utf-8")
|
||||
return file_path
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_package_json(temp_dir):
|
||||
"""Create a sample package.json with react-intl."""
|
||||
content = '''
|
||||
{
|
||||
"name": "test-app",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"react-intl": "^5.0.0"
|
||||
}
|
||||
}
|
||||
'''
|
||||
file_path = temp_dir / "package.json"
|
||||
file_path.write_text(content, encoding="utf-8")
|
||||
return file_path
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_locales(temp_dir):
|
||||
"""Create sample locale files."""
|
||||
locales_dir = temp_dir / "locales"
|
||||
locales_dir.mkdir()
|
||||
|
||||
en_json = locales_dir / "en.json"
|
||||
en_json.write_text('{"greeting": "Hello"}', encoding="utf-8")
|
||||
|
||||
de_json = locales_dir / "de.json"
|
||||
de_json.write_text('{"greeting": "Hallo"}', encoding="utf-8")
|
||||
|
||||
return locales_dir
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_config_file(temp_dir):
|
||||
"""Create a sample configuration file."""
|
||||
content = '''
|
||||
i18n_library: react-intl
|
||||
min_string_length: 3
|
||||
key_style: snake_case
|
||||
exclude_patterns:
|
||||
- "**/node_modules/**"
|
||||
- "**/.git/**"
|
||||
i18n_functions:
|
||||
- formatMessage
|
||||
- t
|
||||
'''
|
||||
file_path = temp_dir / ".i18n-guardian.yaml"
|
||||
file_path.write_text(content, encoding="utf-8")
|
||||
return file_path
|
||||
Reference in New Issue
Block a user