109 lines
2.9 KiB
Python
109 lines
2.9 KiB
Python
"""Tests for output formatting module."""
|
|
|
|
from cmdparse.formatters import format_csv, format_data, format_json, format_raw, format_yaml
|
|
|
|
|
|
class TestFormatJson:
|
|
def test_format_simple_list(self):
|
|
data = [{'name': 'John', 'age': 30}]
|
|
result = format_json(data)
|
|
assert 'John' in result
|
|
assert '30' in result
|
|
|
|
def test_format_empty_list(self):
|
|
result = format_json([])
|
|
assert result == '[]'
|
|
|
|
def test_pretty_format(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_json(data, pretty=True)
|
|
assert '\n' in result
|
|
|
|
def test_compact_format(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_json(data, pretty=False)
|
|
assert '\n' not in result
|
|
|
|
|
|
class TestFormatYaml:
|
|
def test_format_simple_list(self):
|
|
data = [{'name': 'John', 'age': 30}]
|
|
result = format_yaml(data)
|
|
assert 'John' in result
|
|
assert 'age' in result
|
|
|
|
def test_format_empty_list(self):
|
|
result = format_yaml([])
|
|
assert result == '[]\n'
|
|
|
|
def test_format_nested_structure(self):
|
|
data = [{'user': {'name': 'John', 'tags': ['a', 'b']}}]
|
|
result = format_yaml(data)
|
|
assert 'John' in result
|
|
|
|
|
|
class TestFormatCsv:
|
|
def test_format_simple_list(self):
|
|
data = [{'name': 'John', 'age': 30}]
|
|
result = format_csv(data)
|
|
assert 'name' in result
|
|
assert 'John' in result
|
|
assert 'age' in result
|
|
|
|
def test_format_empty_list(self):
|
|
result = format_csv([])
|
|
assert result == ''
|
|
|
|
def test_format_multiple_rows(self):
|
|
data = [
|
|
{'name': 'John', 'age': 30},
|
|
{'name': 'Jane', 'age': 25}
|
|
]
|
|
result = format_csv(data)
|
|
assert 'John' in result
|
|
assert 'Jane' in result
|
|
|
|
|
|
class TestFormatRaw:
|
|
def test_format_simple_list(self):
|
|
data = [{'name': 'John', 'age': 30}]
|
|
result = format_raw(data)
|
|
assert 'name: John' in result
|
|
assert 'age: 30' in result
|
|
|
|
def test_format_empty_list(self):
|
|
result = format_raw([])
|
|
assert result == ''
|
|
|
|
|
|
class TestFormatData:
|
|
def test_json_format(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_data(data, 'json')
|
|
assert 'John' in result
|
|
|
|
def test_yaml_format(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_data(data, 'yaml')
|
|
assert 'John' in result
|
|
|
|
def test_csv_format(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_data(data, 'csv')
|
|
assert 'name' in result
|
|
|
|
def test_raw_format(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_data(data, 'raw')
|
|
assert 'John' in result
|
|
|
|
def test_default_to_json(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_data(data, '')
|
|
assert 'John' in result
|
|
|
|
def test_unknown_format_defaults_to_json(self):
|
|
data = [{'name': 'John'}]
|
|
result = format_data(data, 'unknown')
|
|
assert 'John' in result
|