32 lines
1.3 KiB
Python
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()
|