Restore testdata-cli with proper CI/CD and tests
This commit is contained in:
126
tests/test_formatters.py
Normal file
126
tests/test_formatters.py
Normal file
@@ -0,0 +1,126 @@
|
||||
"""Tests for output formatters."""
|
||||
|
||||
import json
|
||||
|
||||
import pytest
|
||||
|
||||
from testdatagen.formatters.json_formatter import JSONFormatter
|
||||
from testdatagen.formatters.csv_formatter import CSVFormatter
|
||||
from testdatagen.formatters.sql_formatter import SQLFormatter
|
||||
|
||||
|
||||
class TestJSONFormatter:
|
||||
"""Tests for JSONFormatter class."""
|
||||
|
||||
def test_format_single_record(self):
|
||||
"""Test formatting a single record."""
|
||||
records = [{"name": "John", "age": 30}]
|
||||
formatter = JSONFormatter()
|
||||
result = formatter.format(records)
|
||||
|
||||
parsed = json.loads(result)
|
||||
assert parsed == {"name": "John", "age": 30}
|
||||
|
||||
def test_format_multiple_records(self):
|
||||
"""Test formatting multiple records."""
|
||||
records = [{"name": "John"}, {"name": "Jane"}]
|
||||
formatter = JSONFormatter()
|
||||
result = formatter.format(records)
|
||||
|
||||
parsed = json.loads(result)
|
||||
assert len(parsed) == 2
|
||||
assert parsed[0]["name"] == "John"
|
||||
assert parsed[1]["name"] == "Jane"
|
||||
|
||||
def test_format_with_indent(self):
|
||||
"""Test formatting with indentation."""
|
||||
records = [{"name": "John"}]
|
||||
formatter = JSONFormatter(indent=2)
|
||||
result = formatter.format(records)
|
||||
|
||||
assert "\n" in result
|
||||
assert " " in result
|
||||
|
||||
def test_format_empty_records(self):
|
||||
"""Test formatting empty records."""
|
||||
formatter = JSONFormatter()
|
||||
result = formatter.format([])
|
||||
|
||||
assert result == "[]"
|
||||
|
||||
def test_format_with_special_characters(self):
|
||||
"""Test formatting with special characters."""
|
||||
records = [{"name": "John \"Jack\" Doe"}]
|
||||
formatter = JSONFormatter()
|
||||
result = formatter.format(records)
|
||||
|
||||
parsed = json.loads(result)
|
||||
assert parsed[0]["name"] == "John \"Jack\" Doe"
|
||||
|
||||
|
||||
class TestCSVFormatter:
|
||||
"""Tests for CSVFormatter class."""
|
||||
|
||||
def test_format_single_record(self):
|
||||
"""Test formatting a single record."""
|
||||
records = [{"name": "John", "age": 30}]
|
||||
formatter = CSVFormatter()
|
||||
result = formatter.format(records)
|
||||
|
||||
lines = result.strip().split("\n")
|
||||
assert len(lines) == 2
|
||||
assert "name" in lines[0]
|
||||
assert "John" in lines[1]
|
||||
|
||||
def test_format_multiple_records(self):
|
||||
"""Test formatting multiple records."""
|
||||
records = [{"name": "John"}, {"name": "Jane"}]
|
||||
formatter = CSVFormatter()
|
||||
result = formatter.format(records)
|
||||
|
||||
lines = result.strip().split("\n")
|
||||
assert len(lines) == 3
|
||||
|
||||
def test_format_empty_records(self):
|
||||
"""Test formatting empty records."""
|
||||
formatter = CSVFormatter()
|
||||
result = formatter.format([])
|
||||
|
||||
assert "name" in result
|
||||
|
||||
|
||||
class TestSQLFormatter:
|
||||
"""Tests for SQLFormatter class."""
|
||||
|
||||
def test_format_single_record(self):
|
||||
"""Test formatting a single record."""
|
||||
records = [{"name": "John", "age": 30}]
|
||||
formatter = SQLFormatter(table_name="users")
|
||||
result = formatter.format(records)
|
||||
|
||||
assert "INSERT" in result
|
||||
assert "users" in result
|
||||
assert "John" in result
|
||||
|
||||
def test_format_multiple_records(self):
|
||||
"""Test formatting multiple records."""
|
||||
records = [{"name": "John"}, {"name": "Jane"}]
|
||||
formatter = SQLFormatter(table_name="users")
|
||||
result = formatter.format(records)
|
||||
|
||||
assert result.count("INSERT") == 2
|
||||
|
||||
def test_format_empty_records(self):
|
||||
"""Test formatting empty records."""
|
||||
formatter = SQLFormatter(table_name="users")
|
||||
result = formatter.format([])
|
||||
|
||||
assert "INSERT" not in result
|
||||
|
||||
def test_custom_table_name(self):
|
||||
"""Test with custom table name."""
|
||||
records = [{"name": "John"}]
|
||||
formatter = SQLFormatter(table_name="custom_table")
|
||||
result = formatter.format(records)
|
||||
|
||||
assert "custom_table" in result
|
||||
Reference in New Issue
Block a user