ModelHandle/tools/step_service/tests/test_freecad_worker.py

32 lines
1.3 KiB
Python

import subprocess
import tempfile
import unittest
from unittest import mock
from tools.step_service.freecad_worker import FreeCADWorker
class FreeCADWorkerTests(unittest.TestCase):
@mock.patch("tools.step_service.freecad_worker.subprocess.run")
def test_passes_script_arguments_through_freecad(self, run_mock):
run_mock.return_value = subprocess.CompletedProcess(args=[], returncode=0, stdout="", stderr="")
worker = FreeCADWorker(freecad_cmd="FreeCADCmd")
with tempfile.TemporaryDirectory() as temp_dir:
with mock.patch("tools.step_service.freecad_worker.tempfile.TemporaryDirectory") as temp_dir_mock:
temp_dir_mock.return_value.__enter__.return_value = temp_dir
temp_dir_mock.return_value.__exit__.return_value = False
with mock.patch("pathlib.Path.read_bytes", return_value=b"STEPDATA"):
with mock.patch("pathlib.Path.exists", return_value=True):
output_bytes, output_name = worker.trim_step_file("demo.step", b"INPUT", ["0/1"])
self.assertEqual(output_bytes, b"STEPDATA")
self.assertEqual(output_name, "demo-edited.step")
command = run_mock.call_args.args[0]
self.assertIn("--pass", command)
if __name__ == "__main__":
unittest.main()