"""Tests for DXF processor module""" import pytest import tempfile import os from pathlib import Path from unittest.mock import Mock, patch from src.cad_automation.dxf_processor import DXFProcessor from src.cad_automation.exceptions import DXFProcessingError, FileNotFoundError class TestDXFProcessor: """Test cases for DXFProcessor class""" def test_init_with_valid_file(self): """Test initialization with valid DXF file""" # This would need a test DXF file pass def test_init_with_nonexistent_file(self): """Test initialization with nonexistent file""" with pytest.raises(FileNotFoundError): DXFProcessor("nonexistent.dxf") @patch('ezdxf.readfile') def test_load_file_success(self, mock_readfile): """Test successful file loading""" mock_doc = Mock() mock_msp = Mock() mock_doc.modelspace.return_value = mock_msp mock_readfile.return_value = mock_doc with patch('pathlib.Path.exists', return_value=True): processor = DXFProcessor("test.dxf") processor.load_file() assert processor.doc == mock_doc assert processor.msp == mock_msp mock_readfile.assert_called_once() @patch('ezdxf.readfile') def test_load_file_dxf_error(self, mock_readfile): """Test file loading with DXF error""" mock_readfile.side_effect = Exception("DXF error") with patch('pathlib.Path.exists', return_value=True): processor = DXFProcessor("test.dxf") with pytest.raises(DXFProcessingError): processor.load_file() def test_query_entities_without_msp(self): """Test querying entities without loaded modelspace""" processor = DXFProcessor("test.dxf") with pytest.raises(DXFProcessingError): processor.query_entities("LINE") def test_add_line_without_msp(self): """Test adding line without loaded modelspace""" processor = DXFProcessor("test.dxf") with pytest.raises(DXFProcessingError): processor.add_line((0, 0), (10, 10)) def test_add_text_without_msp(self): """Test adding text without loaded modelspace""" processor = DXFProcessor("test.dxf") with pytest.raises(DXFProcessingError): processor.add_text("test", (0, 0)) @patch('pathlib.Path.mkdir') def test_save_file_success(self, mock_mkdir): """Test successful file saving""" mock_doc = Mock() processor = DXFProcessor("test.dxf") processor.doc = mock_doc with patch('builtins.open', create=True): processor.save_file("output.dxf") mock_doc.saveas.assert_called_once_with("output.dxf") def test_save_file_without_doc(self): """Test saving file without loaded document""" processor = DXFProcessor("test.dxf") with pytest.raises(DXFProcessingError): processor.save_file("output.dxf")