import pytest
import omniparse
class TestSupportedMimeTypes:
def test_returns_list(self):
formats = omniparse.supported_mime_types()
assert isinstance(formats, list)
def test_list_not_empty(self):
formats = omniparse.supported_mime_types()
assert len(formats) > 0
def test_list_contains_strings(self):
formats = omniparse.supported_mime_types()
for mime_type in formats:
assert isinstance(mime_type, str)
assert len(mime_type) > 0
def test_contains_common_formats(self):
formats = omniparse.supported_mime_types()
common_formats = [
"text/plain",
"application/json",
"text/csv",
"application/pdf",
]
for fmt in common_formats:
assert fmt in formats, f"{fmt} should be in supported formats"
def test_contains_document_formats(self):
formats = omniparse.supported_mime_types()
assert "application/pdf" in formats
assert "application/vnd.openxmlformats-officedocument.wordprocessingml.document" in formats
def test_contains_image_formats(self):
formats = omniparse.supported_mime_types()
assert "image/png" in formats
assert "image/jpeg" in formats
def test_contains_archive_formats(self):
formats = omniparse.supported_mime_types()
assert "application/zip" in formats
def test_no_duplicates(self):
formats = omniparse.supported_mime_types()
assert len(formats) == len(set(formats))
def test_consistent_results(self):
formats1 = omniparse.supported_mime_types()
formats2 = omniparse.supported_mime_types()
assert formats1 == formats2
class TestIsMimeSupported:
def test_returns_boolean(self):
result = omniparse.is_mime_supported("text/plain")
assert isinstance(result, bool)
def test_supported_format_returns_true(self):
supported_formats = [
"text/plain",
"application/json",
"text/csv",
"application/pdf",
"image/png",
"image/jpeg",
"application/zip",
]
for mime_type in supported_formats:
assert omniparse.is_mime_supported(mime_type) is True
def test_unsupported_format_returns_false(self):
unsupported_formats = [
"application/x-unknown",
"text/x-fake-format",
"application/x-nonexistent",
"image/x-invalid",
]
for mime_type in unsupported_formats:
assert omniparse.is_mime_supported(mime_type) is False
def test_empty_string_returns_false(self):
assert omniparse.is_mime_supported("") is False
def test_invalid_mime_type_returns_false(self):
invalid_types = [
"not-a-mime-type",
"invalid",
"text",
"/plain",
]
for mime_type in invalid_types:
assert omniparse.is_mime_supported(mime_type) is False
def test_case_sensitivity(self):
result_lower = omniparse.is_mime_supported("text/plain")
result_upper = omniparse.is_mime_supported("TEXT/PLAIN")
result_mixed = omniparse.is_mime_supported("Text/Plain")
assert result_lower is True
def test_consistency_with_supported_list(self):
formats = omniparse.supported_mime_types()
for mime_type in formats:
assert omniparse.is_mime_supported(mime_type) is True
def test_multiple_calls_same_result(self):
mime_type = "application/pdf"
result1 = omniparse.is_mime_supported(mime_type)
result2 = omniparse.is_mime_supported(mime_type)
result3 = omniparse.is_mime_supported(mime_type)
assert result1 == result2 == result3
class TestQueryIntegration:
def test_query_before_extraction(self):
if omniparse.is_mime_supported("application/pdf"):
result = omniparse.extract_from_path("test_data/document/sample.pdf")
assert result.mime_type == "application/pdf"
def test_all_supported_formats_extractable(self):
test_files = {
"text/plain": "test_data/text/sample.txt",
"application/json": "test_data/text/sample.json",
"text/csv": "test_data/text/sample.csv",
"application/pdf": "test_data/document/sample.pdf",
"image/png": "test_data/image/sample.png",
"image/jpeg": "test_data/image/sample.jpg",
"application/zip": "test_data/archive/sample.zip",
}
for mime_type, file_path in test_files.items():
if omniparse.is_mime_supported(mime_type):
result = omniparse.extract_from_path(file_path)
assert isinstance(result, omniparse.ExtractionResult)
def test_unsupported_format_extraction_fails(self):
assert omniparse.is_mime_supported("application/x-font-ttf") is False or \
omniparse.is_mime_supported("font/ttf") is False
with pytest.raises((ValueError, IOError)):
omniparse.extract_from_path("test_data/fonts/DejaVuSans.ttf")
class TestQueryEdgeCases:
def test_mime_type_with_parameters(self):
assert omniparse.is_mime_supported("text/plain") is True
def test_similar_mime_types(self):
xml_types = ["application/xml", "text/xml"]
xml_supported = any(omniparse.is_mime_supported(t) for t in xml_types)
assert xml_supported
def test_tar_mime_type_variants(self):
tar_types = ["application/x-tar", "application/tar"]
tar_supported = any(omniparse.is_mime_supported(t) for t in tar_types)
assert tar_supported