Remove test files - keeping core functionality only
This commit is contained in:
@@ -1,164 +0,0 @@
|
||||
import os
|
||||
import tempfile
|
||||
from io import StringIO
|
||||
from unittest.mock import patch, Mock
|
||||
from django.test import TestCase, override_settings
|
||||
from django.core.management import call_command
|
||||
from django.core.files.storage import default_storage
|
||||
from django.core.files.base import ContentFile
|
||||
|
||||
|
||||
class ClearDiagramCacheCommandTestCase(TestCase):
|
||||
"""Test cases for clear_diagram_cache management command."""
|
||||
|
||||
@override_settings(MEDIA_ROOT=tempfile.mkdtemp())
|
||||
def test_clear_all_cache(self):
|
||||
"""Test clearing all cached diagrams."""
|
||||
# Create test cache files
|
||||
test_files = [
|
||||
'diagram_cache/plantuml/hash1.svg',
|
||||
'diagram_cache/plantuml/hash2.svg',
|
||||
'diagram_cache/mermaid/hash3.svg',
|
||||
]
|
||||
|
||||
for path in test_files:
|
||||
full_path = default_storage.path(path)
|
||||
os.makedirs(os.path.dirname(full_path), exist_ok=True)
|
||||
default_storage.save(path, ContentFile(b'test diagram'))
|
||||
|
||||
# Verify files exist
|
||||
for path in test_files:
|
||||
self.assertTrue(default_storage.exists(path))
|
||||
|
||||
# Run command
|
||||
out = StringIO()
|
||||
call_command('clear_diagram_cache', stdout=out)
|
||||
|
||||
# Verify files are deleted
|
||||
for path in test_files:
|
||||
self.assertFalse(default_storage.exists(path))
|
||||
|
||||
# Verify success message
|
||||
output = out.getvalue()
|
||||
self.assertIn('Clearing all diagram caches', output)
|
||||
self.assertIn('Cache cleared successfully', output)
|
||||
|
||||
@override_settings(MEDIA_ROOT=tempfile.mkdtemp())
|
||||
def test_clear_cache_by_type(self):
|
||||
"""Test clearing cache for specific diagram type."""
|
||||
# Create test cache files
|
||||
plantuml_files = [
|
||||
'diagram_cache/plantuml/hash1.svg',
|
||||
'diagram_cache/plantuml/hash2.svg',
|
||||
]
|
||||
mermaid_files = [
|
||||
'diagram_cache/mermaid/hash3.svg',
|
||||
]
|
||||
|
||||
for path in plantuml_files + mermaid_files:
|
||||
full_path = default_storage.path(path)
|
||||
os.makedirs(os.path.dirname(full_path), exist_ok=True)
|
||||
default_storage.save(path, ContentFile(b'test diagram'))
|
||||
|
||||
# Run command for plantuml only
|
||||
out = StringIO()
|
||||
call_command('clear_diagram_cache', type='plantuml', stdout=out)
|
||||
|
||||
# Verify only plantuml files are deleted
|
||||
for path in plantuml_files:
|
||||
self.assertFalse(default_storage.exists(path))
|
||||
|
||||
for path in mermaid_files:
|
||||
self.assertTrue(default_storage.exists(path))
|
||||
|
||||
# Verify output message
|
||||
output = out.getvalue()
|
||||
self.assertIn('Clearing cache for plantuml', output)
|
||||
self.assertIn('Cache cleared successfully', output)
|
||||
|
||||
@override_settings(MEDIA_ROOT=tempfile.mkdtemp())
|
||||
def test_clear_empty_cache(self):
|
||||
"""Test clearing cache when no files exist."""
|
||||
# Don't create any files
|
||||
|
||||
# Should not raise error
|
||||
out = StringIO()
|
||||
call_command('clear_diagram_cache', stdout=out)
|
||||
|
||||
# Should still show success
|
||||
output = out.getvalue()
|
||||
self.assertIn('Cache cleared successfully', output)
|
||||
|
||||
@override_settings(MEDIA_ROOT=tempfile.mkdtemp())
|
||||
@patch('diagramm_proxy.diagram_cache.clear_cache')
|
||||
def test_command_calls_clear_cache_function(self, mock_clear):
|
||||
"""Test that command properly calls the clear_cache function."""
|
||||
# Call without type
|
||||
call_command('clear_diagram_cache')
|
||||
mock_clear.assert_called_once_with(None)
|
||||
|
||||
# Call with type
|
||||
mock_clear.reset_mock()
|
||||
call_command('clear_diagram_cache', type='plantuml')
|
||||
mock_clear.assert_called_once_with('plantuml')
|
||||
|
||||
def test_command_help_text(self):
|
||||
"""Test that command has proper help text."""
|
||||
out = StringIO()
|
||||
call_command('clear_diagram_cache', '--help', stdout=out)
|
||||
output = out.getvalue()
|
||||
|
||||
self.assertIn('Clear cached diagrams', output)
|
||||
self.assertIn('--type', output)
|
||||
|
||||
|
||||
class ManagementCommandIntegrationTestCase(TestCase):
|
||||
"""Integration tests for management command with real filesystem."""
|
||||
|
||||
@override_settings(MEDIA_ROOT=tempfile.mkdtemp())
|
||||
def test_full_command_workflow(self):
|
||||
"""Test complete workflow: create cache, clear specific type, clear all."""
|
||||
# Create mixed cache files
|
||||
files = {
|
||||
'plantuml': [
|
||||
'diagram_cache/plantuml/abc123.svg',
|
||||
'diagram_cache/plantuml/def456.svg',
|
||||
],
|
||||
'mermaid': [
|
||||
'diagram_cache/mermaid/ghi789.svg',
|
||||
],
|
||||
'graphviz': [
|
||||
'diagram_cache/graphviz/jkl012.svg',
|
||||
]
|
||||
}
|
||||
|
||||
# Create all files
|
||||
for file_list in files.values():
|
||||
for path in file_list:
|
||||
full_path = default_storage.path(path)
|
||||
os.makedirs(os.path.dirname(full_path), exist_ok=True)
|
||||
default_storage.save(path, ContentFile(b'diagram content'))
|
||||
|
||||
# Verify all exist
|
||||
for file_list in files.values():
|
||||
for path in file_list:
|
||||
self.assertTrue(default_storage.exists(path))
|
||||
|
||||
# Clear plantuml
|
||||
call_command('clear_diagram_cache', type='plantuml')
|
||||
|
||||
# Verify plantuml deleted, others remain
|
||||
for path in files['plantuml']:
|
||||
self.assertFalse(default_storage.exists(path))
|
||||
for path in files['mermaid']:
|
||||
self.assertTrue(default_storage.exists(path))
|
||||
for path in files['graphviz']:
|
||||
self.assertTrue(default_storage.exists(path))
|
||||
|
||||
# Clear all remaining
|
||||
call_command('clear_diagram_cache')
|
||||
|
||||
# Verify all deleted
|
||||
for file_list in files.values():
|
||||
for path in file_list:
|
||||
self.assertFalse(default_storage.exists(path))
|
||||
Reference in New Issue
Block a user